Skip to content

Commit 82d8085

Browse files
committed
Move set-based algorithm tests into their own file
1 parent c4cf83b commit 82d8085

File tree

3 files changed

+240
-226
lines changed

3 files changed

+240
-226
lines changed

source/containers/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ target_sources(containers_test PRIVATE
230230
test/algorithms/erase.cpp
231231
test/algorithms/filter.cpp
232232
test/algorithms/join.cpp
233+
test/algorithms/set.cpp
233234
test/algorithms/split.cpp
234235
test/algorithms/zip.cpp
235236
test/append.cpp

source/containers/algorithms/set.cpp

Lines changed: 0 additions & 226 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,10 @@ export module containers.algorithms.set;
1414
import containers.algorithms.sort.is_sorted;
1515

1616
import containers.algorithms.advance;
17-
import containers.algorithms.compare;
18-
import containers.array;
1917
import containers.begin_end;
2018
import containers.common_iterator_functions;
2119
import containers.forward_range;
2220
import containers.iter_difference_t;
23-
import containers.iter_value_t;
2421

2522
import bounded;
2623
import numeric_traits;
@@ -191,226 +188,3 @@ template<typename Range1, typename Range2>
191188
set_intersection_pair(Range1 &&, Range2 &&) -> set_intersection_pair<Range1, Range2, std::compare_three_way>;
192189

193190
} // namespace containers
194-
195-
using namespace bounded::literal;
196-
197-
struct compares_address {
198-
constexpr explicit compares_address(int const & first, int const & second):
199-
m_first(first),
200-
m_second(second)
201-
{
202-
}
203-
constexpr explicit compares_address(std::pair<int const &, int const &> other):
204-
m_first(other.first),
205-
m_second(other.second)
206-
{
207-
}
208-
209-
friend constexpr auto operator==(compares_address const lhs, compares_address const rhs) -> bool {
210-
return
211-
std::addressof(lhs.m_first) == std::addressof(rhs.m_first) and
212-
std::addressof(lhs.m_second) == std::addressof(rhs.m_second);
213-
}
214-
215-
friend constexpr auto operator==(compares_address const lhs, std::pair<int const &, int const &> rhs) -> bool {
216-
return lhs == compares_address(rhs);
217-
}
218-
219-
private:
220-
int const & m_first;
221-
int const & m_second;
222-
};
223-
224-
using init_list = std::initializer_list<compares_address>;
225-
226-
constexpr auto empty = containers::array<int, 0_bi>{};
227-
228-
static_assert(containers::equal(
229-
containers::set_intersection_pair(empty, empty),
230-
init_list{}
231-
));
232-
233-
constexpr auto one_one = containers::array{1};
234-
constexpr auto one_two = containers::array{2};
235-
236-
static_assert(containers::equal(
237-
containers::set_intersection_pair(empty, one_one),
238-
init_list{}
239-
));
240-
static_assert(containers::equal(
241-
containers::set_intersection_pair(empty, one_two),
242-
init_list{}
243-
));
244-
245-
static_assert(containers::equal(
246-
containers::set_intersection_pair(one_one, one_one),
247-
init_list{compares_address(one_one[0_bi], one_one[0_bi])}
248-
));
249-
static_assert(containers::equal(
250-
containers::set_intersection_pair(one_one, one_two),
251-
init_list{}
252-
));
253-
static_assert(containers::equal(
254-
containers::set_intersection_pair(one_two, one_one),
255-
init_list{}
256-
));
257-
static_assert(containers::equal(
258-
containers::set_intersection_pair(one_two, one_two),
259-
init_list{compares_address(one_two[0_bi], one_two[0_bi])}
260-
));
261-
262-
constexpr auto two_forward = containers::array{1, 2};
263-
constexpr auto two_ones = containers::array{1, 1};
264-
265-
static_assert(containers::equal(
266-
containers::set_intersection_pair(empty, two_forward),
267-
init_list{}
268-
));
269-
270-
static_assert(containers::equal(
271-
containers::set_intersection_pair(one_one, two_forward),
272-
init_list{compares_address(one_one[0_bi], two_forward[0_bi])}
273-
));
274-
static_assert(containers::equal(
275-
containers::set_intersection_pair(two_forward, one_two),
276-
init_list{compares_address(two_forward[1_bi], one_two[0_bi])}
277-
));
278-
static_assert(containers::equal(
279-
containers::set_intersection_pair(two_ones, one_one),
280-
init_list{compares_address(two_ones[0_bi], one_one[0_bi])}
281-
));
282-
283-
static_assert(containers::equal(
284-
containers::set_intersection_pair(two_forward, two_forward),
285-
init_list{
286-
compares_address(two_forward[0_bi], two_forward[0_bi]),
287-
compares_address(two_forward[1_bi], two_forward[1_bi])
288-
}
289-
));
290-
static_assert(containers::equal(
291-
containers::set_intersection_pair(two_forward, two_ones),
292-
init_list{compares_address(two_forward[0_bi], two_ones[0_bi])}
293-
));
294-
static_assert(containers::equal(
295-
containers::set_intersection_pair(two_ones, two_forward),
296-
init_list{compares_address(two_ones[0_bi], two_forward[0_bi])}
297-
));
298-
299-
constexpr auto all_ones = containers::array{1, 1, 1, 1, 1, 1, 1};
300-
constexpr auto prefix = containers::array{-4, -3, -2, 1, 1, 1};
301-
constexpr auto suffix = containers::array{1, 1, 1, 2, 3, 4};
302-
constexpr auto prefix_suffix = containers::array{-4, -3, -2, 1, 1, 1, 2, 3, 4};
303-
304-
static_assert(containers::equal(
305-
containers::set_intersection_pair(empty, all_ones),
306-
init_list{}
307-
));
308-
309-
static_assert(containers::equal(
310-
containers::set_intersection_pair(one_one, all_ones),
311-
init_list{compares_address(one_one[0_bi], all_ones[0_bi])}
312-
));
313-
static_assert(containers::equal(
314-
containers::set_intersection_pair(all_ones, one_one),
315-
init_list{compares_address(all_ones[0_bi], one_one[0_bi])}
316-
));
317-
static_assert(containers::equal(
318-
containers::set_intersection_pair(two_ones, all_ones),
319-
init_list{
320-
compares_address(two_ones[0_bi], all_ones[0_bi]),
321-
compares_address(two_ones[1_bi], all_ones[1_bi])
322-
}
323-
));
324-
static_assert(containers::equal(
325-
containers::set_intersection_pair(all_ones, two_ones),
326-
init_list{
327-
compares_address(all_ones[0_bi], two_ones[0_bi]),
328-
compares_address(all_ones[1_bi], two_ones[1_bi])
329-
}
330-
));
331-
332-
static_assert(containers::equal(
333-
containers::set_intersection_pair(all_ones, prefix),
334-
init_list{
335-
compares_address(all_ones[0_bi], prefix[3_bi]),
336-
compares_address(all_ones[1_bi], prefix[4_bi]),
337-
compares_address(all_ones[2_bi], prefix[5_bi]),
338-
}
339-
));
340-
static_assert(containers::equal(
341-
containers::set_intersection_pair(prefix, all_ones),
342-
init_list{
343-
compares_address(prefix[3_bi], all_ones[0_bi]),
344-
compares_address(prefix[4_bi], all_ones[1_bi]),
345-
compares_address(prefix[5_bi], all_ones[2_bi]),
346-
}
347-
));
348-
349-
static_assert(containers::equal(
350-
containers::set_intersection_pair(all_ones, suffix),
351-
init_list{
352-
compares_address(all_ones[0_bi], suffix[0_bi]),
353-
compares_address(all_ones[1_bi], suffix[1_bi]),
354-
compares_address(all_ones[2_bi], suffix[2_bi]),
355-
}
356-
));
357-
static_assert(containers::equal(
358-
containers::set_intersection_pair(suffix, all_ones),
359-
init_list{
360-
compares_address(suffix[0_bi], all_ones[0_bi]),
361-
compares_address(suffix[1_bi], all_ones[1_bi]),
362-
compares_address(suffix[2_bi], all_ones[2_bi]),
363-
}
364-
));
365-
366-
static_assert(containers::equal(
367-
containers::set_intersection_pair(all_ones, prefix_suffix),
368-
init_list{
369-
compares_address(all_ones[0_bi], prefix_suffix[3_bi]),
370-
compares_address(all_ones[1_bi], prefix_suffix[4_bi]),
371-
compares_address(all_ones[2_bi], prefix_suffix[5_bi]),
372-
}
373-
));
374-
static_assert(containers::equal(
375-
containers::set_intersection_pair(prefix_suffix, all_ones),
376-
init_list{
377-
compares_address(prefix_suffix[3_bi], all_ones[0_bi]),
378-
compares_address(prefix_suffix[4_bi], all_ones[1_bi]),
379-
compares_address(prefix_suffix[5_bi], all_ones[2_bi]),
380-
}
381-
));
382-
383-
static_assert(containers::equal(
384-
containers::set_intersection_pair(suffix, prefix),
385-
init_list{
386-
compares_address(suffix[0_bi], prefix[3_bi]),
387-
compares_address(suffix[1_bi], prefix[4_bi]),
388-
compares_address(suffix[2_bi], prefix[5_bi]),
389-
}
390-
));
391-
static_assert(containers::equal(
392-
containers::set_intersection_pair(prefix, suffix),
393-
init_list{
394-
compares_address(prefix[3_bi], suffix[0_bi]),
395-
compares_address(prefix[4_bi], suffix[1_bi]),
396-
compares_address(prefix[5_bi], suffix[2_bi]),
397-
}
398-
));
399-
400-
constexpr auto squares = containers::array{1, 4, 9, 16, 25, 36, 49, 64};
401-
constexpr auto evens = containers::array{2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
402-
403-
static_assert(containers::equal(
404-
containers::set_intersection_pair(squares, evens),
405-
init_list{
406-
compares_address(squares[1_bi], evens[1_bi]),
407-
compares_address(squares[3_bi], evens[7_bi]),
408-
}
409-
));
410-
static_assert(containers::equal(
411-
containers::set_intersection_pair(evens, squares),
412-
init_list{
413-
compares_address(evens[1_bi], squares[1_bi]),
414-
compares_address(evens[7_bi], squares[3_bi]),
415-
}
416-
));

0 commit comments

Comments
 (0)