72 lines
2.7 KiB
C++
72 lines
2.7 KiB
C++
#ifdef TESTS_BUILD
|
|
#include <cstring>
|
|
#include "../extern/catch.hpp"
|
|
#include "../src/Enum.hpp"
|
|
|
|
ENUM(TestEnum, uint8_t, Val1, Val2, Val3)
|
|
|
|
TEST_CASE("Parse Enum case sensitive", "[Utilities]") {
|
|
CHECK(TestEnumHelper::Parse("Val1") == TestEnum::Val1);
|
|
CHECK(TestEnumHelper::Parse("Val2") == TestEnum::Val2);
|
|
CHECK(TestEnumHelper::Parse("Val3") == TestEnum::Val3);
|
|
CHECK_THROWS(TestEnumHelper::Parse("Val4"));
|
|
CHECK_THROWS(TestEnumHelper::Parse("val1"));
|
|
}
|
|
|
|
TEST_CASE("Try Parse Enum case sensitive", "[Utilities]") {
|
|
TestEnum v = static_cast<TestEnum>(255);
|
|
REQUIRE(TestEnumHelper::TryParse("Val1", v));
|
|
CHECK(v == TestEnum::Val1);
|
|
REQUIRE(TestEnumHelper::TryParse("Val2", v));
|
|
CHECK(v == TestEnum::Val2);
|
|
REQUIRE(TestEnumHelper::TryParse("Val3", v));
|
|
CHECK(v == TestEnum::Val3);
|
|
CHECK_FALSE(TestEnumHelper::TryParse("Val4", v));
|
|
CHECK_FALSE(TestEnumHelper::TryParse("val1", v));
|
|
}
|
|
|
|
TEST_CASE("Parse Enum case insensitive", "[Utilities]") {
|
|
CHECK(TestEnumHelper::Parse("Val1", true) == TestEnum::Val1);
|
|
CHECK(TestEnumHelper::Parse("Val2", true) == TestEnum::Val2);
|
|
CHECK(TestEnumHelper::Parse("Val3", true) == TestEnum::Val3);
|
|
CHECK(TestEnumHelper::Parse("val1", true) == TestEnum::Val1);
|
|
CHECK(TestEnumHelper::Parse("vAL2", true) == TestEnum::Val2);
|
|
CHECK(TestEnumHelper::Parse("VaL3", true) == TestEnum::Val3);
|
|
CHECK_THROWS(TestEnumHelper::Parse("Val4", true));
|
|
}
|
|
|
|
TEST_CASE("Try Parse Enum case insensitive", "[Utilities]") {
|
|
TestEnum v = static_cast<TestEnum>(255);
|
|
REQUIRE(TestEnumHelper::TryParse("Val1", v, true));
|
|
CHECK(v == TestEnum::Val1);
|
|
REQUIRE(TestEnumHelper::TryParse("Val2", v, true));
|
|
CHECK(v == TestEnum::Val2);
|
|
REQUIRE(TestEnumHelper::TryParse("Val3", v, true));
|
|
CHECK(v == TestEnum::Val3);
|
|
REQUIRE(TestEnumHelper::TryParse("val1", v, true));
|
|
CHECK(v == TestEnum::Val1);
|
|
REQUIRE(TestEnumHelper::TryParse("vAL2", v, true));
|
|
CHECK(v == TestEnum::Val2);
|
|
REQUIRE(TestEnumHelper::TryParse("VaL3", v, true));
|
|
CHECK(v == TestEnum::Val3);
|
|
CHECK_FALSE(TestEnumHelper::TryParse("Val4", v, true));
|
|
}
|
|
|
|
TEST_CASE("Enum To String", "[Utilities]") {
|
|
CHECK(strcmp(TestEnumHelper::ToString(TestEnum::Val1), "Val1") == 0);
|
|
CHECK(strcmp(TestEnumHelper::ToString(TestEnum::Val2), "Val2") == 0);
|
|
CHECK(strcmp(TestEnumHelper::ToString(TestEnum::Val3), "Val3") == 0);
|
|
auto s = TestEnumHelper::ToString((TestEnum)100);
|
|
CHECK(strcmp(s, "100") == 0);
|
|
delete[] s;
|
|
}
|
|
|
|
TEST_CASE("Enum Get Values", "[Utilities]") {
|
|
auto vec = TestEnumHelper::GetValues();
|
|
REQUIRE(vec.size() == 3);
|
|
CHECK(vec[0] == TestEnum::Val1);
|
|
CHECK(vec[1] == TestEnum::Val2);
|
|
CHECK(vec[2] == TestEnum::Val3);
|
|
}
|
|
|
|
#endif |