// Copyright 2019 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 "base/parameter_pack.h" #include "testing/gtest/include/gtest/gtest.h" namespace base { TEST(ParameterPack, AnyOf) { static_assert(any_of({true, true, true}), ""); static_assert(any_of({false, false, true, false}), ""); static_assert(!any_of({false}), ""); static_assert(!any_of({false, false, false}), ""); } TEST(ParameterPack, AllOf) { static_assert(all_of({true, true, true}), ""); static_assert(!all_of({true, true, true, false}), ""); static_assert(!all_of({false}), ""); static_assert(!all_of({false, false}), ""); } TEST(ParameterPack, Count) { static_assert(count({1, 2, 2, 2, 2, 2, 3}, 2) == 5u, ""); } TEST(ParameterPack, HasType) { static_assert(ParameterPack::HasType(), ""); static_assert(ParameterPack::HasType(), ""); static_assert(ParameterPack::HasType(), ""); static_assert(!ParameterPack::HasType(), ""); } TEST(ParameterPack, OnlyHasType) { static_assert(ParameterPack::OnlyHasType(), ""); static_assert(ParameterPack::OnlyHasType(), ""); static_assert(!ParameterPack::OnlyHasType(), ""); static_assert(!ParameterPack::OnlyHasType(), ""); static_assert(!ParameterPack::OnlyHasType(), ""); } TEST(ParameterPack, IsUniqueInPack) { static_assert(ParameterPack::IsUniqueInPack(), ""); static_assert(!ParameterPack::IsUniqueInPack(), ""); } TEST(ParameterPack, IndexInPack) { static_assert(ParameterPack::IndexInPack() == 0u, ""); static_assert(ParameterPack::IndexInPack() == 1u, ""); static_assert(ParameterPack::IndexInPack() == 2u, ""); static_assert( ParameterPack::IndexInPack() == pack_npos, ""); } TEST(ParameterPack, NthType) { static_assert( std::is_same::NthType<0>>::value, ""); static_assert( std::is_same::NthType<1>>::value, ""); static_assert( std::is_same::NthType<2>>::value, ""); } TEST(ParameterPack, IsAllSameType) { static_assert(ParameterPack::IsAllSameType(), ""); static_assert(ParameterPack::IsAllSameType(), ""); static_assert(!ParameterPack::IsAllSameType(), ""); } } // namespace base