You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.8 KiB
77 lines
2.8 KiB
// 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
|