public void QuantityTwoMinus_a_raisedTo1DividedBy3Test() { var actual = DivideOp.Create(PowerOp.Create(SubtractOp.Create(new Two(), new Identifier("a")), new One()), Literal.Create(3)).Simplify(); var expected = ExprParser.ParseOrThrow("(2-a)^1/3").Simplify(); Assert.AreEqual(expected, actual); }
public void TwoMinus_a_PowerOf1Test() { var actual = SubtractOp.Create(new Two(), PowerOp.Create(new Identifier("a"), new One())); var expected = ExprParser.ParseOrThrow("2-a^1"); Assert.AreEqual(expected, actual); }
public void QuantityTwoMinus_a_raisedToQuantity1Plus3Test() { const string input = "(2-a)^(1+3)"; var actual = PowerOp.Create(SubtractOp.Create(new Two(), new Identifier("a")), AddOp.Create(new One(), Literal.Create(3))).Simplify(); var expected = ExprParser.ParseOrThrow(input).Simplify(); Assert.AreEqual(expected, actual); }
public void Test1() { const string input = "-(2-a)^1+3"; var actual = AddOp.Create(NegativeOp.Create(PowerOp.Create(SubtractOp.Create(new Two(), new Identifier("a")), new One())), Literal.Create(3)).Simplify(); var expected = ExprParser.ParseOrThrow(input); Assert.AreEqual(expected.Simplify(), actual); }
public void AddToNegativeLiteralTest() { var actual1 = SubtractOp.Create(new Identifier("x"), 1); var actual2 = SubtractOp.Create(1, new Identifier("x")); Assert.AreEqual(X + new NegativeOne(), actual1); Assert.AreEqual(One + NegativeOp.Create(X), actual2); }
public void SubtractToLiteralTest() { var actual1 = SubtractOp.Create(new Identifier("x"), 1); var actual2 = SubtractOp.Create(1, new Identifier("x")); var testing = One - X; Assert.AreEqual(X - One, actual1); Assert.AreEqual(testing, actual2); }
public static Expr Create(Expr left, Expr right) => (left, right) switch { (Zero _, _) => right, (_, Zero _) => left, (_, NegativeOp { Expr : Literal l }) => SubtractOp.Create(left, l), _ => new AddOp(left, right) };
public void SubtractionTest() { const string input = "12 - 3"; var actual = SubtractOp.Create( Literal.Create(12), Literal.Create(3) ).Simplify(); var expected = ExprParser.ParseOrThrow(input); Assert.AreEqual(expected.Simplify(), actual); }
public void NegativeBeforeSubtractTest() { const string input = "-12 - 3"; var actual = SubtractOp.Create( NegativeOp.Create(Literal.Create(12)), Literal.Create(3) ).Simplify(); var expected = ExprParser.ParseOrThrow(input).Simplify(); Assert.AreEqual(expected, actual); }
public void SubtractBeforeMultTest() { const string input = "d-12 * 3"; var actual = SubtractOp.Create( new Identifier("d"), MultiplyOp.Create(Literal.Create(12), Literal.Create(3)) ).Simplify(); var expected = ExprParser.ParseOrThrow(input).Simplify(); Assert.AreEqual(expected, actual); }
public void Test3() { const string input = "-a/b^1+3-a/b^1"; var term1 = DivideOp.Create(NegativeOp.Create(new Identifier("a")), PowerOp.Create(new Identifier("b"), new One())); var term2 = Literal.Create(3); var term3 = DivideOp.Create(new Identifier("a"), PowerOp.Create(new Identifier("b"), new One())); var actual = SubtractOp.Create(AddOp.Create(term1, term2), term3).Simplify(); var expected = ExprParser.ParseOrThrow(input); Assert.AreEqual(expected.Simplify(), actual); }
public void Test4() { const string input = "1-2/3+1-3+3*2"; var a = new One(); var b = DivideOp.Create(new Two(), Literal.Create(3)); var c = new One(); var d = Literal.Create(3); var e = MultiplyOp.Create(Literal.Create(3), new Two()); var actual = AddOp.Create(SubtractOp.Create(AddOp.Create(SubtractOp.Create(a, b), c), d), e).Simplify(); var expected = ExprParser.ParseOrThrow(input); Assert.AreEqual(expected.Simplify(), actual); }
public void SubtractThenMultTest() { var input = "(d-12) * 3"; var actual = MultiplyOp.Create( SubtractOp.Create(new Identifier("d"), Literal.Create(12)), Literal.Create(3) ).Simplify(); var expected = ExprParser.ParseOrThrow(input); Assert.AreEqual(expected.ToString(), "3×(d-12)"); Assert.AreEqual(expected.Simplify(), actual); input = "(d+12) * 3"; actual = MultiplyOp.Create( AddOp.Create(new Identifier("d"), Literal.Create(12)), Literal.Create(3) ).Simplify(); expected = ExprParser.ParseOrThrow(input).Simplify(); Assert.AreEqual(expected, actual); }
public void SubtractToIdentifierDifferent() { Assert.AreEqual(i1 - i3, SubtractOp.Create(new Identifier("x"), new Identifier("y"))); Assert.AreEqual(i3 - i1, SubtractOp.Create(new Identifier("y"), new Identifier("x"))); }