MCPcopy Create free account
hub / github.com/BlueAndi/Pixelix / testTokenizer

Function testTokenizer

test/test_TextWidget/TestTextWidget.cpp:125–218  ·  view source on GitHub ↗

* Test the text widget tokenizer. */

Source from the content-addressed store, hash-verified

123 * Test the text widget tokenizer.
124 */
125static void testTokenizer()
126{
127 TWTokenizer tokenizer;
128 TWAbstractSyntaxTree ast;
129 TWAbstractSyntaxTree ast2;
130
131 /* Empty string */
132 TEST_ASSERT_EQUAL(true, tokenizer.parse(ast, ""));
133 TEST_ASSERT_EQUAL(0U, ast.length());
134
135 /* Only keyword */
136 TEST_ASSERT_EQUAL(true, tokenizer.parse(ast, "{abc}"));
137 TEST_ASSERT_EQUAL(1U, ast.length());
138 TEST_ASSERT_EQUAL(TWToken::TYPE_KEYWORD, ast[0U].getType());
139 TEST_ASSERT_EQUAL_STRING("{abc}", ast[0U].getStr().c_str());
140
141 /* Only text */
142 TEST_ASSERT_EQUAL(true, tokenizer.parse(ast, "abc"));
143 TEST_ASSERT_EQUAL(1U, ast.length());
144 TEST_ASSERT_EQUAL(TWToken::TYPE_TEXT, ast[0U].getType());
145 TEST_ASSERT_EQUAL_STRING("abc", ast[0U].getStr().c_str());
146
147 /* Only line feed */
148 TEST_ASSERT_EQUAL(true, tokenizer.parse(ast, "\n"));
149 TEST_ASSERT_EQUAL(1U, ast.length());
150 TEST_ASSERT_EQUAL(TWToken::TYPE_LINE_FEED, ast[0U].getType());
151 TEST_ASSERT_EQUAL_STRING("\n", ast[0U].getStr().c_str());
152
153 /* Text with escape of character */
154 TEST_ASSERT_EQUAL(true, tokenizer.parse(ast, "a\\b"));
155 TEST_ASSERT_EQUAL(1U, ast.length());
156 TEST_ASSERT_EQUAL(TWToken::TYPE_TEXT, ast[0U].getType());
157 TEST_ASSERT_EQUAL_STRING("ab", ast[0U].getStr().c_str());
158
159 /* Text with escaped {} */
160 TEST_ASSERT_EQUAL(true, tokenizer.parse(ast, "a\\{b\\}"));
161 TEST_ASSERT_EQUAL(1U, ast.length());
162 TEST_ASSERT_EQUAL(TWToken::TYPE_TEXT, ast[0U].getType());
163 TEST_ASSERT_EQUAL_STRING("a{b}", ast[0U].getStr().c_str());
164
165 /* Order: keyword, text */
166 TEST_ASSERT_EQUAL(true, tokenizer.parse(ast, "{a}b"));
167 TEST_ASSERT_EQUAL(2U, ast.length());
168 TEST_ASSERT_EQUAL(TWToken::TYPE_KEYWORD, ast[0U].getType());
169 TEST_ASSERT_EQUAL(TWToken::TYPE_TEXT, ast[1U].getType());
170 TEST_ASSERT_EQUAL_STRING("{a}", ast[0U].getStr().c_str());
171 TEST_ASSERT_EQUAL_STRING("b", ast[1U].getStr().c_str());
172
173 /* Order: keyword, keyword, text */
174 TEST_ASSERT_EQUAL(true, tokenizer.parse(ast, "{a}{b}c"));
175 TEST_ASSERT_EQUAL(3U, ast.length());
176 TEST_ASSERT_EQUAL(TWToken::TYPE_KEYWORD, ast[0U].getType());
177 TEST_ASSERT_EQUAL(TWToken::TYPE_KEYWORD, ast[1U].getType());
178 TEST_ASSERT_EQUAL(TWToken::TYPE_TEXT, ast[2U].getType());
179 TEST_ASSERT_EQUAL_STRING("{a}", ast[0U].getStr().c_str());
180 TEST_ASSERT_EQUAL_STRING("{b}", ast[1U].getStr().c_str());
181 TEST_ASSERT_EQUAL_STRING("c", ast[2U].getStr().c_str());
182

Callers

nothing calls this directly

Calls 5

c_strMethod · 0.80
getStrMethod · 0.80
parseMethod · 0.45
lengthMethod · 0.45
getTypeMethod · 0.45

Tested by

no test coverage detected