示例#1
0
        public void TestScenario_05_WorkedExample_0()
        {
            /*
             * 2y+2x-y+2x+4=0
             * 
             * si=
             */

            //(2*y)+(2*x)+(-1*y)+(2*x)+4=0
            var x = new Var('x');
            var y = new Var('y');

            var term1 = new Term(Expression.Multiply, new List<object>() { 2, y });
            var term2 = new Term(Expression.Multiply, new List<object>() { 2, x });
            var term3 = new Term(Expression.Multiply, new List<object>() { -1, y });
            var term4 = new Term(Expression.Multiply, new List<object>() { 2, x });
            var term = new Term(Expression.Add, new List<object>() { term1, term2, term3, term4, 4 });
            var eq = new Equation(term, 0);
            LineSymbol lineSymbol;
            bool result = eq.IsLineEquation(out lineSymbol);
            Assert.True(result);

            var graph = new RelationGraph();
            graph.AddNode(lineSymbol);

            var query = new Query("graph");
            GraphNode gn = graph.AddNode(query);
            var qn = gn as QueryNode;
            Assert.True(qn != null);
            Assert.True(qn.InternalNodes.Count == 1);
            var cachedShapeNode = qn.InternalNodes[0] as ShapeNode;
            Assert.NotNull(cachedShapeNode);
            var cachedLs = cachedShapeNode.ShapeSymbol as LineSymbol;
            Assert.NotNull(cachedLs);
            Assert.True(cachedLs.OutputType == LineType.GeneralForm);
            //Assert.True(cachedLs.ToString().Equals("y=-4x-4"));
            //Assert.True(cachedLs.Traces.Count == 5);

            var query2 = new Query("s");
            graph.AddNode(query2);
            Assert.True(query2.Success);
            Assert.True(query2.CachedEntities.Count == 1);
            var gGoal = query2.CachedEntities.ToList()[0] as EqGoal;
            Assert.NotNull(gGoal);
            Assert.True(gGoal.Rhs.ToString().Equals("-4"));
            //Assert.True(gGoal.Traces.Count == 6);
        }
示例#2
0
        public void Test_Line_Unify_4()
        {
            //test
            //(2*y)+(2*x)+(-1*y)+(2*x)+4=0
            var x = new Var('x');
            var y = new Var('y');

            var term1 = new Term(Expression.Multiply, new List<object>() { 2, y });
            var term2 = new Term(Expression.Multiply, new List<object>() { 2, x });
            var term3 = new Term(Expression.Multiply, new List<object>() { -1, y });
            var term4 = new Term(Expression.Multiply, new List<object>() { 2, x });
            var term = new Term(Expression.Add, new List<object>() { term1, term2, term3, term4, 4 });
            var eq = new Equation(term, 0);
            LineSymbol ls;
            bool result = eq.IsLineEquation(out ls);
            Assert.True(result);
            //Assert.True(ls.Traces.Count == 3);
        }
示例#3
0
        public void Test_Line_Unify_2()
        {
            //3y-y+2x+1=4
            var x = new Var("x");
            var y = new Var("y");
            var term1 = new Term(Expression.Multiply, new List<object>() { 3, y });
            var term2 = new Term(Expression.Multiply, new List<object>() { -1, y });
            var term3 = new Term(Expression.Multiply, new List<object>() { 2, x });
            var term = new Term(Expression.Add, new List<object>() { term1, term2, term3, 4 });
            var eq = new Equation(term, 4);

            LineSymbol ls;
            bool result = eq.IsLineEquation(out ls);
            Assert.True(result);
            Assert.NotNull(ls);
            //Assert.True(ls.Traces.Count == 3);

            var lineType = ls.Shape.GetInputType() as LineType?;
            Assert.NotNull(lineType);
            Assert.True(lineType.Value == LineType.GeneralForm);
        }
示例#4
0
        public void Test_Line_Unify_3()
        {
            //y=2x+3
            var x = new Var("x");
            var y = new Var("y");
            var term3 = new Term(Expression.Multiply, new List<object>() { 2, x });
            var term = new Term(Expression.Add, new List<object>() { term3, 3 });
            var eq = new Equation(y, term);

            LineSymbol ls;
            bool result = eq.IsLineEquation(out ls);
            Assert.True(result);
            Assert.NotNull(ls);
            Assert.True(ls.Traces.Count == 1);

            var lineType = ls.Shape.GetInputType() as LineType?;
            Assert.NotNull(lineType);
            Assert.True(lineType.Value == LineType.SlopeIntercept);
        }
示例#5
0
        public void Test_Line_Unify_1()
        {
            //2x+3y-1=0
            var x = new Var("x");
            var term1 = new Term(Expression.Multiply, new List<object>() { 2, x });
            var y = new Var("y");
            var term2 = new Term(Expression.Multiply, new List<object>() { 3, y });
            var term = new Term(Expression.Add, new List<object>() { term1, term2, -1 });
            var eq = new Equation(term, 0);

            LineSymbol ls;
            bool result = eq.IsLineEquation(out ls);
            Assert.True(result);
            Assert.NotNull(ls);
            Assert.True(ls.Traces.Count == 2);
            object lineType = ls.Shape.GetInputType() as LineType?;
            Assert.NotNull(lineType);
        }