예제 #1
0
        internal static T CheckParse <T>(
            Func <OperandLexer, T> parseFunc, String str, Boolean success, String message)
        {
            OperandLexer lexer = OperandLexerTest.MakeFrom(str);

            lexer.MoveNext();
            try
            {
                T result = parseFunc(lexer);
                Assert.IsTrue(success, message);
                return(result);
            }
            catch (Casl2SimulatorException)
            {
                Assert.IsFalse(success, message);
                return(default(T));
            }
        }
예제 #2
0
        private void CheckReadCurrentAs(
            String str, TokenType expectedType, Boolean success,
            Token expectedResult, Token expectedCurrent, String message)
        {
            OperandLexer lexer = MakeFrom(str);

            lexer.MoveNext();
            try
            {
                Token actualResult = lexer.ReadCurrentAs(expectedType);
                Assert.IsTrue(success, message);

                TokenTest.Check(expectedResult, actualResult, "Result: " + message);
                CheckCurrentToken(expectedCurrent, lexer, "Current: " + message);
            }
            catch (Casl2SimulatorException)
            {
                Assert.IsFalse(success, message);
            }
        }
        private static void CheckParse(
            String str, Constant[] expectedConstants, TokenType expectedLeftTokenType, String message)
        {
            ReadBuffer   buffer = new ReadBuffer(str);
            OperandLexer lexer  = new OperandLexer(buffer);

            lexer.MoveNext();
            try
            {
                ConstantCollection actualConstants = ConstantCollection.Parse(lexer);

                Assert.IsNotNull(expectedConstants, message);
                TestUtils.CheckEnumerable(expectedConstants, actualConstants, ConstantTest.Check, message);

                TokenType actualLeftTokenType = lexer.CurrentToken.Type;
                Assert.AreEqual(expectedLeftTokenType, actualLeftTokenType, message);
            }
            catch (Casl2SimulatorException)
            {
                Assert.IsNull(expectedConstants, message);
            }
        }
예제 #4
0
        private void CheckMoveNext(String str, Token[] expectedArray, String message)
        {
            OperandLexer lexer = MakeFrom(str);

            expectedArray.ForEach((expected) => CheckMoveNextOne(lexer, expected, message));
        }
예제 #5
0
        private void CheckCurrentToken(Token expected, OperandLexer lexer, String message)
        {
            Token actual = lexer.CurrentToken;

            TokenTest.Check(expected, actual, message);
        }