module Tests; import Core.Clock; import Core.ReadLine; import Core.Test; import Core.Std; import Core.ToString; import ErrorSimulator; static void testStringError( const char* s, const std::source_location& l = std::source_location::current()) { char buffer[256]; for(int i = 0; i < 200; i++) { if(Core::readLine(buffer, sizeof(buffer))) { break; } Core::Clock::sleepMillis(10); } if(!Core::testString(s, buffer, l)) { const char* p = buffer; Core::print("Invalid sequence: "); while(*p != 0) { Core::print("{} ", static_cast(*p & 0xFF)); p++; } putchar('\n'); p = s; Core::print("Correct sequence: "); while(*p != 0) { Core::print("{} ", static_cast(*p & 0xFF)); p++; } putchar('\n'); } } void testReadLine() { #ifdef ERROR_SIMULATOR failStepThrow = 1; if(!Core::testTrue(Core::startReadLine())) { return; } failStepThrow = 0; #endif if(!Core::testFalse(Core::startReadLine())) { return; } testStringError("wusi"); testStringError("gusi"); testStringError("abc"); testStringError("abc"); testStringError("abd"); testStringError("abö"); testStringError("ghi"); testStringError("abcghi"); testStringError("abcghi"); testStringError("abö"); testStringError("abac"); testStringError( "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbb"); testStringError("abäo"); testStringError("bäöo"); Core::stopReadLine(); }