From 9c5b6a029914fdeea4538a390e618bf8f50a6ff2 Mon Sep 17 00:00:00 2001 From: "Mike D. Lowis" Date: Wed, 30 May 2012 16:57:46 -0400 Subject: [PATCH] Updated unit tests for lexer --- tests/test_dllexer.cpp | 115 ++++++++++++++++++++++++----------------- 1 file changed, 68 insertions(+), 47 deletions(-) diff --git a/tests/test_dllexer.cpp b/tests/test_dllexer.cpp index 60f4e03..1bef778 100644 --- a/tests/test_dllexer.cpp +++ b/tests/test_dllexer.cpp @@ -333,51 +333,72 @@ namespace { delete lexer; } - //TEST(Recognize_Valid_String_Chars) - //{ - // DLLexer* lexer = SetupLexer( "0 1 2 3 4 5 6 7 8 9 " ); - // while( lexer->lookahead(1) != EOF ) - // { - // CHECK( true == lexer->isDigit( lexer->lookahead(1) ) ); - // (void)lexer->next(); - // lexer->WS(); - // } - // delete lexer; - //} - - //TEST(Recognize_Invalid_String_Chars) - //{ - // DLLexer* lexer = SetupLexer( "0 1 2 3 4 5 6 7 8 9 " ); - // while( lexer->lookahead(1) != EOF ) - // { - // CHECK( true == lexer->isDigit( lexer->lookahead(1) ) ); - // (void)lexer->next(); - // lexer->WS(); - // } - // delete lexer; - //} - - //TEST(Recognize_Valid_ID_Chars) - //{ - // DLLexer* lexer = SetupLexer( "0 1 2 3 4 5 6 7 8 9 " ); - // while( lexer->lookahead(1) != EOF ) - // { - // CHECK( true == lexer->isDigit( lexer->lookahead(1) ) ); - // (void)lexer->next(); - // lexer->WS(); - // } - // delete lexer; - //} - - //TEST(Recognize_Invalid_ID_Chars) - //{ - // DLLexer* lexer = SetupLexer( "0 1 2 3 4 5 6 7 8 9 " ); - // while( lexer->lookahead(1) != EOF ) - // { - // CHECK( true == lexer->isDigit( lexer->lookahead(1) ) ); - // (void)lexer->next(); - // lexer->WS(); - // } - // delete lexer; - //} + TEST(Recognize_Valid_String_Chars) + { + // Fill buffer with valid string characters + std::stringstream ss; + for(int i = 0; i < 256; i++) + { + if( (i != '\r') && (i != '\n') && (i != '"') ) + { + ss << (char) i; + } + } + + // Test that the lexer recognizes all valid string chars + DLLexer* lexer = SetupLexer( ss.str() ); + for(int i = 0; i < 256; i++) + { + CHECK( true == lexer->isStringChar() ); + lexer->consume(); + } + delete lexer; + } + + TEST(Recognize_Invalid_String_Chars) + { + DLLexer* lexer = SetupLexer( "\r\n\"" ); + CHECK( false == lexer->isDigit( lexer->lookahead(1) ) ); + lexer->consume(); + CHECK( false == lexer->isDigit( lexer->lookahead(1) ) ); + lexer->consume(); + CHECK( false == lexer->isDigit( lexer->lookahead(1) ) ); + lexer->consume(); + delete lexer; + } + + TEST(Recognize_Valid_ID_Chars) + { + // Fill buffer with valid ID characters + std::stringstream ss; + for(int i = 0; i < 255; i++) + { + if( (i != '\r') && (i != '\n') && (i != ' ') && (i != '\t') && + (i != '(') && (i != ')') && (i != '#') && (i != EOF) ) + { + ss << (char) i; + } + } + + // Test that the lexer recognizes all valid ID chars + DLLexer* lexer = SetupLexer( ss.str() ); + for(int i = 0; i < ss.str().size(); i++) + { + CHECK( true == lexer->isIDChar() ); + lexer->consume(); + } + delete lexer; + } + + TEST(Recognize_Invalid_ID_Chars) + { + DLLexer* lexer = SetupLexer( "\r\n \t()#" ); + for(int i = 0; i < 8; i++) + { + CHECK( false == lexer->isIDChar() ); + lexer->consume(); + } + delete lexer; + } + } -- 2.52.0