summaryrefslogtreecommitdiff
path: root/Source/UnitTests/Common/EnumFormatterTest.cpp
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2021-03-07 00:21:11 -0500
committerGitHub <noreply@github.com>2021-03-07 00:21:11 -0500
commit089250fde65c2e225681c0ef6917d28fa187e8de (patch)
treebcbb6db025c6003bd681e0028f0bc3b7b223bd07 /Source/UnitTests/Common/EnumFormatterTest.cpp
parent5f7d935b0a40f5cece7341927bd92b6a8d5debbe (diff)
parentdf81210e96c6603d3aeb6c76f51b030d06cd06ac (diff)
Merge pull request #9497 from Pokechu22/better-fifo-analyzer
Graphics refactoring + add names and descriptions in FIFO analyzer
Diffstat (limited to 'Source/UnitTests/Common/EnumFormatterTest.cpp')
-rw-r--r--Source/UnitTests/Common/EnumFormatterTest.cpp67
1 files changed, 67 insertions, 0 deletions
diff --git a/Source/UnitTests/Common/EnumFormatterTest.cpp b/Source/UnitTests/Common/EnumFormatterTest.cpp
new file mode 100644
index 0000000000..fb713db2f2
--- /dev/null
+++ b/Source/UnitTests/Common/EnumFormatterTest.cpp
@@ -0,0 +1,67 @@
+// Copyright 2021 Dolphin Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#include <gtest/gtest.h>
+
+#include "Common/CommonTypes.h"
+#include "Common/EnumFormatter.h"
+
+enum class Enum1 : u32
+{
+ A = 0,
+ B = 1,
+ C = 2,
+};
+
+template <>
+struct fmt::formatter<Enum1> : EnumFormatter<Enum1::C>
+{
+ formatter() : EnumFormatter({"A", "B", "C"}) {}
+};
+
+enum class Enum2 : s32
+{
+ D = 0,
+ E = 1,
+ F = 3,
+};
+
+template <>
+struct fmt::formatter<Enum2> : EnumFormatter<Enum2::F>
+{
+ static constexpr array_type names = {"D", "E", nullptr, "F"};
+ formatter() : EnumFormatter(names) {}
+};
+
+TEST(EnumUtil, Enum1)
+{
+ EXPECT_EQ(fmt::to_string(Enum1::A), "A (0)");
+ EXPECT_EQ(fmt::to_string(Enum1::B), "B (1)");
+ EXPECT_EQ(fmt::to_string(Enum1::C), "C (2)");
+ EXPECT_EQ(fmt::to_string(static_cast<Enum1>(3)), "Invalid (3)");
+ EXPECT_EQ(fmt::to_string(static_cast<Enum1>(4)), "Invalid (4)");
+
+ EXPECT_EQ(fmt::format("{:s}", Enum1::A), "0x0u /* A */");
+ EXPECT_EQ(fmt::format("{:s}", Enum1::B), "0x1u /* B */");
+ EXPECT_EQ(fmt::format("{:s}", Enum1::C), "0x2u /* C */");
+ EXPECT_EQ(fmt::format("{:s}", static_cast<Enum1>(3)), "0x3u /* Invalid */");
+ EXPECT_EQ(fmt::format("{:s}", static_cast<Enum1>(4)), "0x4u /* Invalid */");
+}
+
+TEST(EnumUtil, Enum2)
+{
+ EXPECT_EQ(fmt::to_string(Enum2::D), "D (0)");
+ EXPECT_EQ(fmt::to_string(Enum2::E), "E (1)");
+ EXPECT_EQ(fmt::to_string(static_cast<Enum2>(2)), "Invalid (2)");
+ EXPECT_EQ(fmt::to_string(Enum2::F), "F (3)");
+ EXPECT_EQ(fmt::to_string(static_cast<Enum2>(4)), "Invalid (4)");
+ EXPECT_EQ(fmt::to_string(static_cast<Enum2>(-1)), "Invalid (-1)");
+
+ EXPECT_EQ(fmt::format("{:s}", Enum2::D), "0x0u /* D */");
+ EXPECT_EQ(fmt::format("{:s}", Enum2::E), "0x1u /* E */");
+ EXPECT_EQ(fmt::format("{:s}", static_cast<Enum2>(2)), "0x2u /* Invalid */");
+ EXPECT_EQ(fmt::format("{:s}", Enum2::F), "0x3u /* F */");
+ EXPECT_EQ(fmt::format("{:s}", static_cast<Enum2>(4)), "0x4u /* Invalid */");
+ EXPECT_EQ(fmt::format("{:s}", static_cast<Enum2>(-1)), "0xffffffffu /* Invalid */");
+}