changes
This commit is contained in:
@@ -7,8 +7,11 @@
|
||||
package org.solovyev.android.calculator;
|
||||
|
||||
import jscl.JsclMathEngine;
|
||||
import jscl.MathEngine;
|
||||
import jscl.NumeralBase;
|
||||
import junit.framework.Assert;
|
||||
import org.junit.Test;
|
||||
import org.solovyev.android.calculator.model.CalculatorEngine;
|
||||
import org.solovyev.android.calculator.model.TextProcessor;
|
||||
|
||||
import java.util.Date;
|
||||
@@ -23,7 +26,7 @@ public class TextHighlighterTest {
|
||||
|
||||
@Test
|
||||
public void testProcess() throws Exception {
|
||||
TextProcessor textHighlighter = new TextHighlighter(0, true, JsclMathEngine.instance);
|
||||
TextProcessor<?, String> textHighlighter = new TextHighlighter(0, true, JsclMathEngine.instance);
|
||||
|
||||
final Random random = new Random(new Date().getTime());
|
||||
for (int i = 0; i < 1000; i++) {
|
||||
@@ -48,7 +51,7 @@ public class TextHighlighterTest {
|
||||
textHighlighter = new TextHighlighter(0, false, JsclMathEngine.instance);
|
||||
Assert.assertEquals("0.1E3", textHighlighter.process("0.1E3").toString());
|
||||
Assert.assertEquals("1E3", textHighlighter.process("1E3").toString());
|
||||
Assert.assertEquals("2<font color=\"#008000\">0x:</font>", textHighlighter.process("20x:").toString());
|
||||
Assert.assertEquals("2<b>0x:</b>", textHighlighter.process("20x:").toString());
|
||||
Assert.assertEquals("20x", textHighlighter.process("20x").toString());
|
||||
Assert.assertEquals("22x", textHighlighter.process("22x").toString());
|
||||
Assert.assertEquals("20t", textHighlighter.process("20t").toString());
|
||||
@@ -73,5 +76,55 @@ public class TextHighlighterTest {
|
||||
Assert.assertEquals("<font color=\"#000000\"><i>sin</i>(</font><font color=\"#ffff9a\">2</font><font color=\"#000000\">)</font>", textHighlighter.process("sin(2)").toString());
|
||||
Assert.assertEquals("<font color=\"#000000\"><i>atanh</i>(</font><font color=\"#ffff9a\">2</font><font color=\"#000000\">)</font>", textHighlighter.process("atanh(2)").toString());
|
||||
|
||||
|
||||
Assert.assertEquals("<b>0x:</b>E", textHighlighter.process("0x:E").toString());
|
||||
Assert.assertEquals("<b>0x:</b>6F", textHighlighter.process("0x:6F").toString());
|
||||
Assert.assertEquals("<b>0x:</b>6F", textHighlighter.process("0x:6F.").toString());
|
||||
Assert.assertEquals("<b>0x:</b>6F", textHighlighter.process("0x:6F.2").toString());
|
||||
Assert.assertEquals("<b>0x:</b>6F", textHighlighter.process("0x:6F.B").toString());
|
||||
Assert.assertEquals("<b>0x:</b>6F", textHighlighter.process("0x:006F.B").toString());
|
||||
Assert.assertEquals("<b>0x:</b>0", textHighlighter.process("0x:0").toString());
|
||||
Assert.assertEquals("<b>0x:</b>FF33233FFE", textHighlighter.process("0x:FF33233FFE").toString());
|
||||
Assert.assertEquals("<b>0x:</b>FF33233FFE", textHighlighter.process("0x:FF33 233 FFE").toString());
|
||||
|
||||
final MathEngine me = CalculatorEngine.instance.getEngine();
|
||||
try {
|
||||
me.setNumeralBase(NumeralBase.hex);
|
||||
Assert.assertEquals("E", textHighlighter.process("E").toString());
|
||||
Assert.assertEquals(".E", textHighlighter.process(".E").toString());
|
||||
Assert.assertEquals("E", textHighlighter.process("E.").toString());
|
||||
Assert.assertEquals(".E.", textHighlighter.process(".E.").toString());
|
||||
Assert.assertEquals("6F", textHighlighter.process("6F").toString());
|
||||
Assert.assertEquals("6F", textHighlighter.process("6F").toString());
|
||||
Assert.assertEquals("6F", textHighlighter.process("6F.").toString());
|
||||
Assert.assertEquals("6F", textHighlighter.process("6F.2").toString());
|
||||
Assert.assertEquals("6F", textHighlighter.process("6F.B").toString());
|
||||
Assert.assertEquals("6F", textHighlighter.process("006F.B").toString());
|
||||
} finally {
|
||||
me.setNumeralBase(NumeralBase.dec);
|
||||
}
|
||||
|
||||
Assert.assertEquals("<b>0b:</b>110101", textHighlighter.process("0b:110101").toString());
|
||||
Assert.assertEquals("<b>0b:</b>110101", textHighlighter.process("0b:110101.").toString());
|
||||
Assert.assertEquals("<b>0b:</b>110101", textHighlighter.process("0b:110101.101").toString());
|
||||
Assert.assertEquals("<b>0b:</b>11010100", textHighlighter.process("0b:11010100.1").toString());
|
||||
Assert.assertEquals("<b>0b:</b>110101", textHighlighter.process("0b:110101.0").toString());
|
||||
Assert.assertEquals("<b>0b:</b>0", textHighlighter.process("0b:0").toString());
|
||||
Assert.assertEquals("<b>0b:</b>1010100101111010101001", textHighlighter.process("0b:1010100101111010101001").toString());
|
||||
Assert.assertEquals("<b>0b:</b>1010100101111010101001", textHighlighter.process("0b:101 010 01 0 111 1 0 10101001").toString());
|
||||
|
||||
try {
|
||||
me.setNumeralBase(NumeralBase.bin);
|
||||
Assert.assertEquals("110101", textHighlighter.process("110101").toString());
|
||||
Assert.assertEquals("110101", textHighlighter.process("110101.").toString());
|
||||
Assert.assertEquals("110101", textHighlighter.process("110101.101").toString());
|
||||
Assert.assertEquals("11010100", textHighlighter.process("11010100.1").toString());
|
||||
Assert.assertEquals("110101", textHighlighter.process("110101.0").toString());
|
||||
Assert.assertEquals("0", textHighlighter.process("0").toString());
|
||||
Assert.assertEquals("1010100101111010101001", textHighlighter.process("1010100101111010101001").toString());
|
||||
Assert.assertEquals("1010100101111010101001", textHighlighter.process("101 010 01 0 111 1 0 10101001").toString());
|
||||
} finally {
|
||||
me.setNumeralBase(NumeralBase.dec);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -367,12 +367,12 @@ public class CalculatorEngineTest {
|
||||
public void testNumeralSystems() throws Exception {
|
||||
final CalculatorEngine cm = CalculatorEngine.instance;
|
||||
|
||||
Assert.assertEquals("11 259 375", cm.evaluate(JsclOperation.numeric, "0x:abcdef").getResult());
|
||||
Assert.assertEquals("30 606 154.462", cm.evaluate(JsclOperation.numeric, "0x:abcdef*e").getResult());
|
||||
Assert.assertEquals("30 606 154.462", cm.evaluate(JsclOperation.numeric, "e*0x:abcdef").getResult());
|
||||
Assert.assertEquals("2.718", cm.evaluate(JsclOperation.numeric, "e*0x:abcdef/0x:abcdef").getResult());
|
||||
Assert.assertEquals("30 606 154.462", cm.evaluate(JsclOperation.numeric, "0x:abcdef*e*0x:abcdef/0x:abcdef").getResult());
|
||||
Assert.assertEquals("30 606 154.462", cm.evaluate(JsclOperation.numeric, "c+0x:abcdef*e*0x:abcdef/0x:abcdef-c+0x:c-0x:c").getResult());
|
||||
Assert.assertEquals("11 259 375", cm.evaluate(JsclOperation.numeric, "0x:ABCDEF").getResult());
|
||||
Assert.assertEquals("30 606 154.462", cm.evaluate(JsclOperation.numeric, "0x:ABCDEF*e").getResult());
|
||||
Assert.assertEquals("30 606 154.462", cm.evaluate(JsclOperation.numeric, "e*0x:ABCDEF").getResult());
|
||||
Assert.assertEquals("2.718", cm.evaluate(JsclOperation.numeric, "e*0x:ABCDEF/0x:ABCDEF").getResult());
|
||||
Assert.assertEquals("30 606 154.462", cm.evaluate(JsclOperation.numeric, "0x:ABCDEF*e*0x:ABCDEF/0x:ABCDEF").getResult());
|
||||
Assert.assertEquals("30 606 154.462", cm.evaluate(JsclOperation.numeric, "c+0x:ABCDEF*e*0x:ABCDEF/0x:ABCDEF-c+0x:C-0x:C").getResult());
|
||||
Assert.assertEquals("1 446 257 064 651.832", cm.evaluate(JsclOperation.numeric, "28*28 * sin(28) - 0b:1101 + √(28) + exp ( 28) ").getResult());
|
||||
Assert.assertEquals("13", cm.evaluate(JsclOperation.numeric, "0b:1101").getResult());
|
||||
|
||||
@@ -388,7 +388,8 @@ public class CalculatorEngineTest {
|
||||
}
|
||||
|
||||
cm.getEngine().setNumeralBase(NumeralBase.hex);
|
||||
Assert.assertEquals("637b", cm.evaluate(JsclOperation.numeric, "56ce+cad").getResult());
|
||||
Assert.assertEquals("637B", cm.evaluate(JsclOperation.numeric, "56CE+CAD").getResult());
|
||||
Assert.assertEquals("E", cm.evaluate(JsclOperation.numeric, "E").getResult());
|
||||
} finally {
|
||||
cm.setNumeralBase(defaultNumeralBase);
|
||||
}
|
||||
|
@@ -66,7 +66,7 @@ public class FromJsclSimplifyTextProcessorTest {
|
||||
Assert.assertEquals("20x", tp.process("20x"));
|
||||
Assert.assertEquals("2×0x3", tp.process("2*0x3"));
|
||||
Assert.assertEquals("2×0x:3", tp.process("2*0x:3"));
|
||||
Assert.assertEquals("0x:3 000 000", tp.process("0x:3 000 000.00000000000001"));
|
||||
Assert.assertEquals("0x:3000000", tp.process("0x:3 000 000.00000000000001"));
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -49,9 +49,9 @@ public class NumeralBaseTest {
|
||||
testExpression(line, new Expression2());
|
||||
testExpression(line, new Expression3());
|
||||
|
||||
final String dec = line[0];
|
||||
final String hex = "0x:" + line[1];
|
||||
final String bin = "0b:" + line[2];
|
||||
final String dec = line[0].toUpperCase();
|
||||
final String hex = "0x:" + line[1].toUpperCase();
|
||||
final String bin = "0b:" + line[2].toUpperCase();
|
||||
|
||||
final List<String> input = new ArrayList<String>();
|
||||
input.add(dec);
|
||||
@@ -93,9 +93,9 @@ public class NumeralBaseTest {
|
||||
}
|
||||
|
||||
public static void testExpression(@NotNull String[] line, @NotNull Converter<String, String> converter) throws ParseException, CalculatorEvalException, CalculatorParseException {
|
||||
final String dec = line[0];
|
||||
final String hex = "0x:" + line[1];
|
||||
final String bin = "0b:" + line[2];
|
||||
final String dec = line[0].toUpperCase();
|
||||
final String hex = "0x:" + line[1].toUpperCase();
|
||||
final String bin = "0b:" + line[2].toUpperCase();
|
||||
|
||||
final String decExpression = converter.convert(dec);
|
||||
final String decResult = CalculatorEngine.instance.evaluate(JsclOperation.numeric, decExpression).getResult();
|
||||
|
@@ -62,18 +62,24 @@ public class ToJsclTextProcessorTest {
|
||||
Assert.assertEquals( "E(-1.2)", preprocessor.process("E(-1.2)").toString());
|
||||
Assert.assertEquals( "EE", preprocessor.process("EE").toString());
|
||||
|
||||
Assert.assertEquals( "0x:abcdef", preprocessor.process("0x:abcdef").toString());
|
||||
Assert.assertEquals( "0x:abcdef", preprocessor.process("0x:a bc def").toString());
|
||||
Assert.assertEquals( "0x:abcdef", preprocessor.process("0x:a bc def").toString());
|
||||
Assert.assertEquals( "0x:abcdef*0*x", preprocessor.process("0x:a bc def*0x").toString());
|
||||
Assert.assertEquals( "0x:abcdef001*0*x", preprocessor.process("0x:a bc def001*0x").toString());
|
||||
Assert.assertEquals( "0x:abcdef001*0*c", preprocessor.process("0x:a bc def001*0c").toString());
|
||||
Assert.assertEquals( "0x:abcdef001*c", preprocessor.process("0x:a bc def001*c").toString());
|
||||
try {
|
||||
CalculatorEngine.instance.getEngine().setNumeralBase(NumeralBase.hex);
|
||||
Assert.assertEquals( "22F*exp(F)", preprocessor.process("22Fexp(F)").toString());
|
||||
} finally {
|
||||
CalculatorEngine.instance.getEngine().setNumeralBase(NumeralBase.dec);
|
||||
}
|
||||
Assert.assertEquals( "0x:ABCDEF", preprocessor.process("0x:ABCDEF").toString());
|
||||
Assert.assertEquals( "0x:ABCDEF", preprocessor.process("0x:A BC DEF").toString());
|
||||
Assert.assertEquals( "0x:ABCDEF", preprocessor.process("0x:A BC DEF").toString());
|
||||
Assert.assertEquals( "0x:ABCDEF*0*x", preprocessor.process("0x:A BC DEF*0x").toString());
|
||||
Assert.assertEquals( "0x:ABCDEF001*0*x", preprocessor.process("0x:A BC DEF001*0x").toString());
|
||||
Assert.assertEquals( "0x:ABCDEF001*0*c", preprocessor.process("0x:A BC DEF001*0c").toString());
|
||||
Assert.assertEquals( "0x:ABCDEF001*c", preprocessor.process("0x:A BC DEF001*c").toString());
|
||||
Assert.assertEquals( "0b:1101", preprocessor.process("0b:1101").toString());
|
||||
Assert.assertEquals( "0x:1c", preprocessor.process("0x:1c").toString());
|
||||
Assert.assertEquals( "0x:1c", preprocessor.process(" 0x:1c").toString());
|
||||
Assert.assertEquals( "0x:1c*0x:1c*sin(0x:1c)-0b:1101+√(0x:1c)+exp(0x:1c)", preprocessor.process("0x:1c*0x:1c * sin(0x:1c) - 0b:1101 + √(0x:1c) + exp ( 0x:1c)").toString());
|
||||
Assert.assertEquals( "0x:1c*0x:1c*sin(0x:1c)-0b:1101+√(0x:1c)+exp(0x:1c)", preprocessor.process("0x:1c*0x:1c * sin(0x:1c) - 0b:1101 + √(0x:1c) + exp ( 0x:1c)").toString());
|
||||
Assert.assertEquals( "0x:1C", preprocessor.process("0x:1C").toString());
|
||||
Assert.assertEquals( "0x:1C", preprocessor.process(" 0x:1C").toString());
|
||||
Assert.assertEquals( "0x:1C*0x:1C*sin(0x:1C)-0b:1101+√(0x:1C)+exp(0x:1C)", preprocessor.process("0x:1C*0x:1C * sin(0x:1C) - 0b:1101 + √(0x:1C) + exp ( 0x:1C)").toString());
|
||||
Assert.assertEquals( "0x:1C*0x:1C*sin(0x:1C)-0b:1101+√(0x:1C)+exp(0x:1C)", preprocessor.process("0x:1C*0x:1C * sin(0x:1C) - 0b:1101 + √(0x:1C) + exp ( 0x:1C)").toString());
|
||||
|
||||
try {
|
||||
preprocessor.process("ln()");
|
||||
@@ -147,7 +153,7 @@ public class ToJsclTextProcessorTest {
|
||||
Assert.assertEquals("101", JsclMathEngine.instance.evaluate("10+11"));
|
||||
|
||||
JsclMathEngine.instance.setNumeralBase(NumeralBase.hex);
|
||||
Assert.assertEquals("56ce+cad", processor.process("56ce+cad").getExpression());
|
||||
Assert.assertEquals("56CE+CAD", processor.process("56CE+CAD").getExpression());
|
||||
} finally {
|
||||
JsclMathEngine.instance.setNumeralBase(defaultNumeralBase);
|
||||
}
|
||||
|
Reference in New Issue
Block a user