// 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 ABSL_CONTAINER_INTERNAL_UNORDERED_SET_MEMBERS_TEST_H_ #define ABSL_CONTAINER_INTERNAL_UNORDERED_SET_MEMBERS_TEST_H_ #include #include "gmock/gmock.h" #include "gtest/gtest.h" #include "absl/meta/type_traits.h" namespace absl { ABSL_NAMESPACE_BEGIN namespace container_internal { 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((absl::conjunction< absl::negation>, std::is_integral>())); EXPECT_TRUE((absl::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 container_internal ABSL_NAMESPACE_END } // namespace absl #endif // ABSL_CONTAINER_INTERNAL_UNORDERED_SET_MEMBERS_TEST_H_