public void Test_RandomSequence_ShouldAlternate_WhenOnlyTwoObjects()
        {
            object[] objects = new object[2] {
                new object(), new object()
            };
            VariableSequence <object> sequence = new VariableSequence <object>(objects);

            this.sequence.Order = VariableSequence <object> .OrderType.Random;
            sequence.initialise();
            object firstObject  = sequence.Current;
            object secondObject = sequence.Next;

            for (int i = 0; i < num_of_cycles; i++)
            {
                object current = sequence.Current;
                object next    = sequence.Next;
                if (i % 2 == 0)
                {
                    if (current != firstObject || next != secondObject)
                    {
                        FailWithShouldAlternateMessage();
                    }
                }
                else
                {
                    if (current == firstObject || next == secondObject)
                    {
                        FailWithShouldAlternateMessage();
                    }
                }
                sequence.advance();
            }
        }
 public void Test_OrderTypeSwitch_ShouldYield_InitialisedSequence_WherePossible()
 {
     VariableSequence <object> .OrderType previousOrder = this.sequence.Order;
     this.sequence.Order = previousOrder == VariableSequence <object> .OrderType.Random ? VariableSequence <object> .OrderType.Regular : VariableSequence <object> .OrderType.Random;
     Assert.AreNotEqual(this.sequence.Order, previousOrder, "VariableSequence order did not switch during test.");
     Assert.GreaterOrEqual(this.sequence.CurrentIndex, 0, "VariableSequence did not yield initialised sequence when OrderType was switched.");
 }
Esempio n. 3
0
        public void SequenceVar_TestSequence()
        {
            //Arrange
            int[] numArr   = new int[10];
            int   minNum   = 0;
            int   maxNum   = 10;
            int   itrCount = 10;

            VariableSequence variableSequence = new VariableSequence();

            variableSequence.Min      = minNum;
            variableSequence.Max      = maxNum;
            variableSequence.Interval = 1;

            //Act
            for (int i = 0; i < itrCount; i++)
            {
                variableSequence.GenerateAutoValue();
                numArr[i] = Convert.ToInt32(variableSequence.Value);
            }

            //Assert
            for (int i = 0; i < itrCount; i++)
            {
                Assert.AreEqual(i + 1, numArr[i], "Sequence Issue");
                Assert.IsTrue(numArr[i] >= minNum && numArr[i] <= maxNum, "num1 >= " + minNum + " && num1 <= " + maxNum);
            }
        }
