28GTEST_TEST(testContainerTraits, allContainersButStdArrayAreAllocatorAwareContainers)
30 ASSERT_TRUE((DryChem::is_allocator_aware_container<std::deque<int>>::value));
31 ASSERT_TRUE((DryChem::is_allocator_aware_container<std::forward_list<int>>::value));
32 ASSERT_TRUE((DryChem::is_allocator_aware_container<std::list<int>>::value));
33 ASSERT_TRUE((DryChem::is_allocator_aware_container<std::map<int, int>>::value));
34 ASSERT_TRUE((DryChem::is_allocator_aware_container<std::multimap<int, int>>::value));
35 ASSERT_TRUE((DryChem::is_allocator_aware_container<std::multiset<int>>::value));
36 ASSERT_TRUE((DryChem::is_allocator_aware_container<std::set<int>>::value));
37 ASSERT_TRUE((DryChem::is_allocator_aware_container<std::string>::value));
38 ASSERT_TRUE((DryChem::is_allocator_aware_container<std::unordered_map<int, int>>::value));
39 ASSERT_TRUE((DryChem::is_allocator_aware_container<std::unordered_multimap<int, int>>::value));
40 ASSERT_TRUE((DryChem::is_allocator_aware_container<std::unordered_multiset<int>>::value));
41 ASSERT_TRUE((DryChem::is_allocator_aware_container<std::unordered_set<int>>::value));
42 ASSERT_TRUE((DryChem::is_allocator_aware_container<std::vector<int>>::value));
44 ASSERT_FALSE((DryChem::is_allocator_aware_container<std::array<int, 3>>::value));
45 ASSERT_FALSE((DryChem::is_allocator_aware_container<std::priority_queue<int>>::value));
46 ASSERT_FALSE((DryChem::is_allocator_aware_container<std::queue<int>>::value));
47 ASSERT_FALSE((DryChem::is_allocator_aware_container<std::stack<int>>::value));
50GTEST_TEST(testContainerTraits, onlyOrderedMapsAndSetsAreAssociativeContainers)
52 ASSERT_TRUE((DryChem::is_associative_container<std::map<int, int>>::value));
53 ASSERT_TRUE((DryChem::is_associative_container<std::multimap<int, int>>::value));
54 ASSERT_TRUE((DryChem::is_associative_container<std::multiset<int>>::value));
55 ASSERT_TRUE((DryChem::is_associative_container<std::set<int>>::value));
57 ASSERT_FALSE((DryChem::is_associative_container<std::array<int, 3>>::value));
58 ASSERT_FALSE((DryChem::is_associative_container<std::deque<int>>::value));
59 ASSERT_FALSE((DryChem::is_associative_container<std::forward_list<int>>::value));
60 ASSERT_FALSE((DryChem::is_associative_container<std::list<int>>::value));
61 ASSERT_FALSE((DryChem::is_associative_container<std::priority_queue<int>>::value));
62 ASSERT_FALSE((DryChem::is_associative_container<std::queue<int>>::value));
63 ASSERT_FALSE((DryChem::is_associative_container<std::stack<int>>::value));
64 ASSERT_FALSE((DryChem::is_associative_container<std::string>::value));
65 ASSERT_FALSE((DryChem::is_associative_container<std::unordered_map<int, int>>::value));
66 ASSERT_FALSE((DryChem::is_associative_container<std::unordered_multimap<int, int>>::value));
67 ASSERT_FALSE((DryChem::is_associative_container<std::unordered_multiset<int>>::value));
68 ASSERT_FALSE((DryChem::is_associative_container<std::unordered_set<int>>::value));
69 ASSERT_FALSE((DryChem::is_associative_container<std::vector<int>>::value));
72GTEST_TEST(testContainerTraits, allStdContainersAreContainers)
74 ASSERT_TRUE((DryChem::is_container<std::array<int, 3>>::value));
75 ASSERT_TRUE((DryChem::is_container<std::deque<int>>::value));
76 ASSERT_TRUE((DryChem::is_container<std::forward_list<int>>::value));
77 ASSERT_TRUE((DryChem::is_container<std::list<int>>::value));
78 ASSERT_TRUE((DryChem::is_container<std::map<int, int>>::value));
79 ASSERT_TRUE((DryChem::is_container<std::multimap<int, int>>::value));
80 ASSERT_TRUE((DryChem::is_container<std::multiset<int>>::value));
81 ASSERT_TRUE((DryChem::is_container<std::set<int>>::value));
82 ASSERT_TRUE((DryChem::is_container<std::string>::value));
83 ASSERT_TRUE((DryChem::is_container<std::unordered_map<int, int>>::value));
84 ASSERT_TRUE((DryChem::is_container<std::unordered_multimap<int, int>>::value));
85 ASSERT_TRUE((DryChem::is_container<std::unordered_multiset<int>>::value));
86 ASSERT_TRUE((DryChem::is_container<std::unordered_set<int>>::value));
87 ASSERT_TRUE((DryChem::is_container<std::vector<int>>::value));
89 ASSERT_FALSE((DryChem::is_container<std::priority_queue<int>>::value));
90 ASSERT_FALSE((DryChem::is_container<std::queue<int>>::value));
91 ASSERT_FALSE((DryChem::is_container<std::stack<int>>::value));
94GTEST_TEST(testContainerTraits, containerAdaptersRequireAWrappedContainerType)
96 ASSERT_TRUE((DryChem::is_container_adapter<std::priority_queue<int>>::value));
97 ASSERT_TRUE((DryChem::is_container_adapter<std::queue<int>>::value));
98 ASSERT_TRUE((DryChem::is_container_adapter<std::stack<int>>::value));
100 ASSERT_FALSE((DryChem::is_container_adapter<std::array<int, 3>>::value));
101 ASSERT_FALSE((DryChem::is_container_adapter<std::deque<int>>::value));
102 ASSERT_FALSE((DryChem::is_container_adapter<std::forward_list<int>>::value));
103 ASSERT_FALSE((DryChem::is_container_adapter<std::list<int>>::value));
104 ASSERT_FALSE((DryChem::is_container_adapter<std::map<int, int>>::value));
105 ASSERT_FALSE((DryChem::is_container_adapter<std::multimap<int, int>>::value));
106 ASSERT_FALSE((DryChem::is_container_adapter<std::multiset<int>>::value));
107 ASSERT_FALSE((DryChem::is_container_adapter<std::set<int>>::value));
108 ASSERT_FALSE((DryChem::is_container_adapter<std::string>::value));
109 ASSERT_FALSE((DryChem::is_container_adapter<std::unordered_map<int, int>>::value));
110 ASSERT_FALSE((DryChem::is_container_adapter<std::unordered_multimap<int, int>>::value));
111 ASSERT_FALSE((DryChem::is_container_adapter<std::unordered_multiset<int>>::value));
112 ASSERT_FALSE((DryChem::is_container_adapter<std::unordered_set<int>>::value));
113 ASSERT_FALSE((DryChem::is_container_adapter<std::vector<int>>::value));
116GTEST_TEST(testContainerTraits, almostAllStandardContainersAreReversible)
118 ASSERT_TRUE((DryChem::is_reversible_container<std::array<int, 3>>::value));
119 ASSERT_TRUE((DryChem::is_reversible_container<std::deque<int>>::value));
120 ASSERT_TRUE((DryChem::is_reversible_container<std::list<int>>::value));
121 ASSERT_TRUE((DryChem::is_reversible_container<std::map<int, int>>::value));
122 ASSERT_TRUE((DryChem::is_reversible_container<std::multimap<int, int>>::value));
123 ASSERT_TRUE((DryChem::is_reversible_container<std::multiset<int>>::value));
124 ASSERT_TRUE((DryChem::is_reversible_container<std::set<int>>::value));
125 ASSERT_TRUE((DryChem::is_reversible_container<std::string>::value));
126 ASSERT_TRUE((DryChem::is_reversible_container<std::vector<int>>::value));
128 ASSERT_FALSE((DryChem::is_reversible_container<std::forward_list<int>>::value));
129 ASSERT_FALSE((DryChem::is_reversible_container<std::priority_queue<int>>::value));
130 ASSERT_FALSE((DryChem::is_reversible_container<std::queue<int>>::value));
131 ASSERT_FALSE((DryChem::is_reversible_container<std::stack<int>>::value));
132 ASSERT_FALSE((DryChem::is_reversible_container<std::unordered_map<int, int>>::value));
133 ASSERT_FALSE((DryChem::is_reversible_container<std::unordered_multimap<int, int>>::value));
134 ASSERT_FALSE((DryChem::is_reversible_container<std::unordered_multiset<int>>::value));
135 ASSERT_FALSE((DryChem::is_reversible_container<std::unordered_set<int>>::value));
138GTEST_TEST(testContainerTraits, ifContainerIsNotAssociativeOrUnorderedItsASequenceContainer)
140 ASSERT_TRUE((DryChem::is_sequence_container<std::array<int, 3>>::value));
141 ASSERT_TRUE((DryChem::is_sequence_container<std::deque<int>>::value));
142 ASSERT_TRUE((DryChem::is_sequence_container<std::forward_list<int>>::value));
143 ASSERT_TRUE((DryChem::is_sequence_container<std::list<int>>::value));
144 ASSERT_TRUE((DryChem::is_sequence_container<std::string>::value));
145 ASSERT_TRUE((DryChem::is_sequence_container<std::vector<int>>::value));
147 ASSERT_FALSE((DryChem::is_sequence_container<std::map<int, int>>::value));
148 ASSERT_FALSE((DryChem::is_sequence_container<std::multimap<int, int>>::value));
149 ASSERT_FALSE((DryChem::is_sequence_container<std::multiset<int>>::value));
150 ASSERT_FALSE((DryChem::is_sequence_container<std::priority_queue<int>>::value));
151 ASSERT_FALSE((DryChem::is_sequence_container<std::queue<int>>::value));
152 ASSERT_FALSE((DryChem::is_sequence_container<std::set<int>>::value));
153 ASSERT_FALSE((DryChem::is_sequence_container<std::stack<int>>::value));
154 ASSERT_FALSE((DryChem::is_sequence_container<std::unordered_map<int, int>>::value));
155 ASSERT_FALSE((DryChem::is_sequence_container<std::unordered_multimap<int, int>>::value));
156 ASSERT_FALSE((DryChem::is_sequence_container<std::unordered_multiset<int>>::value));
157 ASSERT_FALSE((DryChem::is_sequence_container<std::unordered_set<int>>::value));
160GTEST_TEST(testContainerTraits, unorderedMapsAndSetsAreTheOnlyUnorderedAssociativeContainers)
162 ASSERT_TRUE((DryChem::is_unordered_associative_container<std::unordered_map<int, int>>::value));
163 ASSERT_TRUE((DryChem::is_unordered_associative_container<std::unordered_multimap<int, int>>::value));
164 ASSERT_TRUE((DryChem::is_unordered_associative_container<std::unordered_multiset<int>>::value));
165 ASSERT_TRUE((DryChem::is_unordered_associative_container<std::unordered_set<int>>::value));
167 ASSERT_FALSE((DryChem::is_unordered_associative_container<std::array<int, 3>>::value));
168 ASSERT_FALSE((DryChem::is_unordered_associative_container<std::deque<int>>::value));
169 ASSERT_FALSE((DryChem::is_unordered_associative_container<std::forward_list<int>>::value));
170 ASSERT_FALSE((DryChem::is_unordered_associative_container<std::list<int>>::value));
171 ASSERT_FALSE((DryChem::is_unordered_associative_container<std::map<int, int>>::value));
172 ASSERT_FALSE((DryChem::is_unordered_associative_container<std::multimap<int, int>>::value));
173 ASSERT_FALSE((DryChem::is_unordered_associative_container<std::multiset<int>>::value));
174 ASSERT_FALSE((DryChem::is_unordered_associative_container<std::priority_queue<int>>::value));
175 ASSERT_FALSE((DryChem::is_unordered_associative_container<std::queue<int>>::value));
176 ASSERT_FALSE((DryChem::is_unordered_associative_container<std::set<int>>::value));
177 ASSERT_FALSE((DryChem::is_unordered_associative_container<std::stack<int>>::value));
178 ASSERT_FALSE((DryChem::is_unordered_associative_container<std::string>::value));
179 ASSERT_FALSE((DryChem::is_unordered_associative_container<std::vector<int>>::value));
182GTEST_TEST(testContainerTraits, convenienceVariableTemplatesAreInFactConvenient)
184 ASSERT_FALSE((DryChem::is_allocator_aware_container_v<std::array<int, 3>>));
185 ASSERT_FALSE((DryChem::is_associative_container_v<std::array<int, 3>>));
186 ASSERT_TRUE((DryChem::is_container_v<std::array<int, 3>>));
187 ASSERT_FALSE((DryChem::is_container_adapter_v<std::array<int, 3>>));
188 ASSERT_TRUE((DryChem::is_reversible_container_v<std::array<int, 3>>));
189 ASSERT_TRUE((DryChem::is_sequence_container_v<std::array<int, 3>>));
190 ASSERT_FALSE((DryChem::is_unordered_associative_container_v<std::array<int, 3>>));
GTEST_TEST(testContainerTraits, allContainersButStdArrayAreAllocatorAwareContainers)
Definition testContainerTraits.hpp:28