public void BasicTest() { var a = false; IfFunction.If(true, () => a = true, () => a = false); Assert.True(a, "func1 should be called"); }
public void IfEqualChildrenTest() { GetConverter(out var varX, out var varY); var prog1 = new IfFunction(varY, varX, varX, varX); var prog2 = varX; var simp = prog1.Simplify(); Console.WriteLine($"{prog1}->{simp}, {prog2}"); Assert.AreEqual(simp, prog2, $"{prog1} simplification ({simp}) should be equal to {prog2}"); }
public void HashTestProgram() { var const1 = new Constant(0); var const2 = new Constant(1); var variable = new Variable("a"); var sine = new SineFunction(const2); var pow = new PowerFunction(const1, variable); var subtr = new SubtractionFunction(const2, pow); var min = new MinFunction(subtr, const1); var div = new DivisionFunction(pow, variable); var prog = new IfFunction(div, min, subtr, sine); var hashCode = prog.GetHashCode(); Console.WriteLine($"{prog}:{hashCode}"); Assert.AreNotEqual(hashCode, 0, double.Epsilon, $"Hash code of {prog} should not be 0."); }
public void IfConstantTest() { var converter = GetConverter(out var varX, out _); var prog1 = new IfFunction(converter.FromNormalNotation("(2-2)"), varX, Constant.One, Constant.One); var prog2 = varX; var simp = prog1.Simplify(); Console.WriteLine($"{prog1}->{simp}, {prog2}"); Assert.AreEqual(simp, prog2, $"{prog1} simplification ({simp}) should be equal to {prog2}"); prog1 = new IfFunction(converter.FromNormalNotation("(2-1)"), Constant.One, varX, Constant.One); simp = prog1.Simplify(); Console.WriteLine($"{prog1}->{simp}, {prog2}"); Assert.AreEqual(simp, prog2, $"{prog1} simplification ({simp}) should be equal to {prog2}"); prog1 = new IfFunction(converter.FromNormalNotation("(1-2)"), Constant.One, Constant.One, varX); simp = prog1.Simplify(); Console.WriteLine($"{prog1}->{simp}, {prog2}"); Assert.AreEqual(simp, prog2, $"{prog1} simplification ({simp}) should be equal to {prog2}"); }
public void IfRangeTest() { var varX = new Variable("x", 2, new Range(1, 4)); var varY = new Variable("y", new Range(-3, -1)); var varZ = new Variable("z", new Range(0)); var prog1 = new IfFunction(varZ, varX, Constant.One, Constant.One); var prog2 = varX; var simp = prog1.Simplify(); Console.WriteLine($"{prog1}->{simp}, {prog2}"); Assert.AreEqual(simp, prog2, $"{prog1} simplification ({simp}) should be equal to {prog2}"); prog1 = new IfFunction(varX, Constant.One, varY, Constant.One); simp = prog1.Simplify(); prog2 = varY; Console.WriteLine($"{prog1}->{simp}, {prog2}"); Assert.AreEqual(simp, prog2, $"{prog1} simplification ({simp}) should be equal to {prog2}"); prog1 = new IfFunction(varY, Constant.One, Constant.One, varX); simp = prog1.Simplify(); prog2 = varX; Console.WriteLine($"{prog1}->{simp}, {prog2}"); Assert.AreEqual(simp, prog2, $"{prog1} simplification ({simp}) should be equal to {prog2}"); }