Esempio n. 4
0
 public Procedure(string name, VariableSequence valArgs, Variable resultArg, StatementSequence statements)
 {
     AddChild(valArgs);
     AddChild(resultArg);
     AddChild(statements);
     _name = name;
 }
        void Proc(ProcedureSequence procs)
        {
            StatementSequence statements;
            string            name;
            VariableSequence  valArgs   = new VariableSequence();
            Variable          resultArg = null;

            Expect(5);
            Token ptok = t;

            Expect(1);
            name = t.val;
            Expect(6);
            if (la.kind == 7 || la.kind == 8)
            {
                if (la.kind == 7)
                {
                    Get();
                    Expect(1);
                    Variable v = new Variable(t.val);
                    v.IsValueArg = true;
                    valArgs.AddVariable(v);
                    SymbolTable.DefineArgument(t.val);
                    if (la.kind == 12)
                    {
                        Args(valArgs, out resultArg);
                    }
                }
                else
                {
                    Get();
                    Expect(1);
                    resultArg             = new Variable(t.val);
                    resultArg.IsResultArg = true;
                    SymbolTable.DefineResultArgument(t.val);
                }
            }
            Expect(9);
            SequencePoint seq1 = new SequencePoint(ptok.line, ptok.col, t.line, t.col + t.val.Length);

            Expect(10);
            StmtSeq(out statements);
            Expect(4);
            SequencePoint seq2 = new SequencePoint(t.line, t.col, t.line, t.col + t.val.Length);

            Expect(11);
            if (procs.ContainsProcedure(name))
            {
                errors.SemErr(ptok.line, ptok.col, "Procedure '" + name + "' is already declared");
            }
            else
            {
                Procedure proc = new Procedure(name, valArgs, resultArg, statements);
                proc.AddSequencePoint(seq1);
                proc.AddSequencePoint(seq2);
                procs.AddProcedure(proc);
            }
            SymbolTable.Clear();
        }
 public void Test_ContentsPersist_WhenOrderType_IsSwitched()
 {
     object[] previousContents = this.sequence.Contents;
     VariableSequence <object> .OrderType previousOrder = this.sequence.Order;
     this.sequence.Order = previousOrder == VariableSequence <object> .OrderType.Random ? VariableSequence <object> .OrderType.Regular : VariableSequence <object> .OrderType.Random;
     Assert.AreNotEqual(this.sequence.Order, previousOrder, "VariableSequence order did not switch during test.");
     Assert.AreEqual(previousContents, this.sequence.Contents, "VariableSequence contents changed when switching random.");
 }
        public VariableSequencePage(VariableSequence var)
        {
            InitializeComponent();

            GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(txtMinValue, TextBox.TextProperty, var, nameof(VariableSequence.Min));
            GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(txtMaxValue, TextBox.TextProperty, var, nameof(VariableSequence.Max));
            GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(txtInterval, TextBox.TextProperty, var, nameof(VariableSequence.Interval));
            GingerCore.GeneralLib.BindingHandler.ObjFieldBinding(cbInteger, CheckBox.IsCheckedProperty, var, nameof(VariableSequence.IsInteger));
        }
        public VariableSequencePage(VariableSequence var)
        {
            InitializeComponent();

            App.ObjFieldBinding(txtMinValue, TextBox.TextProperty, var, VariableSequence.Fields.Min);
            App.ObjFieldBinding(txtMaxValue, TextBox.TextProperty, var, VariableSequence.Fields.Max);
            App.ObjFieldBinding(txtInterval, TextBox.TextProperty, var, VariableSequence.Fields.Interval);
            App.ObjFieldBinding(cbInteger, CheckBox.IsCheckedProperty, var, VariableSequence.Fields.IsInteger);
        }
 public void SetUp()
 {
     this.objects = new object[num_of_objects];
     for (int i = 0; i < num_of_objects; i++)
     {
         this.objects[i] = new object();
     }
     this.sequence          = new VariableSequence <object>();
     this.sequence.Contents = this.objects;
 }
Esempio n. 10
0
        public void SequenceVar_TestVariableType()
        {
            //Arrange
            VariableSequence variableSequence = new VariableSequence();

            //Act
            string varType = variableSequence.VariableType();

            //Assert
            Assert.AreEqual("Sequence", varType, "Sequence Variable Type");
        }
Esempio n. 11
0
        public void SequenceVar_TestVariableUIType()
        {
            //Arrange
            VariableSequence variableSequence = new VariableSequence();

            //Act
            string varType = variableSequence.VariableUIType;

            //Assert
            Assert.IsTrue(varType.Contains("Sequence"), "Sequence Variable UI Type");
        }
Esempio n. 12
0
        public void Test_ThrowsException_WhenInitialisingWithNoObjects()
        {
            VariableSequence <object> sequence = new VariableSequence <object>();

            try
            {
                sequence.initialise();
            }
            catch (System.InvalidOperationException) { return; }
            Assert.Fail("InvalidOperationException expected but not thrown.");
        }
Esempio n. 13
0
        public void SequenceVar_TestImageType()
        {
            //Arrange
            VariableSequence variableSequence = new VariableSequence();

            //Act
            eImageType eImageType = variableSequence.Image;

            //Assert
            Assert.AreEqual(eImageType.Sequence, eImageType, "Image Type");
        }
