1 /*=============================================================================
2 Copyright (c) 2005-2007 Dan Marsden
3 Copyright (c) 2005-2007 Joel de Guzman
4
5 Distributed under the Boost Software License, Version 1.0. (See accompanying
6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 ==============================================================================*/
8
9 #include <boost/phoenix/core.hpp>
10 #include <boost/phoenix/stl/algorithm/querying.hpp>
11 #include <boost/detail/lightweight_test.hpp>
12
13 #include <boost/range.hpp>
14
15 #include <functional>
16
17 namespace
18 {
includes_test()19 void includes_test()
20 {
21 using boost::phoenix::includes;
22 using boost::phoenix::arg_names::arg1;
23 using boost::phoenix::arg_names::arg2;
24 int array[] = {1,2,3};
25 int array2[] = {1,2};
26 BOOST_TEST(includes(arg1, arg2)(array, array2));
27 boost::iterator_range<int*> rng(array + 1, array + 3);
28 BOOST_TEST(!includes(arg1, arg2)(rng, array2));
29
30 int array3[] = {3,2,1};
31 int array4[] = {2,1};
32 BOOST_TEST(boost::phoenix::includes(arg1, arg2, std::greater<int>())(array3, array4));
33 boost::iterator_range<int*> rng2(array3, array3 + 2);
34 BOOST_TEST(!boost::phoenix::includes(arg1, arg2, std::greater<int>())(rng2, array4));
35 return;
36 }
37
min_element_test()38 void min_element_test()
39 {
40 using boost::phoenix::min_element;
41 using boost::phoenix::arg_names::arg1;
42 int array[] = {1,3,2};
43 BOOST_TEST(min_element(arg1)(array) == array);
44 BOOST_TEST(boost::phoenix::min_element(arg1, std::greater<int>())(array) == array + 1);
45 return;
46 }
47
max_element_test()48 void max_element_test()
49 {
50 using boost::phoenix::max_element;
51 using boost::phoenix::arg_names::arg1;
52 int array[] = {1,3,2};
53 BOOST_TEST(max_element(arg1)(array) == array + 1);
54 BOOST_TEST(boost::phoenix::max_element(arg1, std::greater<int>())(array) == array);
55 return;
56 }
57
lexicographical_compare_test()58 void lexicographical_compare_test()
59 {
60 using boost::phoenix::lexicographical_compare;
61 using boost::phoenix::arg_names::arg1;
62 using boost::phoenix::arg_names::arg2;
63 int array[] = {1,2,3};
64 int array2[] = {1,2,4};
65
66 BOOST_TEST(lexicographical_compare(arg1, arg2)(array, array2));
67 BOOST_TEST(!lexicographical_compare(arg1, arg2)(array2, array));
68 BOOST_TEST(!lexicographical_compare(arg1, arg2)(array, array));
69
70 BOOST_TEST(!boost::phoenix::lexicographical_compare(arg1, arg2, std::greater<int>())(array, array2));
71 BOOST_TEST(boost::phoenix::lexicographical_compare(arg1, arg2, std::greater<int>())(array2, array));
72 BOOST_TEST(!boost::phoenix::lexicographical_compare(arg1, arg2, std::greater<int>())(array, array));
73
74 return;
75 }
76 }
77
main()78 int main()
79 {
80 includes_test();
81 min_element_test();
82 max_element_test();
83 lexicographical_compare_test();
84 return boost::report_errors();
85 }
86