From: Mike D. Lowis Date: Wed, 30 May 2012 20:57:46 +0000 (-0400) Subject: Updated unit tests for lexer X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=9c5b6a029914fdeea4538a390e618bf8f50a6ff2;p=archive%2Fdlang.git Updated unit tests for lexer --- 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; + } + }