Files
video-shader-toys/tests/RenderCadenceCompositorLoggerTests.cpp
Aiden 44b198b14d
All checks were successful
CI / React UI Build (push) Successful in 38s
CI / Native Windows Build And Tests (push) Successful in 3m12s
CI / Windows Release Package (push) Successful in 3m7s
logging
2026-05-12 11:58:29 +10:00

89 lines
2.2 KiB
C++

#include "Logger.h"
#include <chrono>
#include <iostream>
#include <string>
#include <thread>
namespace
{
int gFailures = 0;
void Expect(bool condition, const std::string& message)
{
if (condition)
return;
++gFailures;
std::cerr << "FAILED: " << message << "\n";
}
void TestLevelNames()
{
using namespace RenderCadenceCompositor;
Expect(std::string(LogLevelName(LogLevel::Log)) == "log", "log level name");
Expect(std::string(LogLevelName(LogLevel::Warning)) == "warning", "warning level name");
Expect(std::string(LogLevelName(LogLevel::Error)) == "error", "error level name");
}
void TestLevelFiltering()
{
using namespace RenderCadenceCompositor;
LoggerConfig config;
config.minimumLevel = LogLevel::Warning;
config.writeToConsole = false;
config.writeToDebugOutput = false;
config.writeToFile = false;
config.maxQueuedMessages = 16;
Logger& logger = Logger::Instance();
logger.Start(config);
logger.Write(LogLevel::Log, "test", "filtered");
logger.Write(LogLevel::Warning, "test", "kept");
logger.Write(LogLevel::Error, "test", "kept");
logger.Stop();
const LoggerCounters counters = logger.Counters();
Expect(counters.queued == 2, "logger queues only messages at or above minimum level");
Expect(counters.written == 2, "logger writes queued messages before stop returns");
Expect(counters.dropped == 0, "logger does not drop under queue capacity");
}
void TestTryWriteDropsWhenQueueIsFull()
{
using namespace RenderCadenceCompositor;
LoggerConfig config;
config.minimumLevel = LogLevel::Log;
config.writeToConsole = false;
config.writeToDebugOutput = false;
config.writeToFile = false;
config.maxQueuedMessages = 0;
Logger& logger = Logger::Instance();
logger.Start(config);
const bool sawDrop = !logger.TryWrite(LogLevel::Log, "test", "message");
logger.Stop();
Expect(sawDrop || logger.Counters().dropped > 0, "try-write reports or counts queue pressure");
}
}
int main()
{
TestLevelNames();
TestLevelFiltering();
TestTryWriteDropsWhenQueueIsFull();
if (gFailures != 0)
{
std::cerr << gFailures << " RenderCadenceCompositorLogger test failure(s).\n";
return 1;
}
std::cout << "RenderCadenceCompositorLogger tests passed.\n";
return 0;
}