package jmathlibtests.core.tokens;
import jmathlib.core.interpreter.Interpreter;
import jmathlib.tools.junit.framework.*;
import jmathlibtests.*;
public class testUnaryOperatorToken extends TestCase {
protected Interpreter ml;
public testUnaryOperatorToken(String name) {
super(name);
}
public static void main (String[] args) {
jmathlib.tools.junit.textui.TestRunner.run (suite());
}
protected void setUp() {
ml = new Interpreter(true);
}
protected void tearDown() {
ml = null;
}
public static Test suite() {
return new TestSuite(testUnaryOperatorToken.class);
}
/************* ! factorial ************/
public void test001a() {
ml.executeExpression("a=3!");
assertTrue(6.0 == ml.getScalarValueRe("a"));
}
public void test001b() {
ml.executeExpression("a=4!");
assertTrue(24.0 == ml.getScalarValueRe("a"));
}
public void test001c() {
ml.executeExpression("a=(8-5)!");
assertTrue(6.0 == ml.getScalarValueRe("a"));
}
/************* ' transpose ************/
public void test002a() {
ml.executeExpression("a=[3,2,1; 4,5,6]");
double[][] r = {{3,2,1},{4,5,6}};
assertTrue(Compare.ArrayEquals(r, ml.getArrayValueRe("a"), 0.001));
}
public void test002b() {
ml.executeExpression("a=[3,2,1; 4,5,6]'");
double[][] r = {{3,4},{2,5},{1,6}};
assertTrue(Compare.ArrayEquals(r, ml.getArrayValueRe("a"), 0.001));
}
// NOT
public void test300() {
ml.executeExpression("!4");
assertTrue(!ml.getScalarValueBoolean("ans"));
}
public void test301() {
ml.executeExpression("!0");
assertTrue(ml.getScalarValueBoolean("ans"));
}
public void test302() {
ml.executeExpression("~4");
assertTrue(!ml.getScalarValueBoolean("ans"));
}
public void test303() {
ml.executeExpression("~0");
assertTrue(ml.getScalarValueBoolean("ans"));
}
public void test310() {
ml.executeExpression("!(2<3)");
assertTrue( !ml.getScalarValueBoolean("ans"));
}
public void test311() {
ml.executeExpression("!(2>3)");
assertTrue(ml.getScalarValueBoolean("ans"));
}
public void test312() {
ml.executeExpression("~(2<3)");
assertTrue( !ml.getScalarValueBoolean("ans"));
}
public void test313() {
ml.executeExpression("~(2>3)");
assertTrue( ml.getScalarValueBoolean("ans"));
}
// ++
public void testUnaryToken400() {
ml.executeExpression("clear(1)");
ml.executeExpression("a=1");
ml.executeExpression("y=[11,22,33,44,55]");
ml.executeExpression("y(a++)=77"); // "a" will be incremented after indexing
// y=[77,22,33,44,55]
ml.executeExpression("b=y(2)");
ml.executeExpression("c=y(a)");
ml.executeExpression("d=y(1)");
assertTrue(22.0 == ml.getScalarValueRe("b"));
assertTrue( 2.0 == ml.getScalarValueRe("a"));
assertTrue(22.0 == ml.getScalarValueRe("c"));
assertTrue(77.0 == ml.getScalarValueRe("d"));
}
// --
public void testUnaryToken450() {
ml.executeExpression("clear(1)");
ml.executeExpression("a=4");
ml.executeExpression("y=[11,22,33,44,55]");
ml.executeExpression("y(a--)=88"); // decrement will be executed after index operation
// y=[11,22,33,88,55]
assertTrue( 3.0 == ml.getScalarValueRe("a"));
ml.executeExpression("b=y(3)");
assertTrue(33.0 == ml.getScalarValueRe("b"));
ml.executeExpression("b=y(4)");
assertTrue(88.0 == ml.getScalarValueRe("b"));
ml.executeExpression("c=y(a--)");
assertTrue( 2.0 == ml.getScalarValueRe("a"));
assertTrue(33.0 == ml.getScalarValueRe("c"));
}
public void test460() {
ml.executeExpression("4++");
assertTrue(5.0 == ml.getScalarValueRe("ans"));
}
public void test470() {
ml.executeExpression("45++");
assertTrue(46.0 == ml.getScalarValueRe("ans"));
}
public void test480() {
ml.executeExpression("4--");
assertTrue(3.0 == ml.getScalarValueRe("ans"));
}
public void test490() {
ml.executeExpression("45++");
assertTrue(46.0 == ml.getScalarValueRe("ans"));
}
public void test500() {
ml.executeExpression("aa=78");
ml.executeExpression("aa++");
assertTrue(79.0 == ml.getScalarValueRe("aa"));
}
public void test510() {
ml.executeExpression("aa=73");
ml.executeExpression("aa--");
assertTrue(72.0 == ml.getScalarValueRe("aa"));
}
public void test600() {
ml.executeExpression("aa=3");
ml.executeExpression("aa!");
assertTrue(6.0 == ml.getScalarValueRe("ans"));
}
public void test610() {
ml.executeExpression("aa=4");
ml.executeExpression("aa!");
assertTrue(24.0 == ml.getScalarValueRe("ans"));
}
public void test620() {
ml.executeExpression("(5-2)!");
assertTrue(6.0 == ml.getScalarValueRe("ans"));
}
public void test630() {
ml.executeExpression("(6-2)!");
assertTrue(24.0 == ml.getScalarValueRe("ans"));
}
}