#include <clocale>
#include <core/Logger.hpp>
#include <core/Utility.hpp>
#include <cstdio>
#include <cstring>

#include "Tests.hpp"

static void reportHandler(
    Core::LogLevel, const char*, int, void*, const char* message) {
    if(useReport) {
        LOG_ERROR(message);
    }
}

int main(int argAmount, char** args) {
    if(argAmount >= 2 && strcmp(args[1], "help") == 0) {
        puts("test");
        return 0;
    }
    setlocale(LC_ALL, "en_US.utf8");
    Core::setReportHandler(reportHandler, nullptr);
    if(argAmount < 2) {
        LOG_ERROR("missing mode");
        return 0;
    } else if(strcmp("test", args[1]) == 0) {
        testImageReader("test/resources");
        testNetwork();
    } else if(strcmp("window", args[1]) == 0) {
        testWindow();
    }
    Core::finalizeTests();
    Core::printMemoryReport();
    return 0;
}