// Copyright 2017 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 "components/zucchini/typed_value.h"

#include <type_traits>

#include "testing/gtest/include/gtest/gtest.h"

namespace zucchini {

struct ValueA : TypedValue<ValueA, int> {
  using ValueA::TypedValue::TypedValue;
};

struct ValueB : TypedValue<ValueB, int> {
  using ValueB::TypedValue::TypedValue;
};

TEST(TypedIdTest, Value) {
  EXPECT_EQ(42, ValueA(42).value());
  EXPECT_EQ(42, static_cast<int>(ValueA(42)));  // explicit cast
}

TEST(TypedIdTest, Comparison) {
  EXPECT_TRUE(ValueA(0) == ValueA(0));
  EXPECT_FALSE(ValueA(0) == ValueA(42));
  EXPECT_FALSE(ValueA(0) != ValueA(0));
  EXPECT_TRUE(ValueA(0) != ValueA(42));
}

TEST(TypedIdTest, StrongType) {
  static_assert(!std::is_convertible<ValueA, ValueB>::value,
                "ValueA should not be convertible to ValueB");
  static_assert(!std::is_convertible<ValueB, ValueA>::value,
                "ValueB should not be convertible to ValueA");
}

}  // namespace zucchini
