예제 #1
0
        public void PopDeletesReturnAddressAndForNextLoops()
        {
            var runEnvironment = new RunEnvironment();
            var sut            = new Pop(runEnvironment);
            var line10         = new ProgramLine(10, new List <IToken> {
                new Token("1000")
            });
            var line1000 = new ProgramLine(1000, new List <IToken> {
            });

            line10.NextToken();
            runEnvironment.CurrentLine = line1000;
            runEnvironment.ProgramStack.Push(new StackEntry {
                Line = line10, LineToken = line10.CurrentToken
            });
            runEnvironment.ProgramStack.Push(new StackEntry {
                Line = line10, LineToken = line10.CurrentToken
            });
            runEnvironment.ProgramStack.Push(new StackEntry {
                VariableName = "A", Line = line10, LineToken = line10.CurrentToken
            });
            runEnvironment.ProgramStack.Push(new StackEntry {
                VariableName = "B", Line = line10, LineToken = line10.CurrentToken
            });
            sut.Execute();
            Assert.AreEqual(1, runEnvironment.ProgramStack.Count);
            Assert.AreEqual(line1000, runEnvironment.CurrentLine);
        }