#include <doctest.h>

#include "cpp/Versioning.hpp"

TEST_CASE("Versioning")
{
    unsigned val = CPP_VERSION_CREATE(3, 1, 4);

    CHECK_EQ(CPP_VERSION_EXTRACT_MAJOR(val), 3);
    CHECK_EQ(CPP_VERSION_EXTRACT_MINOR(val), 1);
    CHECK_EQ(CPP_VERSION_EXTRACT_PATCH(val), 4);

    val = CPP_VERSION_CREATE(0, 0, 0);

    CHECK_EQ(CPP_VERSION_EXTRACT_MAJOR(val), 0);
    CHECK_EQ(CPP_VERSION_EXTRACT_MINOR(val), 0);
    CHECK_EQ(CPP_VERSION_EXTRACT_PATCH(val), 0);

    val = CPP_VERSION_CREATE(2, 55, 13);

    CHECK_EQ(CPP_VERSION_EXTRACT_MAJOR(val), 2);
    CHECK_EQ(CPP_VERSION_EXTRACT_MINOR(val), 55);
    CHECK_EQ(CPP_VERSION_EXTRACT_PATCH(val), 13);

    val = CPP_VERSION_CREATE(255, 255, 255);

    CHECK_EQ(CPP_VERSION_EXTRACT_MAJOR(val), 255);
    CHECK_EQ(CPP_VERSION_EXTRACT_MINOR(val), 255);
    CHECK_EQ(CPP_VERSION_EXTRACT_PATCH(val), 255);
}
