int main() { lexer1(); lexer2(); lexer1(); }
void fixture::testLexer() { wxExSTC* stc = new wxExSTC(m_Frame, "hello stc"); wxExLexer lexer; CPPUNIT_ASSERT(!lexer.IsOk()); CPPUNIT_ASSERT( wxExLexer("cpp").IsOk()); CPPUNIT_ASSERT( wxExLexer("pascal").IsOk()); CPPUNIT_ASSERT(!wxExLexer("xxx").IsOk()); lexer = wxExLexers::Get()->FindByText("XXXX"); CPPUNIT_ASSERT(!lexer.IsOk()); lexer = wxExLexers::Get()->FindByText("<html>"); CPPUNIT_ASSERT( lexer.IsOk()); CPPUNIT_ASSERT( lexer.GetDisplayLexer() == "hypertext"); lexer = wxExLexers::Get()->FindByText("// this is a cpp comment text"); CPPUNIT_ASSERT( lexer.IsOk()); CPPUNIT_ASSERT( wxExLexer(lexer).IsOk()); CPPUNIT_ASSERT( lexer.GetDisplayLexer() == "cpp"); CPPUNIT_ASSERT( lexer.GetScintillaLexer() == "cpp"); CPPUNIT_ASSERT(!lexer.GetExtensions().empty()); CPPUNIT_ASSERT(!lexer.GetCommentBegin().empty()); CPPUNIT_ASSERT(!lexer.GetCommentBegin2().empty()); CPPUNIT_ASSERT( lexer.GetCommentEnd().empty()); CPPUNIT_ASSERT(!lexer.GetCommentEnd2().empty()); CPPUNIT_ASSERT( lexer.GetLanguage().empty()); CPPUNIT_ASSERT(!lexer.GetKeywords().empty()); CPPUNIT_ASSERT(!lexer.GetKeywordsString().empty()); CPPUNIT_ASSERT(!lexer.GetKeywordsString(-1, 0).empty()); CPPUNIT_ASSERT(!lexer.GetKeywordsString(-1, 6).empty()); CPPUNIT_ASSERT( lexer.GetKeywordsString(-1, 8).Contains("for_each")); CPPUNIT_ASSERT(!lexer.GetKeywordsString(-1, 9).Contains("for_each")); CPPUNIT_ASSERT( lexer.GetKeywordsString(-1, 50).empty()); CPPUNIT_ASSERT( lexer.CommentComplete("// test").empty()); CPPUNIT_ASSERT( lexer.IsKeyword("class")); CPPUNIT_ASSERT( lexer.IsKeyword("const")); CPPUNIT_ASSERT( lexer.KeywordStartsWith("cla")); CPPUNIT_ASSERT(!lexer.KeywordStartsWith("xxx")); CPPUNIT_ASSERT(!lexer.MakeComment("test", true).empty()); CPPUNIT_ASSERT(!lexer.MakeComment("test", "test").empty()); CPPUNIT_ASSERT(!lexer.MakeSingleLineComment("test").empty()); CPPUNIT_ASSERT( lexer.GetKeywordsString(6).empty()); CPPUNIT_ASSERT( lexer.AddKeywords("hello:1")); CPPUNIT_ASSERT( lexer.AddKeywords("more:1")); CPPUNIT_ASSERT( lexer.AddKeywords( "test11 test21:1 test31:1 test12:2 test22:2")); CPPUNIT_ASSERT( lexer.AddKeywords("final", 6)); CPPUNIT_ASSERT(!lexer.AddKeywords("")); CPPUNIT_ASSERT(!lexer.AddKeywords("xxx:1", -1)); CPPUNIT_ASSERT(!lexer.AddKeywords("xxx:1", 100)); CPPUNIT_ASSERT(!lexer.GetKeywordsString(6).empty()); CPPUNIT_ASSERT( lexer.IsKeyword("hello")); CPPUNIT_ASSERT( lexer.IsKeyword("more")); CPPUNIT_ASSERT( lexer.IsKeyword("class")); CPPUNIT_ASSERT( lexer.IsKeyword("test11")); CPPUNIT_ASSERT( lexer.IsKeyword("test21")); CPPUNIT_ASSERT( lexer.IsKeyword("test12")); CPPUNIT_ASSERT( lexer.IsKeyword("test22")); CPPUNIT_ASSERT( lexer.IsKeyword("test31")); CPPUNIT_ASSERT( lexer.IsKeyword("final")); CPPUNIT_ASSERT(!lexer.IsKeyword("xxx")); CPPUNIT_ASSERT( lexer.KeywordStartsWith("te")); CPPUNIT_ASSERT(!lexer.KeywordStartsWith("xx")); CPPUNIT_ASSERT(!lexer.GetKeywords().empty()); lexer.SetProperty("test", "value"); wxString val; for (auto p : lexer.GetProperties()) { if (p.GetName() == "test") { val = p.GetValue(); break; } } CPPUNIT_ASSERT(val == "value"); CPPUNIT_ASSERT( lexer.Set("pascal", stc)); CPPUNIT_ASSERT( lexer.GetDisplayLexer() == "pascal"); CPPUNIT_ASSERT( lexer.GetScintillaLexer() == "pascal"); CPPUNIT_ASSERT(!lexer.CommentComplete("(*test").empty()); CPPUNIT_ASSERT( lexer.CommentComplete("(*test").EndsWith(" *)")); wxExLexer lexer2(wxExLexers::Get()->FindByText("// this is a cpp comment text")); CPPUNIT_ASSERT( lexer2.IsOk()); CPPUNIT_ASSERT( lexer2.GetDisplayLexer() == "cpp"); CPPUNIT_ASSERT( lexer2.GetScintillaLexer() == "cpp"); CPPUNIT_ASSERT( lexer2.Set(lexer, stc)); CPPUNIT_ASSERT( lexer2.GetDisplayLexer() == "pascal"); CPPUNIT_ASSERT( lexer2.GetScintillaLexer() == "pascal"); CPPUNIT_ASSERT(!lexer2.CommentComplete("(*test").empty()); CPPUNIT_ASSERT( lexer2.CommentComplete("(*test").EndsWith(" *)")); lexer.Reset(stc); CPPUNIT_ASSERT( lexer.GetDisplayLexer().empty()); CPPUNIT_ASSERT( lexer.GetScintillaLexer().empty()); CPPUNIT_ASSERT( lexer.Set("xsl", stc)); CPPUNIT_ASSERT( lexer.GetLanguage() == "xml"); }