예제 #1
0
        public void RaiseWhenInvalidCharacter()
        {
            Lexer lexer = new Lexer("[");

            MyAssert.Throws <LexerException>(() => lexer.NextToken(),
                                             "Unexpected '['");
        }
예제 #2
0
        public void RaiseWhenUnclosedString()
        {
            Lexer lexer = new Lexer("\"foo");

            MyAssert.Throws <LexerException>(() => lexer.NextToken(),
                                             "Unclosed String");
        }
예제 #3
0
        public void RaiseWhenUnknownVerb()
        {
            Parser parser = new Parser("rule\r\nwhen\r\na foo b");

            MyAssert.Throws <LexerException>(() => parser.ParseRule(),
                                             "Unexpected 'foo'");
        }
예제 #4
0
        public void RaiseWhenNoRule()
        {
            Parser parser = new Parser(new StringReader("foo"));

            MyAssert.Throws <LexerException>(() => parser.ParseRule(),
                                             "Expected 'rule'");
        }
예제 #5
0
        public void RaiseWhenNoValueInCondition()
        {
            Parser parser = new Parser("rule\r\nwhen\r\na is");

            MyAssert.Throws <LexerException>(() => parser.ParseRule(),
                                             "Unexpected End of Input");
        }
예제 #6
0
        public void RaiseWhenNoWhenInRule()
        {
            Parser parser = new Parser("rule\r\n1 is a");

            MyAssert.Throws <LexerException>(() => parser.ParseRule(),
                                             "Expected 'when'");
        }
예제 #7
0
        public void RaiseWhenNoNameAtStartOfCondition()
        {
            Parser parser = new Parser("rule\r\nwhen\r\n1 is a");

            MyAssert.Throws <LexerException>(() => parser.ParseRule(),
                                             "Expected Name");
        }
예제 #8
0
        public void RaiseWhenUnexpectedValueInCondition()
        {
            Parser parser = new Parser("rule\r\nwhen\r\na is <=");

            MyAssert.Throws <LexerException>(() => parser.ParseRule(),
                                             "Unexpected '<='");
        }
예제 #9
0
        public void RaiseWhenVerbIsANumber()
        {
            Parser parser = new Parser("rule\r\nwhen\r\na 1 b\r\nthen\r\na\r\nend");

            MyAssert.Throws <LexerException>(() => parser.ParseRule(),
                                             "Unexpected '1'");
        }
예제 #10
0
 public void TestIncorrectPath()
 {
     MyAssert.Throws <ArgumentException>(() => new Route("test", null, null));
     MyAssert.Throws <ArgumentException>(() => new Route("/test>", null, null));
     MyAssert.Throws <ArgumentException>(() => new Route("/<test", null, null));
     MyAssert.Throws <ArgumentException>(() => new Route("/[test", null, null));
     MyAssert.Throws <ArgumentException>(() => new Route("/<test]", null, null));
     MyAssert.Throws <ArgumentException>(() => new Route("/test]", null, null));
     MyAssert.Throws <ArgumentException>(() => new Route("/test/[test]", null, null));
     MyAssert.Throws <ArgumentException>(() => new Route("/<test>[/test", null, null));
     MyAssert.Throws <ArgumentException>(() => new Route("/test[/<test]", null, null));
     MyAssert.Throws <ArgumentException>(() => new Route("/test[/test>]", null, null));
     MyAssert.Throws <ArgumentException>(() => new Route("/test[/<test]>", null, null));
     MyAssert.Throws <ArgumentException>(() => new Route("/test/", null, null));
     MyAssert.Throws <ArgumentException>(() => new Route("/<>", null, null));
     MyAssert.Throws <ArgumentException>(() => new Route("/test[/]", null, null));
     MyAssert.Throws <ArgumentException>(() => new Route("/test[/<>]", null, null));
 }
예제 #11
0
        public void RaiseWhenTwoManyWordsInCondition()
        {
            Parser parser = new Parser("rule\r\nwhen\r\na is 48 c");

            MyAssert.Throws <LexerException>(() => parser.ParseRule(), "Expected End of Line/Input");
        }