#include #include "../Tests.hpp" #include "../src/ErrorSimulator.hpp" #include "core/Clock.hpp" #include "core/ReadLine.hpp" #include "core/Test.hpp" static void testStringError(int line, const char* s) { char buffer[256]; for(int i = 0; i < 200; i++) { if(Core::readLine(buffer, sizeof(buffer))) { break; } Core::Clock::sleepMillis(10); } if(!Core::testString(__FILE__, line, s, buffer)) { const char* p = buffer; printf("Invalid sequence: "); while(*p != 0) { printf("%u ", static_cast(*p & 0xFF)); p++; } putchar('\n'); p = s; printf("Correct sequence: "); while(*p != 0) { printf("%u ", static_cast(*p & 0xFF)); p++; } putchar('\n'); } } void testReadLine() { #ifdef ERROR_SIMULATOR failStepThrow = 1; if(!TEST_TRUE(Core::startReadLine())) { return; } failStepThrow = 0; #endif if(!TEST_FALSE(Core::startReadLine())) { return; } testStringError(__LINE__, "wusi"); testStringError(__LINE__, "gusi"); testStringError(__LINE__, "abc"); testStringError(__LINE__, "abc"); testStringError(__LINE__, "abd"); testStringError(__LINE__, "abö"); testStringError(__LINE__, "ghi"); testStringError(__LINE__, "abcghi"); testStringError(__LINE__, "abcghi"); testStringError(__LINE__, "abö"); testStringError(__LINE__, "abac"); testStringError( __LINE__, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbb"); testStringError(__LINE__, "abäo"); testStringError(__LINE__, "bäöo"); Core::stopReadLine(); }