]> git.donarmstrong.com Git - lilypond.git/blob - flower/test-std.cc
Merge branch 'jneeman' of git+ssh://jneem@git.sv.gnu.org/srv/git/lilypond into jneeman
[lilypond.git] / flower / test-std.cc
1 #define STD_VECTOR 1
2
3 #if !STD_VECTOR
4 #define Array flower_vector
5 #endif
6
7 #define HAVE_BOOST_LAMBDA 1
8 #include "std-vector.hh"
9
10 #include <iostream>
11
12 #include <boost/test/auto_unit_test.hpp>
13 #include <boost/test/floating_point_comparison.hpp>
14
15 #if !STD_VECTOR
16 #define vector flower_vector
17 #endif
18
19 using namespace std;
20 using boost::unit_test::test_suite;
21 using namespace boost::unit_test;
22
23 template<typename T>
24 void
25 print (vector<T> v)
26 {
27   for (vsize i = 0; i < v.size (); i++)
28     cout << "v[" << i << "] = " << v[i] << endl;
29   cout << endl;
30 }
31
32 #if !STD_VECTOR
33 template<typename T>
34 void
35 print (Link_array<T> v)
36 {
37   for (vsize i = 0; i < v.size (); i++)
38     cout << "v[" << i << "] = " << *v[i] << endl;
39   cout << endl;
40 }
41 #endif
42
43 BOOST_AUTO_UNIT_TEST (vector_erase)
44 {
45   vector<int> v;
46   v.push_back (0);
47   v.push_back (1);
48   BOOST_CHECK_EQUAL (v.size (), vsize (2));
49   v.erase (v.begin () + 1);
50   BOOST_CHECK_EQUAL (v.size (), vsize (1));
51   BOOST_CHECK_EQUAL (v.back (), 0);
52
53   v.push_back (1);
54   BOOST_CHECK_EQUAL (v.size (), vsize (2));
55   v.erase (v.begin () + 0);
56   BOOST_CHECK_EQUAL (v.size (), vsize (1));
57   BOOST_CHECK_EQUAL (v.back (), 1);
58 }
59
60 BOOST_AUTO_UNIT_TEST (vector_slice)
61 {
62   vector<int> v;
63   v.push_back (0);
64   v.push_back (1);
65   v.push_back (2);
66   v.push_back (3);
67 #if VECTOR_SLICE
68   BOOST_CHECK_EQUAL (v.slice (0, 0).size (), vsize (0));
69   BOOST_CHECK_EQUAL (v.slice (0, v.size ()).size (), v.size ());
70   BOOST_CHECK_EQUAL (v.slice (1, 2).size (), vsize (1));
71 #else
72   BOOST_CHECK_EQUAL (vector<int> (v.begin (), v.begin ()).size (), vsize (0));
73   BOOST_CHECK_EQUAL (vector<int> (v.begin (), v.end ()).size (), v.size ());
74   BOOST_CHECK_EQUAL (vector<int> (v.begin () + 1, v.begin () + 2).size (),
75                      vsize (1));
76 #endif
77 }
78
79 BOOST_AUTO_UNIT_TEST (vector_sorting)
80 {
81   vector<int> v;
82   v.push_back (2);
83   v.push_back (1);
84   v.push_back (0);
85 #if VECTOR_SORT
86   v.sort (default_compare);
87 #else
88   //sort (v.begin (), v.end ());
89   vector_sort (v, less<int> ());
90 #endif
91   BOOST_CHECK_EQUAL (v[0], 0);
92   BOOST_CHECK_EQUAL (v[1], 1);
93   BOOST_CHECK_EQUAL (v[2], 2);
94 }
95
96 BOOST_AUTO_UNIT_TEST (vector_insert)
97 {
98   vector<int> v;
99   v.push_back (0);
100 #if VECTOR_INSERT
101   v.insert (1, 0);
102 #else
103   v.insert (v.begin (), 1);
104 #endif  
105   BOOST_CHECK_EQUAL (v[0], 1);
106 #if VECTOR_INSERT
107   v.insert (2, v.size ());
108 #else
109   v.insert (v.end (), 2);
110 #endif  
111   BOOST_CHECK_EQUAL (v.back (), 2);
112   vector<int> u;
113   u.insert (u.begin (), v.begin (), v.end ());
114   BOOST_CHECK_EQUAL (u.size (), v.size ());
115   u.clear ();
116   u.insert (u.end (), v.begin (), v.end ());
117   BOOST_CHECK_EQUAL (u.size (), v.size ());
118   u.clear ();
119 }
120
121 BOOST_AUTO_UNIT_TEST (parray_concat)
122 {
123 #if !STD_VECTOR
124   Link_array<int> u, v;
125 #else
126   vector<int*> u, v;
127 #endif  
128   int a[5] = { 0, 1, 2, 3, 4 };
129   u.push_back (&a[0]);
130   u.push_back (&a[1]);
131   u.push_back (&a[2]);
132   v.push_back (&a[3]);
133   v.push_back (&a[4]);
134   concat (u, v);
135   BOOST_CHECK_EQUAL (u[0], &a[0]);
136   BOOST_CHECK_EQUAL (u[1], &a[1]);
137   BOOST_CHECK_EQUAL (u[2], &a[2]);
138   BOOST_CHECK_EQUAL (u[3], &a[3]);
139   BOOST_CHECK_EQUAL (u[4], &a[4]);
140   BOOST_CHECK_EQUAL (u.size (), vsize (5));
141   concat (u, v);
142   BOOST_CHECK_EQUAL (u.size (), vsize (7));
143
144   u.clear ();
145   v.clear ();
146   v.push_back (&a[0]);
147   v.push_back (&a[1]);
148   v.push_back (&a[2]);
149   v.push_back (&a[3]);
150   v.push_back (&a[4]);
151   concat (u, v);
152   BOOST_CHECK_EQUAL (u[0], &a[0]);
153   BOOST_CHECK_EQUAL (u[1], &a[1]);
154   BOOST_CHECK_EQUAL (u[2], &a[2]);
155   BOOST_CHECK_EQUAL (u[3], &a[3]);
156   BOOST_CHECK_EQUAL (u[4], &a[4]);
157   BOOST_CHECK_EQUAL (u.size (), vsize (5));
158 }
159
160 BOOST_AUTO_UNIT_TEST (parray_uniq)
161 {
162   vector<int> v;
163   v.push_back (0);
164   v.push_back (1);
165   v.push_back (0);
166   vector_sort (v, less<int> ());
167   uniq (v);
168   BOOST_CHECK_EQUAL (v.size (), vsize (2));
169 }
170
171 BOOST_AUTO_UNIT_TEST (vector_search)
172 {
173   vector<int> v;
174   v.push_back (0);
175   v.push_back (1);
176   v.push_back (2);
177   vsize i = binary_search (v, 1, less<int> ());
178   BOOST_CHECK_EQUAL (i, vsize (1));
179 }
180
181 #if 0
182 #include "file-name.hh"
183 string slashify (string file_name);
184
185 BOOST_AUTO_UNIT_TEST (mingw_slashify)
186 {
187   File_name f = string ("foe.ly");
188   string s = slashify (f.to_string ());
189   cout << s << endl;
190   BOOST_CHECK_EQUAL (s, "foe.ly");
191   f = string ("/tmp/x.ly");
192   s = slashify (f.to_string ());
193   cout << s << endl;
194   BOOST_CHECK_EQUAL (s, "/tmp/x.ly");
195   f = string ("c:/tmp/x.ly");
196   s = slashify (f.to_string ());
197   cout << s << endl;
198   BOOST_CHECK_EQUAL (s, "c:/tmp/x.ly");
199   f = string ("\\tmp\\x.ly");
200   s = slashify (f.to_string ());
201   cout << s << endl;
202   BOOST_CHECK_EQUAL (s, "/tmp/x.ly");
203 }
204 #endif
205
206 void mingw_slashify ();
207 void file_find ();
208
209 #include <boost/test/results_reporter.hpp>
210 #include <boost/test/framework.hpp>
211 #include <boost/test/detail/unit_test_parameters.hpp>
212
213 test_suite*
214 init_unit_test_suite (int, char**)
215 {
216   vsize i = 0;
217   vsize j = 0;
218   vector<int> v;
219   binary_search (v, 1, less<int> (), i, j);
220   //binary_search_bounds (v, 1, &default_compare, 0, 0);
221   
222   //Link_array<char> w;
223   vector<char*> w;
224   binary_search (w, (char*)1, less<char*> (), i, j);
225   
226   test_suite *test = BOOST_TEST_SUITE("Flower");
227
228
229   test->add (BOOST_TEST_CASE (vector_erase));
230   test->add (BOOST_TEST_CASE (vector_slice));
231   test->add (BOOST_TEST_CASE (vector_sorting));
232   test->add (BOOST_TEST_CASE (vector_insert));
233   test->add (BOOST_TEST_CASE (parray_concat));
234   test->add (BOOST_TEST_CASE (parray_uniq));
235   test->add (BOOST_TEST_CASE (vector_search));
236   test->add (BOOST_TEST_CASE (mingw_slashify));
237   test->add (BOOST_TEST_CASE (file_find));
238
239   return test;
240 }