/
thomas-king
/
Scanner
Обзор
Документация
Войти
/
thomas-king
/
Scanner
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
lib/Tests/ScanExpressionTests.cpp
125 строк
4 KB
Ace Rodstin
Replace GoogleTest with UnitTest.
02 ноя 2023, 18:07
02 ноя 2023, 18:07
8350eca
Код
Авторство
О чём код?
// // ScanExpressionTests.cpp // Scanner // // Created by Ace Rodstin on 11/1/23. // Updated by Ace Rodstin on 11/2/23. // // Copyright © 2023 Ace Rodstin. All rights reserved. // #include "Tests/ScanExpressionTests.h" using namespace tests; ScanExpressionTests::ScanExpressionTests(): TestSuit("ScanExpressionTests", { TestCase("scanLiteralInParenthesis", [&]() { // Given string sourceCode = "(1)"; Punctuator expected1 = Punctuator::LEFT_PARENTHESIS; long long expected2 = 1; Punctuator expected3 = Punctuator::RIGHT_PARENTHESIS; // When Scanner scanner { sourceCode }; auto token1 = scanner.next(); auto result1 = getValue<Punctuator>(token1); auto token2 = scanner.next(); auto literal = getValue<Literal>(token2); auto result2 = getValue<long long>(literal); auto token3 = scanner.next(); auto result3 = getValue<Punctuator>(token3); // Then assertEqual(result1, expected1); assertEqual(result2, expected2); assertEqual(result3, expected3); }), TestCase("scanExpressionInParenthesis", [&]() { // Given string sourceCode = "(1+2)"; Punctuator expected1 = Punctuator::LEFT_PARENTHESIS; long long expected2 = 1; Operator expected3 = Operator::PLUS; long long expected4 = 2; Punctuator expected5 = Punctuator::RIGHT_PARENTHESIS; // When Scanner scanner { sourceCode }; auto token1 = scanner.next(); auto result1 = getValue<Punctuator>(token1); auto token2 = scanner.next(); auto literal2 = getValue<Literal>(token2); auto result2 = getValue<long long>(literal2); auto token3 = scanner.next(); auto result3 = getValue<Operator>(token3); auto token4 = scanner.next(); auto literal4 = getValue<Literal>(token4); auto result4 = getValue<long long>(literal4); auto token5 = scanner.next(); auto result5 = getValue<Punctuator>(token5); // Then assertEqual(result1, expected1); assertEqual(result2, expected2); assertEqual(result3, expected3); assertEqual(result4, expected4); assertEqual(result5, expected5); }), TestCase("scanExpressionWithParanthesis", [&]() { // Given string sourceCode = "(1+2) * 3"; Punctuator expected1 = Punctuator::LEFT_PARENTHESIS; long long expected2 = 1; Operator expected3 = Operator::PLUS; long long expected4 = 2; Punctuator expected5 = Punctuator::RIGHT_PARENTHESIS; Operator expected6 = Operator::MULTIPLY; long long expected7 = 3; // When Scanner scanner { sourceCode }; auto token1 = scanner.next(); auto result1 = getValue<Punctuator>(token1); auto token2 = scanner.next(); auto literal2 = getValue<Literal>(token2); auto result2 = getValue<long long>(literal2); auto token3 = scanner.next(); auto result3 = getValue<Operator>(token3); auto token4 = scanner.next(); auto literal4 = getValue<Literal>(token4); auto result4 = getValue<long long>(literal4); auto token5 = scanner.next(); auto result5 = getValue<Punctuator>(token5); auto token6 = scanner.next(); auto result6 = getValue<Operator>(token6); auto token7 = scanner.next(); auto literal7 = getValue<Literal>(token7); auto result7 = getValue<long long>(literal7); // Then assertEqual(result1, expected1); assertEqual(result2, expected2); assertEqual(result3, expected3); assertEqual(result4, expected4); assertEqual(result5, expected5); assertEqual(result6, expected6); assertEqual(result7, expected7); }), }) {}