module Tests; import Core.File; import Core.Logger; import Core.Test; import Core.Std; import ErrorSimulator; static int failIndex = 0; static const char* fails[] = { "cannot read file 'gdfgdfg'", "cannot seek file end of 'testData/someFile'", "cannot tell file position of 'testData/someFile'", "cannot seek file start of 'testData/someFile'", "expected to read 20 bytes from 'testData/someFile' but read 20", "cannot close file 'testData/someFile'"}; static void printReport( Core::LogLevel l, const std::source_location&, void*, const char* message) { Core::test(static_cast(Core::LogLevel::ERROR), static_cast(l)); if(!Core::testTrue(strstr(message, fails[failIndex]) != nullptr)) { Core::logError("'{}' does not contain '{}'", message, fails[failIndex]); } } static void testExistingFile() { Core::List f; if(!Core::testFalse(readFile(f, "testData/someFile"))) { return; } Core::test(21lu, f.getLength()); Core::testString("Just\nSome\nTest File\n", &f[0]); } static void testNotExistingFile() { Core::List f; Core::testTrue(readFile(f, "gdfgdfg")); } static void testFails(int steps) { (void)steps; #ifdef ERROR_SIMULATOR failStep = steps; failIndex = steps; Core::List f; Core::testTrue(readFile(f, "testData/someFile")); failStep = -1; #endif } void testFile() { Core::setReportHandler(printReport, nullptr); testExistingFile(); testNotExistingFile(); for(int i = 1; i < 6; i++) { testFails(i); } Core::setReportHandler(nullptr, nullptr); }