// Copyright 2019 The Abseil Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef PHMAP_PRIV_UNORDERED_SET_MEMBERS_TEST_H_ #define PHMAP_PRIV_UNORDERED_SET_MEMBERS_TEST_H_ #include #include "gmock/gmock.h" #include "gtest/gtest.h" namespace phmap { namespace priv { template class MembersTest : public ::testing::Test {}; TYPED_TEST_SUITE_P(MembersTest); template void UseType() {} TYPED_TEST_P(MembersTest, Typedefs) { EXPECT_TRUE((std::is_same())); EXPECT_TRUE((phmap::conjunction< phmap::negation>, std::is_integral>())); EXPECT_TRUE((phmap::conjunction< std::is_signed, std::is_integral>())); EXPECT_TRUE((std::is_convertible< decltype(std::declval()( std::declval())), size_t>())); EXPECT_TRUE((std::is_convertible< decltype(std::declval()( std::declval(), std::declval())), bool>())); EXPECT_TRUE((std::is_same())); EXPECT_TRUE((std::is_same())); EXPECT_TRUE((std::is_same())); EXPECT_TRUE((std::is_same::pointer, typename TypeParam::pointer>())); EXPECT_TRUE( (std::is_same::const_pointer, typename TypeParam::const_pointer>())); } TYPED_TEST_P(MembersTest, SimpleFunctions) { EXPECT_GT(TypeParam().max_size(), 0); } TYPED_TEST_P(MembersTest, BeginEnd) { TypeParam t = {typename TypeParam::value_type{}}; EXPECT_EQ(t.begin(), t.cbegin()); EXPECT_EQ(t.end(), t.cend()); EXPECT_NE(t.begin(), t.end()); EXPECT_NE(t.cbegin(), t.cend()); } REGISTER_TYPED_TEST_SUITE_P(MembersTest, Typedefs, SimpleFunctions, BeginEnd); } // namespace priv } // namespace phmap #endif // PHMAP_PRIV_UNORDERED_SET_MEMBERS_TEST_H_