コード例 #1
0
        public void BasicTest()
        {
            var a = false;

            IfFunction.If(true, () => a = true, () => a = false);

            Assert.True(a, "func1 should be called");
        }
コード例 #2
0
        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}");
        }
コード例 #3
0
ファイル: EqualityTests.cs プロジェクト: pedrodbs/Genetica
        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.");
        }
コード例 #4
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}");
        }
コード例 #5
0
        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}");
        }