xref: /aosp_15_r20/external/openscreen/util/enum_name_table_unittest.cc (revision 3f982cf4871df8771c9d4abe6e9a6f8d829b2736)
1*3f982cf4SFabien Sanglard // Copyright 2020 The Chromium Authors. All rights reserved.
2*3f982cf4SFabien Sanglard // Use of this source code is governed by a BSD-style license that can be
3*3f982cf4SFabien Sanglard // found in the LICENSE file.
4*3f982cf4SFabien Sanglard 
5*3f982cf4SFabien Sanglard #include "util/enum_name_table.h"
6*3f982cf4SFabien Sanglard 
7*3f982cf4SFabien Sanglard #include "gmock/gmock.h"
8*3f982cf4SFabien Sanglard #include "gtest/gtest.h"
9*3f982cf4SFabien Sanglard 
10*3f982cf4SFabien Sanglard namespace openscreen {
11*3f982cf4SFabien Sanglard 
12*3f982cf4SFabien Sanglard namespace {
13*3f982cf4SFabien Sanglard 
14*3f982cf4SFabien Sanglard enum class TestEnum { kFoo = -1, kBar, kBaz = 100, kBuzz };
15*3f982cf4SFabien Sanglard 
16*3f982cf4SFabien Sanglard constexpr EnumNameTable<TestEnum, 4> kTestEnumNames{{
17*3f982cf4SFabien Sanglard     {"foo", TestEnum::kFoo},
18*3f982cf4SFabien Sanglard     {"bar", TestEnum::kBar},
19*3f982cf4SFabien Sanglard     {"baz", TestEnum::kBaz},
20*3f982cf4SFabien Sanglard     {"buzz", TestEnum::kBuzz},
21*3f982cf4SFabien Sanglard }};
22*3f982cf4SFabien Sanglard 
23*3f982cf4SFabien Sanglard constexpr EnumNameTable<TestEnum, 1> kTestEnumNamesMissing{{
24*3f982cf4SFabien Sanglard     {"foo", TestEnum::kFoo},
25*3f982cf4SFabien Sanglard }};
26*3f982cf4SFabien Sanglard 
27*3f982cf4SFabien Sanglard constexpr EnumNameTable<TestEnum, 0> kTestEnumNamesEmpty{};
28*3f982cf4SFabien Sanglard 
29*3f982cf4SFabien Sanglard }  // namespace
30*3f982cf4SFabien Sanglard 
TEST(EnumNameTable,GetEnumNameValid)31*3f982cf4SFabien Sanglard TEST(EnumNameTable, GetEnumNameValid) {
32*3f982cf4SFabien Sanglard   EXPECT_STREQ("foo", GetEnumName(kTestEnumNames, TestEnum::kFoo).value());
33*3f982cf4SFabien Sanglard   EXPECT_STREQ("bar", GetEnumName(kTestEnumNames, TestEnum::kBar).value());
34*3f982cf4SFabien Sanglard   EXPECT_STREQ("baz", GetEnumName(kTestEnumNames, TestEnum::kBaz).value());
35*3f982cf4SFabien Sanglard   EXPECT_STREQ("buzz", GetEnumName(kTestEnumNames, TestEnum::kBuzz).value());
36*3f982cf4SFabien Sanglard }
37*3f982cf4SFabien Sanglard 
TEST(EnumNameTable,GetEnumNameMissing)38*3f982cf4SFabien Sanglard TEST(EnumNameTable, GetEnumNameMissing) {
39*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnumName(kTestEnumNamesMissing, TestEnum::kBar).is_value());
40*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnumName(kTestEnumNamesMissing, TestEnum::kBaz).is_value());
41*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnumName(kTestEnumNamesMissing, TestEnum::kBuzz).is_value());
42*3f982cf4SFabien Sanglard }
43*3f982cf4SFabien Sanglard 
TEST(EnumNameTable,GetEnumNameEmpty)44*3f982cf4SFabien Sanglard TEST(EnumNameTable, GetEnumNameEmpty) {
45*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnumName(kTestEnumNamesEmpty, TestEnum::kBar).is_value());
46*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnumName(kTestEnumNamesEmpty, TestEnum::kBaz).is_value());
47*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnumName(kTestEnumNamesEmpty, TestEnum::kBuzz).is_value());
48*3f982cf4SFabien Sanglard }
49*3f982cf4SFabien Sanglard 
TEST(EnumNameTable,GetEnumValid)50*3f982cf4SFabien Sanglard TEST(EnumNameTable, GetEnumValid) {
51*3f982cf4SFabien Sanglard   EXPECT_EQ(TestEnum::kFoo, GetEnum(kTestEnumNames, "foo").value());
52*3f982cf4SFabien Sanglard   EXPECT_EQ(TestEnum::kBar, GetEnum(kTestEnumNames, "bar").value());
53*3f982cf4SFabien Sanglard   EXPECT_EQ(TestEnum::kBaz, GetEnum(kTestEnumNames, "baz").value());
54*3f982cf4SFabien Sanglard   EXPECT_EQ(TestEnum::kBuzz, GetEnum(kTestEnumNames, "buzz").value());
55*3f982cf4SFabien Sanglard }
56*3f982cf4SFabien Sanglard 
TEST(EnumNameTable,GetEnumMissing)57*3f982cf4SFabien Sanglard TEST(EnumNameTable, GetEnumMissing) {
58*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnum(kTestEnumNames, "").is_value());
59*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnum(kTestEnumNames, "1").is_value());
60*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnum(kTestEnumNames, "foobar").is_value());
61*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnum(kTestEnumNamesMissing, "bar").is_value());
62*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnum(kTestEnumNamesMissing, "baz").is_value());
63*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnum(kTestEnumNamesMissing, "buzz").is_value());
64*3f982cf4SFabien Sanglard }
65*3f982cf4SFabien Sanglard 
TEST(EnumNameTable,GetEnumEmpty)66*3f982cf4SFabien Sanglard TEST(EnumNameTable, GetEnumEmpty) {
67*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnum(kTestEnumNamesEmpty, "").is_value());
68*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnum(kTestEnumNamesEmpty, "1").is_value());
69*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnum(kTestEnumNamesEmpty, "foobar").is_value());
70*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnum(kTestEnumNamesEmpty, "foo").is_value());
71*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnum(kTestEnumNamesEmpty, "bar").is_value());
72*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnum(kTestEnumNamesEmpty, "baz").is_value());
73*3f982cf4SFabien Sanglard   EXPECT_FALSE(GetEnum(kTestEnumNamesEmpty, "buzz").is_value());
74*3f982cf4SFabien Sanglard }
75*3f982cf4SFabien Sanglard 
76*3f982cf4SFabien Sanglard }  // namespace openscreen
77