File: enum_name_table_unittest.cc

package info (click to toggle)
android-platform-tools 34.0.5-12
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 150,900 kB
  • sloc: cpp: 805,786; java: 293,500; ansic: 128,288; xml: 127,491; python: 41,481; sh: 14,245; javascript: 9,665; cs: 3,846; asm: 2,049; makefile: 1,917; yacc: 440; awk: 368; ruby: 183; sql: 140; perl: 88; lex: 67
file content (76 lines) | stat: -rw-r--r-- 2,852 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "util/enum_name_table.h"

#include "gmock/gmock.h"
#include "gtest/gtest.h"

namespace openscreen {

namespace {

enum class TestEnum { kFoo = -1, kBar, kBaz = 100, kBuzz };

constexpr EnumNameTable<TestEnum, 4> kTestEnumNames{{
    {"foo", TestEnum::kFoo},
    {"bar", TestEnum::kBar},
    {"baz", TestEnum::kBaz},
    {"buzz", TestEnum::kBuzz},
}};

constexpr EnumNameTable<TestEnum, 1> kTestEnumNamesMissing{{
    {"foo", TestEnum::kFoo},
}};

constexpr EnumNameTable<TestEnum, 0> kTestEnumNamesEmpty{};

}  // namespace

TEST(EnumNameTable, GetEnumNameValid) {
  EXPECT_STREQ("foo", GetEnumName(kTestEnumNames, TestEnum::kFoo).value());
  EXPECT_STREQ("bar", GetEnumName(kTestEnumNames, TestEnum::kBar).value());
  EXPECT_STREQ("baz", GetEnumName(kTestEnumNames, TestEnum::kBaz).value());
  EXPECT_STREQ("buzz", GetEnumName(kTestEnumNames, TestEnum::kBuzz).value());
}

TEST(EnumNameTable, GetEnumNameMissing) {
  EXPECT_FALSE(GetEnumName(kTestEnumNamesMissing, TestEnum::kBar).is_value());
  EXPECT_FALSE(GetEnumName(kTestEnumNamesMissing, TestEnum::kBaz).is_value());
  EXPECT_FALSE(GetEnumName(kTestEnumNamesMissing, TestEnum::kBuzz).is_value());
}

TEST(EnumNameTable, GetEnumNameEmpty) {
  EXPECT_FALSE(GetEnumName(kTestEnumNamesEmpty, TestEnum::kBar).is_value());
  EXPECT_FALSE(GetEnumName(kTestEnumNamesEmpty, TestEnum::kBaz).is_value());
  EXPECT_FALSE(GetEnumName(kTestEnumNamesEmpty, TestEnum::kBuzz).is_value());
}

TEST(EnumNameTable, GetEnumValid) {
  EXPECT_EQ(TestEnum::kFoo, GetEnum(kTestEnumNames, "foo").value());
  EXPECT_EQ(TestEnum::kBar, GetEnum(kTestEnumNames, "bar").value());
  EXPECT_EQ(TestEnum::kBaz, GetEnum(kTestEnumNames, "baz").value());
  EXPECT_EQ(TestEnum::kBuzz, GetEnum(kTestEnumNames, "buzz").value());
}

TEST(EnumNameTable, GetEnumMissing) {
  EXPECT_FALSE(GetEnum(kTestEnumNames, "").is_value());
  EXPECT_FALSE(GetEnum(kTestEnumNames, "1").is_value());
  EXPECT_FALSE(GetEnum(kTestEnumNames, "foobar").is_value());
  EXPECT_FALSE(GetEnum(kTestEnumNamesMissing, "bar").is_value());
  EXPECT_FALSE(GetEnum(kTestEnumNamesMissing, "baz").is_value());
  EXPECT_FALSE(GetEnum(kTestEnumNamesMissing, "buzz").is_value());
}

TEST(EnumNameTable, GetEnumEmpty) {
  EXPECT_FALSE(GetEnum(kTestEnumNamesEmpty, "").is_value());
  EXPECT_FALSE(GetEnum(kTestEnumNamesEmpty, "1").is_value());
  EXPECT_FALSE(GetEnum(kTestEnumNamesEmpty, "foobar").is_value());
  EXPECT_FALSE(GetEnum(kTestEnumNamesEmpty, "foo").is_value());
  EXPECT_FALSE(GetEnum(kTestEnumNamesEmpty, "bar").is_value());
  EXPECT_FALSE(GetEnum(kTestEnumNamesEmpty, "baz").is_value());
  EXPECT_FALSE(GetEnum(kTestEnumNamesEmpty, "buzz").is_value());
}

}  // namespace openscreen