Exemplo n.º 1
0
        private static List <DoublePoint> GetPointsToGraph()
        {
            var graphPoinst = new List <DoublePoint>();

            double minY = -GraphHeight / 2 - 1;
            double maxY = GraphHeight / 2 + 1;

            double x = (-Offset.X - GraphWidth / 2);
            double y = new Rpn(rpn).GetNewRpnWithSetVariable(x * Zoom).Calculate() / Zoom - Offset.Y;

            graphPoinst.Add(new DoublePoint(x + Offset.X, y));

            foreach (DoublePoint el in pointsList)
            {
                if (el.X > GetLeftPointXPos() && el.X < GetRightPointXPos())
                {
                    var point = new DoublePoint(el.X, el.Y);

                    point.Y -= Offset.Y;
                    point.X += Offset.X;

                    if (point.Y > maxY)
                    {
                        point.Y = maxY;
                    }
                    if (point.Y < minY)
                    {
                        point.Y = minY;
                    }

                    graphPoinst.Add(point);
                }
            }

            for (int i = 1; i < graphPoinst.Count - 1; i++)
            {
                if (graphPoinst[i].Y == maxY)
                {
                    if (graphPoinst[i - 1].Y == maxY && graphPoinst[i + 1].Y == maxY)
                    {
                        graphPoinst.RemoveAt(i);
                        i--;
                    }
                }
                else if (graphPoinst[i].Y == minY)
                {
                    if (graphPoinst[i - 1].Y == minY && graphPoinst[i + 1].Y == minY)
                    {
                        graphPoinst.RemoveAt(i);
                        i--;
                    }
                }
            }

            x = (-Offset.X + GraphWidth / 2);
            y = new Rpn(rpn).GetNewRpnWithSetVariable(x * Zoom).Calculate() / Zoom - Offset.Y;
            graphPoinst.Add(new DoublePoint(x + Offset.X, y));

            return(graphPoinst);
        }
Exemplo n.º 2
0
        public void TestFuncWithManyArguments()
        {
            var rpn = new Rpn("threesum(3+4,sqrt(9),6)");

            Assert.AreEqual("3 4 + 9 sqrt( 6 threesum(", rpn.ToString());
            Assert.AreEqual(3, ((RpnItemFunction)rpn.Result.Last()).ArgumentCount);
        }
        public void InputButton_Click(object sender, RoutedEventArgs e)
        {
            string equation = Rpn.StartRpn(InputBox.Text);

            OutputResult.Text = equation;
            DrawF(equation);
        }
Exemplo n.º 4
0
        public void TestSubtraction()
        {
            var rpn   = new Rpn("100-10-10-10");
            var eval  = new EvaluateRpn(rpn);
            var value = eval.Eval();

            Assert.AreEqual(70, value.Numeric);
        }
Exemplo n.º 5
0
        public void TestNotEqualOpStr()
        {
            var rpn   = new Rpn("''hej'!='då'");
            var eval  = new EvaluateRpn(rpn);
            var value = eval.Eval();

            Assert.AreEqual(1, value.Numeric);
        }
Exemplo n.º 6
0
        public void TestNotEqualOp2()
        {
            var rpn   = new Rpn("85!=85");
            var eval  = new EvaluateRpn(rpn);
            var value = eval.Eval();

            Assert.AreEqual(0, value.Numeric);
        }
Exemplo n.º 7
0
        public void TestFirstFunction()
        {
            var rpn   = new Rpn("(12)/(first(0?1,0?2,0?3,1?4,1?5))");
            var eval  = new EvaluateRpn(rpn);
            var value = eval.Eval();

            Assert.AreEqual(3, value.Numeric);
        }
Exemplo n.º 8
0
        public void TestOrderEvaluation()
        {
            var rpn   = new Rpn("12/2/3");
            var eval  = new EvaluateRpn(rpn);
            var value = eval.Eval();

            Assert.AreEqual(2, value.Numeric);
        }
Exemplo n.º 9
0
        public void TestBasicAddition()
        {
            var rpn   = new Rpn("3+4");
            var eval  = new EvaluateRpn(rpn);
            var value = eval.Eval();

            Assert.AreEqual(7, value.Numeric);
        }
Exemplo n.º 10
0
        public void TestThatNullIsFalse()
        {
            var rpn   = new Rpn("null?1");
            var eval  = new EvaluateRpn(rpn);
            var value = eval.Eval();

            Assert.AreEqual(null, value.String);
        }
Exemplo n.º 11
0
        public void TestDivision()
        {
            var rpn   = new Rpn("3+4/2");
            var eval  = new EvaluateRpn(rpn);
            var value = eval.Eval();

            Assert.AreEqual(5, value.Numeric);
        }
Exemplo n.º 12
0
        public void TestNullParsing()
        {
            var rpn   = new Rpn("null");
            var eval  = new EvaluateRpn(rpn);
            var value = eval.Eval();

            Assert.AreEqual(null, value.String);
        }
        public void TestDivision3()
        {
            var rpn   = new Rpn("1000/10*2/10");
            var eval  = new CompileRpn(rpn);
            var value = eval.Evaluate(null);

            Assert.AreEqual(20, value);
        }
        public void TestSubtraction()
        {
            var rpn   = new Rpn("100-10-10-10");
            var eval  = new CompileRpn(rpn);
            var value = eval.Evaluate(null);

            Assert.AreEqual(70, value);
        }
        public void TestDivision()
        {
            var rpn   = new Rpn("3+4/2");
            var eval  = new CompileRpn(rpn);
            var value = eval.Evaluate(null);

            Assert.AreEqual(5, value);
        }
