Exemple #1
0
    public static double GetResult(char op, double number1, double number2)
    {
        OperatorReguler opReguler = null;

        switch (op)
        {
        case ADDITION:
            AddOperator add = new AddOperator(number1, number2);
            opReguler = add;
            break;

        case SUBTRACK:
            SubOperator sub = new SubOperator(number2, number1);
            opReguler = sub;
            break;

        case MULTIPLY:
            MulOperator mul = new MulOperator(number1, number2);
            opReguler = mul;
            break;

        case DIVISION:
            DivOperator div = new DivOperator(number2, number1);
            opReguler = div;
            break;
        }

        return(opReguler.GetResult());
    }
        public void ReplaceOperation_ReplacesCorrectOperation()
        {
            // Arrange
            var otherOpd1 = new Operand(0);
            var otherOp   = new AddOperator();
            var otherOpd2 = new Operand(0);
            var lOperand  = new Operand(0);
            var op        = new AddOperator();
            var rOperand  = new Operand(0);
            var elements  = new Element[]
            {
                otherOpd1, otherOp, otherOpd2,
                lOperand, op, rOperand
            };
            var sut       = new ElementList(elements);
            var operation = new Operation(lOperand, op, rOperand);

            // Act
            sut.ReplaceOperation(operation, new Operand(0));
            var result = sut.FindOperation();

            // Assert
            Assert.AreEqual(otherOpd1, result.LOperand);
            Assert.AreEqual(otherOp, result.Op);
            Assert.AreEqual(otherOpd2, result.ROperand);
        }
Exemple #3
0
        public void ObservableInfoTest()
        {
            var operatorOne   = new MultiplyOperator(TwentyOne, Two);
            var expressionOne = new NumericExpressionTree(null, operatorOne);
            var observableOne = new ObservableInfo(expressionOne);

            Console.Write("Created new observable: ");
            Console.WriteLine(observableOne);
            Console.WriteLine("ObservableTest: testing anonymous observable Name property...");
            Expect(observableOne.Name == string.Empty);
            Console.WriteLine("ObservableTest: testing Expression property (observableOne)...");
            Expect(observableOne.Expression == expressionOne);

            const string observableName = "observableTwo";
            var          operatorTwo    = new AddOperator(Two, Three);
            var          expressionTwo  = new NumericExpressionTree(null, operatorTwo);
            var          observableTwo  = new ObservableInfo(observableName, expressionTwo);

            Console.Write("Created new ObservableInfo: ");
            Console.WriteLine(observableTwo);
            Console.WriteLine("ObservableTest: testing Name property...");
            Expect(observableTwo.Name == observableName);
            Console.WriteLine("ObservableTest: testing Expression property (observableTwo)...");
            Expect(observableTwo.Expression == expressionTwo);
        }
Exemple #4
0
        public void TestPrintIncompleteAdd()
        {
            BinaryOperator addOperation = new AddOperator();

            addOperation.SetFirstOperand(new Value(1));
            Assert.AreEqual("1 + ".Replace(" ", ""), addOperation.ToString().Replace(" ", ""));
        }
Exemple #5
0
        public void AddOperatorExecuteTest()
        {
            Operator op     = new AddOperator();
            var      result = op.Execute(SetStack());

            Assert.Equal(7, result);
        }
Exemple #6
0
        static void OperatorTest()
        {
            var t  = new DataTree();
            var t2 = new DataTree();
            var t3 = new DataTree();

            t.AddElement(new PNumber(200));
            t.AddElement(new PNumber(3));
            t2.AddElement(new PNumber(20));
            t2.AddElement(new PNumber(100));
            t2.AddElement(new PNumber(1000));
            t3.AddElement(new PNumber(14));
            t2.AddElement(t3);
            var op = new AddOperator();

            op.GroupingMode = DataGroupingModes.CrossReference;
            var te = op.ProcessData(new List <IData>()
            {
                t, t2
            });

            foreach (var res in te)
            {
                Print(res);
            }
        }
