]> git.donarmstrong.com Git - lilypond.git/blob - flower/test-std.cc
* flower/include/std-vector.hh (slice): Remove.
[lilypond.git] / flower / test-std.cc
1 #if !STD_VECTOR
2 #define Array flower_vector
3 #endif
4 #include "std-vector.hh"
5
6 #include <iostream>
7
8 #include <boost/test/auto_unit_test.hpp>
9 #include <boost/test/floating_point_comparison.hpp>
10
11 using boost::unit_test::test_suite;
12
13 #if !STD_VECTOR
14 #define vector flower_vector
15 #endif
16
17 template<typename T>
18 void
19 print (vector<T> v)
20 {
21   for (vsize i = 0; i < v.size (); i++)
22     cout << "v[" << i << "] = " << v[i] << endl;
23   cout << endl;
24 }
25
26 BOOST_AUTO_UNIT_TEST (vector_erase)
27 {
28   vector<int> v;
29   v.push_back (0);
30   v.push_back (1);
31   BOOST_CHECK_EQUAL (v.size (), vsize (2));
32   v.erase (v.begin () + 1);
33   BOOST_CHECK_EQUAL (v.size (), vsize (1));
34   BOOST_CHECK_EQUAL (v.back (), 0);
35
36   v.push_back (1);
37   BOOST_CHECK_EQUAL (v.size (), vsize (2));
38   v.erase (v.begin () + 0);
39   BOOST_CHECK_EQUAL (v.size (), vsize (1));
40   BOOST_CHECK_EQUAL (v.back (), 1);
41 }
42
43 BOOST_AUTO_UNIT_TEST (vector_slice)
44 {
45   vector<int> v;
46   v.push_back (0);
47   v.push_back (1);
48   v.push_back (2);
49   v.push_back (3);
50 #if VECTOR_SLICE
51   BOOST_CHECK_EQUAL (v.slice (0, 0).size (), vsize (0));
52   BOOST_CHECK_EQUAL (v.slice (0, v.size ()).size (), v.size ());
53   BOOST_CHECK_EQUAL (v.slice (1, 2).size (), vsize (1));
54 #else
55   BOOST_CHECK_EQUAL (vector<int> (v.begin (), v.begin ()).size (), vsize (0));
56   BOOST_CHECK_EQUAL (vector<int> (v.begin (), v.end ()).size (), v.size ());
57   BOOST_CHECK_EQUAL (vector<int> (v.begin () + 1, v.begin () + 2).size (),
58                      vsize (1));
59 #endif
60 }
61
62 BOOST_AUTO_UNIT_TEST (vector_sort)
63 {
64   vector<int> v;
65   v.push_back (2);
66   v.push_back (1);
67   v.push_back (0);
68   v.sort (default_compare);
69   print (v);
70   BOOST_CHECK_EQUAL (v[0], 0);
71   BOOST_CHECK_EQUAL (v[1], 1);
72   BOOST_CHECK_EQUAL (v[2], 2);
73 }
74
75 test_suite*
76 init_unit_test_suite (int, char**)
77 {
78   test_suite *test = BOOST_TEST_SUITE("std::Flower");
79   test->add (BOOST_TEST_CASE (vector_erase));
80   test->add (BOOST_TEST_CASE (vector_slice));
81   test->add (BOOST_TEST_CASE (vector_sort));
82   return test;
83 }