tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

unordered_set_members_test.h (3417B)


      1 // Copyright 2019 The Abseil Authors.
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //      https://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 #ifndef ABSL_CONTAINER_INTERNAL_UNORDERED_SET_MEMBERS_TEST_H_
     16 #define ABSL_CONTAINER_INTERNAL_UNORDERED_SET_MEMBERS_TEST_H_
     17 
     18 #include <type_traits>
     19 #include "gmock/gmock.h"
     20 #include "gtest/gtest.h"
     21 #include "absl/meta/type_traits.h"
     22 
     23 namespace absl {
     24 ABSL_NAMESPACE_BEGIN
     25 namespace container_internal {
     26 
     27 template <class UnordSet>
     28 class MembersTest : public ::testing::Test {};
     29 
     30 TYPED_TEST_SUITE_P(MembersTest);
     31 
     32 template <typename T>
     33 void UseType() {}
     34 
     35 TYPED_TEST_P(MembersTest, Typedefs) {
     36  EXPECT_TRUE((std::is_same<typename TypeParam::key_type,
     37                            typename TypeParam::value_type>()));
     38  EXPECT_TRUE((absl::conjunction<
     39               absl::negation<std::is_signed<typename TypeParam::size_type>>,
     40               std::is_integral<typename TypeParam::size_type>>()));
     41  EXPECT_TRUE((absl::conjunction<
     42               std::is_signed<typename TypeParam::difference_type>,
     43               std::is_integral<typename TypeParam::difference_type>>()));
     44  EXPECT_TRUE((std::is_convertible<
     45               decltype(std::declval<const typename TypeParam::hasher&>()(
     46                   std::declval<const typename TypeParam::key_type&>())),
     47               size_t>()));
     48  EXPECT_TRUE((std::is_convertible<
     49               decltype(std::declval<const typename TypeParam::key_equal&>()(
     50                   std::declval<const typename TypeParam::key_type&>(),
     51                   std::declval<const typename TypeParam::key_type&>())),
     52               bool>()));
     53  EXPECT_TRUE((std::is_same<typename TypeParam::allocator_type::value_type,
     54                            typename TypeParam::value_type>()));
     55  EXPECT_TRUE((std::is_same<typename TypeParam::value_type&,
     56                            typename TypeParam::reference>()));
     57  EXPECT_TRUE((std::is_same<const typename TypeParam::value_type&,
     58                            typename TypeParam::const_reference>()));
     59  EXPECT_TRUE((std::is_same<typename std::allocator_traits<
     60                                typename TypeParam::allocator_type>::pointer,
     61                            typename TypeParam::pointer>()));
     62  EXPECT_TRUE(
     63      (std::is_same<typename std::allocator_traits<
     64                        typename TypeParam::allocator_type>::const_pointer,
     65                    typename TypeParam::const_pointer>()));
     66 }
     67 
     68 TYPED_TEST_P(MembersTest, SimpleFunctions) {
     69  EXPECT_GT(TypeParam().max_size(), 0);
     70 }
     71 
     72 TYPED_TEST_P(MembersTest, BeginEnd) {
     73  TypeParam t = {typename TypeParam::value_type{}};
     74  EXPECT_EQ(t.begin(), t.cbegin());
     75  EXPECT_EQ(t.end(), t.cend());
     76  EXPECT_NE(t.begin(), t.end());
     77  EXPECT_NE(t.cbegin(), t.cend());
     78 }
     79 
     80 REGISTER_TYPED_TEST_SUITE_P(MembersTest, Typedefs, SimpleFunctions, BeginEnd);
     81 
     82 }  // namespace container_internal
     83 ABSL_NAMESPACE_END
     84 }  // namespace absl
     85 
     86 #endif  // ABSL_CONTAINER_INTERNAL_UNORDERED_SET_MEMBERS_TEST_H_