void LogHandlerTest() { OriginalLogHandler = GetLogHandler(); dummyAddCleanup( []( void* _ ){ SetLogHandler(OriginalLogHandler); }, NULL); SetLogHandler([]( LogLevel level, const char* line ){ dummyLog("level=%d line='%s'", level, line); CallCount++; switch(CallCount) { case 1: Require(level == LOG_INFO); Require(strcmp(line, "foo") == 0); break; case 2: Require(level == LOG_ERROR); Require(strcmp(line, "bar") == 0); break; case 3: Require(level == LOG_INFO); Require(strcmp(line, "aaa") == 0); break; case 4: Require(level == LOG_INFO); Require(strcmp(line, "bbb") == 0); break; case 5: Require(level == LOG_INFO); Require(strcmp(line, "ccc") == 0); break; case 6: Require(level == LOG_INFO); Require(strcmp(line, "") == 0); break; default: dummyAbortTest(DUMMY_FAIL_TEST, "Invalid log handler call count: %d", CallCount); } }); CallCount = 0; Log("foo"); Error("bar"); Log("aaa\nbbb"); Log("ccc\n"); Require(CallCount == 6); }
void Level1() { dummyLog("Level1 called!"); level2Sandbox(Level2, NULL); dummyRequire(2+2 == 5); }
void Level2() { dummyLog("Level2 called!"); }