Exemple #7
0
        public void TestAddition()
        {
            BinaryOperator addExpression = new AddOperator();

            addExpression.SetFirstOperand(new Value(1.5M));
            addExpression.SetSecondOperand(new Value(1.5M));
            Assert.AreEqual(3.0M, addExpression.Evaluate());
        }
Exemple #8
0
        public void TestPrintAddExpression()
        {
            BinaryOperator addOperation = new AddOperator();

            addOperation.SetFirstOperand(new Value(1));
            addOperation.SetSecondOperand(new Value(1));
            Assert.AreEqual("1 + 1".Replace(" ", ""), addOperation.ToString().Replace(" ", ""));
        }
        private Operand Add(string p1, string p2)
        {
            var fraction  = Operand.Parse(p1);
            var fraction2 = Operand.Parse(p2);
            var sut       = new AddOperator();

            return(sut.Solve(fraction, fraction2));
        }
Exemple #10
0
        public override VariableValue Evaluate(IVariableStore variables)
        {
            var left   = Left.Evaluate(variables);
            var right  = Right.Evaluate(variables);
            var result = AddOperator.Add(this, ref left, ref right);

            return(Assign(variables, ref result));
        }
        public void AddOperatorTest()
        {
            string path = @"addtest";

            File.WriteAllText(path, "5\n3");
            AddOperator add = new AddOperator(File.OpenText(path));

            Assert.AreEqual(add.Evaluate(), 8);
            Assert.AreEqual(add.ToString(), "(5+3)");
        }
        public void AddOperator_PrecedenceSetCorrectly()
        {
            // Arrange
            var expected = 1;
            var sut      = new AddOperator();

            // Act
            var actual = sut.Precedence;

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TakesPrecedenceBoostIntoAccount()
        {
            // Arrange
            var precedenceBoost = 7;
            var expected        = 8;
            var sut             = new AddOperator(precedenceBoost);

            // Act
            var actual = sut.Precedence;

            // Assert
            Assert.AreEqual(expected, actual);
        }
Exemple #14
0
        public void TestOperatorInequality()
        {
            BinaryOperator addOperation = new AddOperator();

            addOperation.SetFirstOperand((Value)5);
            addOperation.SetSecondOperand((Value)6);

            BinaryOperator addOperation2 = new AddOperator();

            addOperation2.SetFirstOperand((Value)4);
            addOperation2.SetSecondOperand((Value)6);
            Assert.AreNotEqual(addOperation, addOperation2);
        }
Exemple #15
0
        public void TestOperatorMismatchInequality()
        {
            BinaryOperator addOperation = new AddOperator();

            addOperation.SetFirstOperand((Value)5);
            addOperation.SetSecondOperand((Value)6);

            BinaryOperator divideOperation = new DivisionOperator();

            divideOperation.SetFirstOperand((Value)5);
            divideOperation.SetSecondOperand((Value)6);
            Assert.AreNotEqual(addOperation, divideOperation);
        }
        public void AdditionOperator_ReturnsSum()
        {
            // Arrange
            var operand1 = new Operand(10);
            var operand2 = new Operand(20);
            var expected = 30;

            // Act
            var sut    = new AddOperator();
            var actual = sut.Compute(operand1, operand2);

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TestSingleOperator()
        {
            ExpressionBuilder expressionBuilder = new ExpressionBuilder();

            expressionBuilder.PushValue((Value)5);
            expressionBuilder.PushOperator <AddOperator>();
            expressionBuilder.PushValue((Value)4);

            AddOperator addOperation = new AddOperator();

            addOperation.SetFirstOperand((Value)5);
            addOperation.SetSecondOperand((Value)4);
            Assert.AreEqual(addOperation, expressionBuilder.GenerateExpression());
        }
Exemple #18
0
        void ExecuteTest()
        {
            IPostfixNotationExecuter executer = new PostfixNotationExecuter();
            var op = new AddOperator();

            Queue <PNToken> expr = new Queue <PNToken>(new List <PNToken> {
                new PNOperandToken(1), new PNOperandToken(2), new PNOperatorToken(op)
            });
            var opList = new OperatorList();

            opList.Add(op);
            decimal result = executer.Execute(expr, opList);

            Assert.Equal(3, result);
        }
 public void PeformLogic(OperatorElement input)
 {
     if (buffer[0] == null)
     {
         buffer[0] = input;
         return;
     }
     // second input is a '+'
     if (input.GetType() == typeof(AddOperator))
     {
         //Don't do anything if previous operator != '-' > a + - b == a - b
         if (buffer[0].GetType() == typeof(SubTractOperator))
         {
         }
     }
     if (input.GetType() == typeof(SubTractOperator))
     {
         if (buffer[0].GetType() == typeof(SubTractOperator))
         {
             buffer[0] = new AddOperator();
         }
         if (buffer[0].GetType() == typeof(AddOperator))
         {
             buffer[0] = input;
         }
         if (buffer[0].GetType() == typeof(MultiplyOperator) || buffer[0].GetType() == typeof(DivideOperator))
         {
             buffer[1] = input;
         }
     }
     if (input.GetType() == typeof(DivideOperator))
     {
         if (buffer[0].GetType() == typeof(SubTractOperator))
         {
             buffer[0] = input;
             buffer[1] = new SubTractOperator();
         }
     }
     if (input.GetType() == typeof(MultiplyOperator))
     {
         if (buffer[0].GetType() == typeof(SubTractOperator))
         {
             buffer[0] = input;
             buffer[1] = new SubTractOperator();
         }
     }
 }
Exemple #20
0
 void AddOp(out AddOperator op)
 {
     op = AddOperator.Plus;
     if (la.kind == 11)
     {
         Get();
     }
     else if (la.kind == 12)
     {
         Get();
         op = AddOperator.Minus;
     }
     else
     {
         SynErr(21);
     }
 }
        public void First_ReturnsFirstElement()
        {
            // Arrange
            var lOperand = new Operand(0);
            var op       = new AddOperator();
            var rOperand = new Operand(0);
            var elements = new Element[]
            {
                lOperand, op, rOperand
            };
            var sut = new ElementList(elements);

            // Act
            var result = sut.First;

            // Assert
            Assert.AreEqual(lOperand, result);
        }
Exemple #22
0
        internal static void ShowOperatorDialog(OperatorDto operatorDto, Action <bool?> call)
        {
            //DispatcherHelper.UIDispatcher.Invoke(new Action(() =>
            //    {
            var addOperator = new AddOperator();

            var vm = operatorDto != null ? new AddOperatorViewModel(operatorDto) : new AddOperatorViewModel();

            addOperator.DataContext = vm;

            addOperator.Owner = Application.Current.MainWindow;
            var dialogResult = addOperator.ShowDialog();

            if (call != null)
            {
                call(dialogResult);
            }
            addOperator.DataContext = null;
            //}));
        }
        public void PostfixParserTest()
        {
            var op = new AddOperator();
            IPostfixNotationParser parser = new PostfixNotationParser();
            List <PNToken>         expr   = new List <PNToken>
            {
                new PNOperandToken(3),
                new PNOperatorToken(op),
                new PNOperandToken(4)
            };
            var opList = new OperatorList();

            opList.Add(op);

            var res = parser.Parse(expr, opList);

            Assert.Equal(3m, res.Dequeue().Subject);
            Assert.Equal(4m, res.Dequeue().Subject);
            Assert.Equal("+", ((Operator)(res.Dequeue().Subject)).Symbol);
        }
        public void ReplaceOperationWorks()
        {
            // Arrange
            var lOperand = new Operand(0);
            var op       = new AddOperator();
            var rOperand = new Operand(0);
            var elements = new Element[]
            {
                lOperand, op, rOperand
            };
            var sut       = new ElementList(elements);
            var operation = new Operation(lOperand, op, rOperand);

            // Act
            sut.ReplaceOperation(operation, new Operand(0));
            var result = sut.FindOperation();

            // Assert
            Assert.IsNull(result);
        }
        public void FindOperationCanHandleTwoSuccessiveOperators()
        {
            // Arrange
            var opd1     = new Operand(1);
            var op1      = new AddOperator();
            var op2      = new SubOperator(10);
            var opd2     = new Operand(2);
            var elements = new Element[]
            {
                opd1, op1, op2, opd2
            };
            var sut = new ElementList(elements);

            // Act
            var result = sut.FindOperation();

            // Assert
            Assert.AreEqual(0, result.LOperand.Value);
            Assert.AreEqual(op2, result.Op);
            Assert.AreEqual(opd2, result.ROperand);
        }
Exemple #26
0
        private void Form1_Paint(object sender, PaintEventArgs args)
        {
            var e = new StructureEngine();

            var i = new If();
            
            i.Condition = null;
            e.Root.Body.Statements.Add(i);

            var v = new VariableDeclaration();
            v.Name = null;
            v.InitialValue = null;

            var p = new Print();

            var s1 = new StringLiteral
                        {
                                Value = "hej du glade Tag en spade och..."
                        };
            var s2 = new StringLiteral
            {
                Value =  "Mer text",
            };

            var exp = new AddOperator()
            {
                LeftOperand = s1,
                RightOperand = s2,
            };

            p.Value = exp;

            i.Body.Statements.Add(v);
            i.Body.Statements.Add(p);

            args.Graphics.Clear(Color.White);
            e.Render(args.Graphics);

        }
Exemple #27
0
        private void Form1_Paint(object sender, PaintEventArgs args)
        {
            var e = new StructureEngine();

            var i = new If();

            i.Condition = null;
            e.Root.Body.Statements.Add(i);

            var v = new VariableDeclaration();

            v.Name         = null;
            v.InitialValue = null;

            var p = new Print();

            var s1 = new StringLiteral
            {
                Value = "hej du glade Tag en spade och..."
            };
            var s2 = new StringLiteral
            {
                Value = "Mer text",
            };

            var exp = new AddOperator()
            {
                LeftOperand  = s1,
                RightOperand = s2,
            };

            p.Value = exp;

            i.Body.Statements.Add(v);
            i.Body.Statements.Add(p);

            args.Graphics.Clear(Color.White);
            e.Render(args.Graphics);
        }
        public void FindOperation_ReturnsFirstOperation()
        {
            // Arrange
            var lOperand = new Operand(0);
            var op       = new AddOperator();
            var rOperand = new Operand(0);
            var elements = new Element[]
            {
                new Operand(0),
                new Operand(0),
                lOperand,
                op,
                rOperand
            };
            var sut = new ElementList(elements);

            // Act
            var result = sut.FindOperation();

            // Assert
            Assert.AreEqual(lOperand, result.LOperand);
            Assert.AreEqual(op, result.Op);
            Assert.AreEqual(rOperand, result.ROperand);
        }
        public IToken ParseTokens(string[] ops)
        {
            var    stack = new Stack <ApOperator>();
            IToken token = null;

            for (int i = 0; i < ops.Length; i++)
            {
                var op = ops[i];

                switch (op)
                {
                case "ap":
                    token = new ApOperator();
                    break;

                case "inc":
                    token = IncOperator.Acquire();
                    break;

                case "dec":
                    token = DecOperator.Acquire();
                    break;

                case "neg":
                    token = NegOperator.Acquire();
                    break;

                case "add":
                    token = AddOperator.Acquire();
                    break;

                case "mul":
                    token = MulOperator.Acquire();
                    break;

                //case "l":
                //    token = new LOperator();
                //    break;

                case "div":
                    token = DivOperator.Acquire();
                    break;

                //case "pwr2":
                //    return (new Pwr2Operator(), index);

                case "t":
                    token = KComb.Acquire();
                    break;

                //case "f":
                //    return (new FComb(), index);

                case "s":
                    token = SComb.Acquire();
                    break;

                case "c":
                    token = CComb.Acquire();
                    break;

                case "b":
                    token = BComb.Acquire();
                    break;

                case "i":
                    token = IComb.Acquire();
                    break;

                case "cons":
                case "vec":
                    token = ConsOperator.Acquire();
                    break;

                case "car":
                    token = CarOperator.Acquire();
                    break;

                case "cdr":
                    token = CdrOperator.Acquire();
                    break;

                case "nil":
                    token = NilOperator.Acquire();
                    break;

                case "isnil":
                    token = IsNilOperator.Acquire();
                    break;

                case "eq":
                    token = EqOperator.Acquire();
                    break;

                case "if0":
                    token = new If0Operator();
                    break;

                case "lt":
                    token = LtOperator.Acquire();
                    break;

                //case "mod":
                //    token = new ModOperator();
                //    break;

                //case "dem":
                //    token = new DemodOperator();
                //    break;

                case "interact":
                    token = new InteractOperator();
                    break;

                default:
                    if (decimal.TryParse(op, out var constant))     // int constant
                    {
                        token = ConstantOperator.Acquire(decimal.Parse(op));
                    }
                    else if (op.StartsWith("x"))
                    {
                        token = VarOperator.Acquire(op);
                    }
                    else if (op.StartsWith(":"))     // variable reference
                    {
                        token = LateBoundToken.Acquire(op);
                    }
                    else
                    {
                        throw new InvalidOperationException();
                    }

                    break;
                }

                if (stack.Count == 0)
                {
                    if (!(token is ApOperator))
                    {
                        if (i != ops.Length - 1)
                        {
                            throw new InvalidOperationException();
                        }

                        return(token);
                    }

                    stack.Push((ApOperator)token);
                }
                else
                {
                    var top = stack.Peek();
                    if (top.f == null)
                    {
                        top.f = token;
                        if (token is ApOperator ap)
                        {
                            stack.Push(ap);
                        }
                    }
                    else if (top.x == null)
                    {
                        top.x = token;
                        if (token is ApOperator ap)
                        {
                            stack.Push(ap);
                        }
                        else
                        {
                            while (stack.Count > 0 && stack.Peek().x != null)
                            {
                                token = stack.Pop();
                            }
                        }
                    }
                    else
                    {
                        throw new InvalidOperationException();
                    }
                }
            }

            if (stack.Count == 1)
            {
                return(stack.Pop());
            }

            return(token);
        }
Exemple #30
0
        public void ModelInfoTest()
        {
            const string modelName = "test model";
            var          builder   = new ModelInfo.ModelBuilder(modelName);

            const string constraintName          = "test constraint";
            const string constraintPredicateName = "constraint predicate";
            var          constraintExpression    = new EqualToOperator(Two, Two);
            var          constraintPredicate     = new BooleanExpressionTree(constraintPredicateName, constraintExpression);
            var          constraint = new ConstraintInfo(constraintName, constraintPredicate);

            builder.AddConstraint(constraint);

/*
 *          const string eventName = "test event";
 *          const string eventPredicateName = "event predicate";
 *          var eventExpression = new GreaterThanOperator(Three, Two);
 *          var eventPredicate = new BooleanExpressionTree(eventPredicateName, eventExpression);
 *          int eventCount = 0;
 *          var testEvent = new EventInfo(eventName, eventPredicate, () => { eventCount++; });
 *          builder.AddEvent(testEvent);
 */

            const string expressionName = "test expression";
            var          expression     = new AddOperator(Three, Two);
            var          expressionTree = new NumericExpressionTree(expressionName, expression);

            builder.AddExpression(expressionTree);

            const string localeName = "test locale";
            var          locale     = new LocaleInfo(localeName);

            builder.AddLocale(locale);

            const string observableName           = "test observable";
            const string observableExpressionName = "observable expression";
            var          rootOperator             = new PowerOperator(Two, Three);
            var          observableExpressionTree = new NumericExpressionTree(observableExpressionName, rootOperator);
            var          observable = new ObservableInfo(observableName, observableExpressionTree);

            builder.AddObservable(observable);

            const string parameterName = "test parameter";
            var          parameter     = new ParameterInfo(parameterName, 3.14159265f);

            builder.AddParameter(parameter);

            const string predicateName       = "test predicate";
            var          predicateExpression = new LessThanOperator(Two, Three);
            var          predicate           = new BooleanExpressionTree(predicateName, predicateExpression);

            builder.AddPredicate(predicate);

            const string speciesName = "reactant";
            var          reactant    = new SpeciesDescription(speciesName, 2012, locale);

            builder.AddSpecies(reactant);

            const string reactionName = "test reaction";
            var          rBuilder     = new ReactionInfo.ReactionBuilder(reactionName);

            rBuilder.AddReactant(reactant);
            var rateExpression = new MultiplyOperator(Ten, new SymbolReference(speciesName));
            var reactionRate   = new NumericExpressionTree(null, rateExpression);

            rBuilder.SetRate(reactionRate);
            var reaction = rBuilder.Reaction;

            builder.AddReaction(reaction);

            var modelInfo = builder.Model;

            Console.WriteLine("ModelInfoTests: checking model name...");
            Expect(modelInfo.Name == modelName);
            Console.WriteLine("ModelInfoTests: checking constraint count (1)...");
            Expect(modelInfo.Constraints.Count() == 1);
            Console.WriteLine("ModelInfoTests: checking constraint...");
            Expect(modelInfo.Constraints.First() == constraint);

/*
 *          Console.WriteLine("ModelInfoTests: checking event count (1)...");
 *          Expect(modelInfo.Events.Count() == 1);
 *          Console.WriteLine("ModelInfoTests: checking event...");
 *          Expect(modelInfo.Events.First() == testEvent);
 */
            Console.WriteLine("ModelInfoTests: checking expression count (3)...");
            Expect(modelInfo.Expressions.Count() == 3);
            Console.WriteLine("ModelInfoTests: checking expressions...");
            var expressions = modelInfo.Expressions.Where(net => net.Name == expressionName).ToList();

            Expect(expressions.Count == 1);
            Expect(expressions[0] == expressionTree);
            Console.WriteLine("ModelInfoTests: checking locale count (1)...");
            Expect(modelInfo.Locales.Count() == 1);
            Console.WriteLine("ModelInfoTests: checking locale...");
            Expect(modelInfo.Locales.First() == locale);
            Console.WriteLine("ModelInfoTests: checking observable count (1)...");
            Expect(modelInfo.Observables.Count() == 1);
            Console.WriteLine("ModelInfoTests: checking observable...");
            Expect(modelInfo.Observables.First() == observable);
            Console.WriteLine("ModelInfoTests: checking parameter count (1)...");
            Expect(modelInfo.Parameters.Count() == 1);
            Console.WriteLine("ModelInfoTests: checking parameter...");
            Expect(modelInfo.Parameters.First() == parameter);

/*
 *          Console.WriteLine("ModelInfoTests: checking predicate count (3)...");
 *          Expect(modelInfo.Predicates.Count() == 3);
 */
            Console.WriteLine("ModelInfoTests: checking predicate count (2)...");
            Expect(modelInfo.Predicates.Count() == 2);
            Console.WriteLine("ModelInfoTests: checking predicate...");
            var predicates = modelInfo.Predicates.Where(pi => pi.Name == predicateName).ToList();

            Expect(predicates.Count == 1);
            Expect(predicates[0] == predicate);
            Console.WriteLine("ModelInfoTests: checking reaction count (1)...");
            Expect(modelInfo.Reactions.Count() == 1);
            Console.WriteLine("ModelInfoTests: checking reaction...");
            Expect(modelInfo.Reactions.First() == reaction);
            Console.WriteLine("ModelInfoTests: checking species count (1)...");
            Expect(modelInfo.Species.Count() == 1);
            Console.WriteLine("ModelInfoTests: checking species...");
            Expect(modelInfo.Species.First() == reactant);
        }