Esempio n. 14
0
        public void SequenceVar_TestDefaultAutoValue()
        {
            //Arrange
            VariableSequence variableSequence = new VariableSequence();

            //Act
            variableSequence.GenerateAutoValue();
            int curSeqVal = Convert.ToInt32(variableSequence.Value);

            //Assert
            Assert.IsTrue(curSeqVal >= 1 && curSeqVal <= 999, "num1 >= 0 && num1 <= 999");
        }
        void Args(VariableSequence valArgs, out Variable resultArg)
        {
            resultArg = null;
            if (IsStartOfResultArg())
            {
                Expect(12);
                Expect(8);
                Expect(1);
                resultArg             = new Variable(t.val);
                resultArg.IsResultArg = true;
                if (SymbolTable.IsDeclaredInCurrentScope(t.val))
                {
                    errors.SemErr(t.line, t.col, string.Format("Argument '{0}' is already declared in this scope", t.val));
                }
                else
                {
                    SymbolTable.DefineResultArgument(t.val);
                }
            }
            else if (la.kind == 12)
            {
                Get();
                Expect(1);
                Variable v = new Variable(t.val);
                v.IsValueArg = true;
                valArgs.AddVariable(v);
                if (SymbolTable.IsDeclaredInCurrentScope(t.val))
                {
                    errors.SemErr(t.line, t.col, string.Format("Argument '{0}' is already declared in this scope", t.val));
                }
                else
                {
                    SymbolTable.DefineArgument(t.val);
                }

                if (la.kind == 12)
                {
                    Args(valArgs, out resultArg);
                }
            }
            else
            {
                SynErr(51);
            }
        }
Esempio n. 16
0
        public void SequenceVar_Min5_Max10_Interval_2()
        {
            //Arrange
            VariableSequence variableSequence = new VariableSequence();

            variableSequence.Min      = 5;
            variableSequence.Max      = 10;
            variableSequence.Interval = 2;

            //Act
            variableSequence.GenerateAutoValue();
            decimal num1 = decimal.Parse(variableSequence.Value);

            variableSequence.GenerateAutoValue();
            decimal num2 = decimal.Parse(variableSequence.Value);

            //Assert
            Assert.IsTrue(num1 >= 5, "vs.Value>=5");
            Assert.IsTrue(num2 <= 10, "vs.Value<=10");
        }
Esempio n. 17
0
        public void SequenceVar_TestFormula()
        {
            //Arrange
            int    minNum             = 0;
            int    maxNum             = 10;
            int    interval           = 1;
            string expectedFormulaStr = minNum + "-" + maxNum + " Interval " + interval;

            VariableSequence variableSequence = new VariableSequence();

            variableSequence.Min      = minNum;
            variableSequence.Max      = maxNum;
            variableSequence.Interval = interval;

            //Act
            string formulaVal = variableSequence.GetFormula();

            //Assert
            Assert.AreEqual(expectedFormulaStr, formulaVal, "Sequence Formula");
        }
Esempio n. 18
0
        public void SequenceVar_Digit_13()
        {
            // same number as minimum and maximum and it should return the same number when we autogenerate
            //Arrange
            int sameNum = 13;
            VariableSequence variableSequence = new VariableSequence();

            variableSequence.Min = sameNum;
            variableSequence.Max = sameNum;

            for (int i = 0; i < 10; i++)
            {
                //Act
                variableSequence.GenerateAutoValue();
                decimal decNum = decimal.Parse(variableSequence.Value);

                //Assert
                Assert.AreEqual(decNum, sameNum, "variableRandomString.Value=" + sameNum);
                Assert.IsTrue(decNum >= sameNum && decNum <= sameNum, "num1 >= " + sameNum + " && num1 <= " + sameNum);
            }
        }
Esempio n. 19
0
        public void SequenceVar_Range_99_999_interval_9()
        {
            //Arrange
            int minNum = 99;
            int maxNum = 999;
            VariableSequence variableSequence = new VariableSequence();

            variableSequence.Min      = minNum;
            variableSequence.Max      = maxNum;
            variableSequence.Interval = 9;

            for (int i = 0; i < 100; i++)
            {
                //Act
                variableSequence.GenerateAutoValue();
                decimal num1 = decimal.Parse(variableSequence.Value);

                //Assert
                Assert.IsTrue(num1 >= minNum && num1 <= maxNum, "num1 >= " + minNum + " && num1 <= " + maxNum);
            }
        }
Esempio n. 20
0
 public virtual void Visit(VariableSequence node)
 {
 }