blob: 3000ef62c2492d7c207e04ae8535181cba9a7538 [file] [log] [blame]
// 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 "chrome/updater/util.h"
#include "base/optional.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace updater {
enum class MyEnum {
kVal1 = -1,
kVal2 = 0,
kVal3 = 1,
};
template <>
struct EnumTraits<MyEnum> {
static constexpr MyEnum first_elem = MyEnum::kVal1;
static constexpr MyEnum last_elem = MyEnum::kVal3;
};
TEST(Util, CheckedIntegralToEnum) {
EXPECT_EQ(MyEnum::kVal1, *CheckedCastToEnum<MyEnum>(-1));
EXPECT_EQ(MyEnum::kVal2, *CheckedCastToEnum<MyEnum>(0));
EXPECT_EQ(MyEnum::kVal3, *CheckedCastToEnum<MyEnum>(1));
EXPECT_EQ(CheckedCastToEnum<MyEnum>(-2), base::nullopt);
EXPECT_EQ(CheckedCastToEnum<MyEnum>(2), base::nullopt);
}
} // namespace updater