Exemplo n.º 16
0
        public void TestDivision3()
        {
            var rpn   = new Rpn("1000/10*2/10");
            var eval  = new EvaluateRpn(rpn);
            var value = eval.Eval();

            Assert.AreEqual(20, value.Numeric);
        }
        public void TestBasicAddition()
        {
            var rpn   = new Rpn("3+4");
            var eval  = new CompileRpn(rpn);
            var value = eval.Evaluate(null);

            Assert.AreEqual(7, value);
        }
        public void TestNotEqualOp2()
        {
            var rpn   = new Rpn("85!=85");
            var eval  = new CompileRpn(rpn);
            var value = eval.Evaluate(null);

            Assert.AreEqual(0, value);
        }
Exemplo n.º 19
0
        public void Calculate_Always_Success(string expression, int expectedValue)
        {
            var rpn = new Rpn();

            var calculate = rpn.Calculate(expression);

            Assert.AreEqual(expectedValue, calculate);
        }
        public void TestOrderEvaluation()
        {
            var rpn   = new Rpn("12/2/3");
            var eval  = new CompileRpn(rpn);
            var value = eval.Evaluate(null);

            Assert.AreEqual(2, value);
        }
Exemplo n.º 21
0
        public void TestEqLtParsing()
        {
            var rpn   = new Rpn("5<=2+3");
            var eval  = new EvaluateRpn(rpn);
            var value = eval.Eval();

            Assert.AreEqual(1, value.Numeric);
        }
Exemplo n.º 22
0
 private void AddRpn(Rpn rpn)
 {
     program.AddLast(new LinkedListNode <Rpn>(rpn));
     if (labelsForNextRpn.Count > 0)
     {
         LabelLastRpn();
     }
 }
Exemplo n.º 23
0
        public void TestStringAddition()
        {
            var rpn   = new Rpn("\"3\"+\"3\"");
            var eval  = new EvaluateRpn(rpn);
            var value = eval.Eval();

            Assert.AreEqual("33", value.String);
        }
        public void TestEqLtParsing()
        {
            var rpn   = new Rpn("5<=2+3");
            var eval  = new CompileRpn(rpn);
            var value = eval.Evaluate(null);

            Assert.AreEqual(1, value);
        }
Exemplo n.º 25
0
        public void InputButton_Click(object sender, RoutedEventArgs e)
        {
            _ = this.Find <Button>("InputButton");
            var OutputResult = this.Find <TextBlock>("OutputResult");
            var InputBox     = this.Find <TextBox>("InputBox");

            string equation = Rpn.StartRpn(InputBox.Text);

            OutputResult.Text = equation;
        }
Exemplo n.º 26
0
        public void CanWorkWithGuids()
        {
            var id  = Guid.NewGuid();
            var rpn = new Rpn($"id=='{id}'");

            var eval = new EvaluateRpn(rpn, new List <NameAndType> {
                new NameAndType("id", typeof(Guid))
            });
            var value = eval.Eval(new object[] { id });

            Assert.AreEqual(1, value.Numeric);
        }
Exemplo n.º 27
0
        public void Test()
        {
            var rpn = new Rpn("nisse+2*sture+5");
            var x   = new CompileRpn(rpn,
                                     new List <NameAndType>
            {
                new NameAndType("nisse", typeof(double)),
                new NameAndType("sture", typeof(double))
            });
            var result = x.Evaluate(new object[] { 1.0, 3.0 });

            Console.WriteLine(result);
        }
Exemplo n.º 28
0
        public void TestThatNullabelsWorks1()
        {
            var rpn = new Rpn("var1??-1");

            Assert.AreEqual("var1 -1 ??", rpn.ToString());

            var eval = new EvaluateRpn(rpn, new List <NameAndType>
            {
                new NameAndType("var1", typeof(double))
            });
            var value = eval.Eval(new object[] { null });

            Assert.AreEqual(-1, value.Numeric);
        }
        public void TestEqualOp(double variableValue, double expected)
        {
            var rpn = new Rpn("Url==42");

            Assert.AreEqual("Url 42 ==", rpn.ToString());

            var eval = new CompileRpn(rpn, new List <NameAndType>
            {
                new NameAndType("Url", typeof(double))
            });
            var value = eval.Evaluate(new object[] { variableValue });

            Assert.AreEqual(expected, value);
        }
        public void TestVariables()
        {
            var rpn = new Rpn("3+(a+q)/(2+2)+3");

            Assert.AreEqual("3 a q + 2 2 + / + 3 +", rpn.ToString());
            var eval = new CompileRpn(rpn, new List <NameAndType>
            {
                new NameAndType("a", typeof(double)), new NameAndType("q", typeof(double))
            });
            var variables = new object[] { 3.0, 5.0 };
            var value     = eval.Evaluate(variables);

            Assert.AreEqual(8, value);
        }