📄 testparser.java
字号:
package jmathlibtests.core.interpreter;
import jmathlib.tools.junit.framework.*;
import jmathlib.core.interpreter.*;
import jmathlibtests.*;
public class testParser extends TestCase {
protected Interpreter ml;
public testParser(String name) {
super(name);
}
public static void main (String[] args) {
jmathlib.tools.junit.textui.TestRunner.run (suite());
}
protected void setUp() {
ml = new Interpreter(true);
}
public static Test suite() {
return new TestSuite(testParser.class);
}
/************* simple expressions ****************************************/
public void testAdd01() {
ml.executeExpression("a=1+1;");
assertEquals(2.0, ml.getScalarValueRe("a"), 0.001);
}
public void testAdd02() {
ml.executeExpression("a=3.45+2.234;");
assertEquals(5.684, ml.getScalarValueRe("a"), 0.001);
}
public void testAdd03() {
ml.executeExpression("ones(4)");
assertTrue(true);
}
public void testAdd04() {
ml.executeExpression("ones(4)");
assertTrue(true);
}
/************* priorities ************************************************/
public void testPriority01() {
ml.executeExpression("a=2+3*4");
assertEquals(14.0, ml.getScalarValueRe("a"), 0.001);
}
public void testPriority02() {
ml.executeExpression("a=2*3+4");
assertEquals(10.0, ml.getScalarValueRe("a"), 0.001);
}
public void testPriority03() {
ml.executeExpression("a=1/2-1+9");
assertEquals(8.5, ml.getScalarValueRe("a"), 0.001);
}
public void testPriority04() {
ml.executeExpression("a=1+2*3+4*2");
assertEquals(15.0, ml.getScalarValueRe("a"), 0.001);
}
public void testPriority05() {
ml.executeExpression("a=1+2*3*4+5");
assertEquals(30.0, ml.getScalarValueRe("a"), 0.001);
}
public void testPriority06() {
ml.executeExpression("a=1+2*3+4*5+6");
assertEquals(33.0, ml.getScalarValueRe("a"), 0.001);
}
public void testPriority07() {
ml.executeExpression("a=ones((2)-1)");
assertEquals(1.0, ml.getScalarValueRe("a"), 0.001);
}
public void testPriority08() {
ml.executeExpression("{a=11;}b=22;");
assertEquals(11.0, ml.getScalarValueRe("a"), 0.001);
assertEquals(22.0, ml.getScalarValueRe("b"), 0.001);
}
public void testPriority09() {
ml.executeExpression("a=33;{b=44;}c=55;");
assertEquals(33.0, ml.getScalarValueRe("a"), 0.001);
assertEquals(44.0, ml.getScalarValueRe("b"), 0.001);
assertEquals(55.0, ml.getScalarValueRe("c"), 0.001);
}
public void testPriority10() {
ml.executeExpression("a=66,{b=77,};c=88,");
assertEquals(66.0, ml.getScalarValueRe("a"), 0.001);
assertEquals(77.0, ml.getScalarValueRe("b"), 0.001);
assertEquals(88.0, ml.getScalarValueRe("c"), 0.001);
}
public void testPriority11() {
ml.executeExpression("a=2*(3+4)");
assertEquals(14.0, ml.getScalarValueRe("a"), 0.001);
}
public void testPriority12() {
ml.executeExpression("a=(2+4)*3");
assertEquals(18.0, ml.getScalarValueRe("a"), 0.001);
}
public void testPriority13() {
ml.executeExpression("a=(1+2)*(3+4)");
assertEquals(21.0, ml.getScalarValueRe("a"), 0.001);
}
public void testPriority14() {
ml.executeExpression("a=(1+3)^2");
assertEquals(16.0, Math.abs(ml.getScalarValueRe("a")), 0.001);
}
public void testPriority14b() {
ml.executeExpression("a=(1+3).^2");
assertEquals(16.0, Math.abs(ml.getScalarValueRe("a")), 0.001);
}
public void testPriority15() {
ml.executeExpression("a=2^(1+3)");
assertEquals(16.0, Math.abs(ml.getScalarValueRe("a")), 0.001);
}
public void testPriority16() {
ml.executeExpression("a=2-3+5");
assertEquals(4.0, ml.getScalarValueRe("a"), 0.001);
}
public void testPriority100() {
ml.executeExpression("2+3*4");
assertEquals(14.0, ml.getScalarValueRe("ans"), 0.001);
}
public void testPriority101() {
ml.executeExpression("2<3");
assertEquals(true, ml.getScalarValueBoolean("ans"));
}
public void testPriority102() {
ml.executeExpression("2<3+4");
assertEquals(true, ml.getScalarValueBoolean("ans"));
}
public void testPriority103() {
ml.executeExpression("2>3+4");
assertEquals(false, ml.getScalarValueBoolean("ans"));
}
public void testPriority104() {
ml.executeExpression("2>3||1<7");
assertEquals(true, ml.getScalarValueBoolean("ans"));
}
public void testPriority105() {
ml.executeExpression("2>3||1>7");
assertEquals(false, ml.getScalarValueBoolean("ans"));
}
public void testPriority106() {
ml.executeExpression("2<3||1>7");
assertEquals(true, ml.getScalarValueBoolean("ans"));
}
public void testPriority107a() {
ml.executeExpression("3&&2==3||1>7");
assertEquals(false, ml.getScalarValueBoolean("ans"));
}
public void testPriority107b() {
ml.executeExpression("3&&2==2||1>7");
assertEquals(true, ml.getScalarValueBoolean("ans"));
}
public void testPriority108() {
ml.executeExpression("5!=5||1>7");
assertEquals(false, ml.getScalarValueBoolean("ans"));
}
public void testPriority109() {
ml.executeExpression("7!=5||1>7");
assertEquals(true, ml.getScalarValueBoolean("ans"));
}
public void testPriority110() {
ml.executeExpression("8>=7||4!=5");
assertEquals(true, ml.getScalarValueBoolean("ans"));
}
public void testPriority111() {
ml.executeExpression("5>=7||5!=5");
assertEquals(false, ml.getScalarValueBoolean("ans"));
}
/************* whitespace sensitivity ************************************/
/** are whitespaces treated differently ? */
public void testWhitespace01() {
ml.executeExpression(" a = 2 + 3 ");
assertEquals(5.0, ml.getScalarValueRe("a"), 0.001);
}
public void testWhitespace02() {
ml.executeExpression("a = 2 +4");
assertEquals(6.0, ml.getScalarValueRe("a"), 0.001);
}
public void testWhitespace03() {
ml.executeExpression("a = 2+ 5");
assertEquals(7.0, ml.getScalarValueRe("a"), 0.001);
}
public void testWhitespace04() {
ml.executeExpression("a =2 + 6");
assertEquals(8.0, ml.getScalarValueRe("a"), 0.001);
}
public void testWhitespace05() {
ml.executeExpression("a= 2 + 7");
assertEquals(9.0, ml.getScalarValueRe("a"), 0.001);
}
public void testWhitespace06() {
ml.executeExpression("a= 2 +3");
assertEquals(5.0, ml.getScalarValueRe("a"), 0.001);
}
public void testWhitespace07() {
ml.executeExpression("a= 3+ 3");
assertEquals(6.0, ml.getScalarValueRe("a"), 0.001);
}
public void testWhitespace08() {
ml.executeExpression("a= 4+3");
assertEquals(7.0, ml.getScalarValueRe("a"), 0.001);
}
public void testWhitespace09() {
ml.executeExpression("a=5+3");
assertEquals(8.0, ml.getScalarValueRe("a"), 0.001);
}
public void testWhitespace10() {
ml.executeExpression(" a = 6 + 3");
assertEquals(9.0, ml.getScalarValueRe("a"), 0.001);
}
public void testWhitespace11() {
ml.executeExpression(" a = min (2,3)");
assertEquals(2.0, ml.getScalarValueRe("a"), 0.001);
}
public void testWhitespace12() {
ml.executeExpression(" a = min ( 4 , 3 ) ");
assertEquals(3.0, ml.getScalarValueRe("a"), 0.001);
}
public void testWhitespace13() {
ml.executeExpression(" a = min ( max(-1 , 2) , 3 ) ");
assertEquals(2.0, ml.getScalarValueRe("a"), 0.001);
}
public void testWhitespace14() {
ml.executeExpression(" a = max (min(1-2, 4) , 2 ) ");
assertEquals(2.0, ml.getScalarValueRe("a"), 0.001);
}
public void testWhitespace15() {
ml.executeExpression(" a = min ( 4 , 3 ) + 5 ");
assertEquals(8.0, ml.getScalarValueRe("a"), 0.001);
}
/************* assignments ****************************************/
public void testAssign01() {
ml.executeExpression("a=1;");
assertEquals(1.0, ml.getScalarValueRe("a"), 0.001);
}
public void testAssign02() {
ml.executeExpression("a=2;");
assertEquals(2.0, ml.getScalarValueRe("a"), 0.001);
}
public void testAssign04() {
ml.executeExpression("a=123;b=456;");
assertEquals(123.0, ml.getScalarValueRe("a"), 0.001);
assertEquals(456.0, ml.getScalarValueRe("b"), 0.001);
}
/************* sign ****************************************/
public void testSign01a() {
ml.executeExpression("a=2;");
ml.executeExpression("b=-a;");
assertEquals(-2.0, ml.getScalarValueRe("b"), 0.001);
}
public void testSign01b() {
ml.executeExpression("a=2;");
ml.executeExpression("b=+a;");
assertEquals(2.0, ml.getScalarValueRe("b"), 0.001);
}
public void testSign01c() {
ml.executeExpression("a=+2;");
ml.executeExpression("b=-a;");
assertEquals(-2.0, ml.getScalarValueRe("b"), 0.001);
}
public void testSign01d() {
ml.executeExpression("a=-22;");
ml.executeExpression("b=-a;");
assertEquals(22.0, ml.getScalarValueRe("b"), 0.001);
}
public void testSign02() {
ml.executeExpression("a=2;");
ml.executeExpression("b=(7)-a;");
assertEquals(5.0, ml.getScalarValueRe("b"), 0.001);
}
public void testSign03() {
ml.executeExpression("a=2;");
ml.executeExpression("b=(-a)+5;");
assertEquals(3.0, ml.getScalarValueRe("b"), 0.001);
}
public void testSign04() {
ml.executeExpression("a=(-6);");
assertEquals(-6.0, ml.getScalarValueRe("a"), 0.001);
}
public void testSign05() {
ml.executeExpression("a=(3)-8;");
assertEquals(-5.0, ml.getScalarValueRe("a"), 0.001);
}
public void testSign06() {
ml.executeExpression("a=(+2)-3;");
assertEquals(-1.0, ml.getScalarValueRe("a"), 0.001);
}
/************* matrix ****************************************/
public void testMatrix01() {
double[][] dr = {{1.0, 2.0, 1.0},{3.0, 4.0, 5.0}};
ml.executeExpression("d=[1,2,1\n3,4,5]");
assertTrue(Compare.ArrayEquals(dr, ml.getArrayValueRe("d")));
}
public void testMatrix02() {
double[][] dr = {{1.0, 2.0, 3.0},{3.0, 4.0, 5.0}};
ml.executeExpression("d=[1 2 3\n3,4,5]");
assertTrue(Compare.ArrayEquals(dr, ml.getArrayValueRe("d")));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -