]> git.donarmstrong.com Git - lilypond.git/blob - flower/test-std.cc
Web-ja: update introduction
[lilypond.git] / flower / test-std.cc
1 #define HAVE_BOOST_LAMBDA 1
2 #include "std-vector.hh"
3
4 #include <iostream>
5
6 #define YAFFUT_MAIN
7 #include "yaffut.hh"
8
9 using namespace std;
10
11 template<typename T>
12 void
13 print (vector<T> v)
14 {
15   for (vsize i = 0; i < v.size (); i++)
16     cout << "v[" << i << "] = " << v[i] << endl;
17   cout << endl;
18 }
19
20 FUNC (vector_erase)
21 {
22   vector<int> v;
23   v.push_back (0);
24   v.push_back (1);
25   EQUAL (v.size (), vsize (2));
26   v.erase (v.begin () + 1);
27   EQUAL (v.size (), vsize (1));
28   EQUAL (v.back (), 0);
29
30   v.push_back (1);
31   EQUAL (v.size (), vsize (2));
32   v.erase (v.begin () + 0);
33   EQUAL (v.size (), vsize (1));
34   EQUAL (v.back (), 1);
35 }
36
37 FUNC (vector_slice)
38 {
39   vector<int> v;
40   v.push_back (0);
41   v.push_back (1);
42   v.push_back (2);
43   v.push_back (3);
44 #if VECTOR_SLICE
45   EQUAL (v.slice (0, 0).size (), vsize (0));
46   EQUAL (v.slice (0, v.size ()).size (), v.size ());
47   EQUAL (v.slice (1, 2).size (), vsize (1));
48 #else
49   EQUAL (vector<int> (v.begin (), v.begin ()).size (), vsize (0));
50   EQUAL (vector<int> (v.begin (), v.end ()).size (), v.size ());
51   EQUAL (vector<int> (v.begin () + 1, v.begin () + 2).size (),
52          vsize (1));
53 #endif
54 }
55
56 FUNC (vector_sorting)
57 {
58   vector<int> v;
59   v.push_back (2);
60   v.push_back (1);
61   v.push_back (0);
62 #if VECTOR_SORT
63   v.sort (default_compare);
64 #else
65   //sort (v.begin (), v.end ());
66   vector_sort (v, less<int> ());
67 #endif
68   EQUAL (v[0], 0);
69   EQUAL (v[1], 1);
70   EQUAL (v[2], 2);
71 }
72
73 FUNC (vector_insert)
74 {
75   vector<int> v;
76   v.push_back (0);
77 #if VECTOR_INSERT
78   v.insert (1, 0);
79 #else
80   v.insert (v.begin (), 1);
81 #endif
82   EQUAL (v[0], 1);
83 #if VECTOR_INSERT
84   v.insert (2, v.size ());
85 #else
86   v.insert (v.end (), 2);
87 #endif
88   EQUAL (v.back (), 2);
89   vector<int> u;
90   u.insert (u.begin (), v.begin (), v.end ());
91   EQUAL (u.size (), v.size ());
92   u.clear ();
93   u.insert (u.end (), v.begin (), v.end ());
94   EQUAL (u.size (), v.size ());
95   u.clear ();
96 }
97
98 FUNC (parray_concat)
99 {
100   vector<int *> u, v;
101   int a[5] = { 0, 1, 2, 3, 4 };
102   u.push_back (&a[0]);
103   u.push_back (&a[1]);
104   u.push_back (&a[2]);
105   v.push_back (&a[3]);
106   v.push_back (&a[4]);
107   concat (u, v);
108   EQUAL (u[0], &a[0]);
109   EQUAL (u[1], &a[1]);
110   EQUAL (u[2], &a[2]);
111   EQUAL (u[3], &a[3]);
112   EQUAL (u[4], &a[4]);
113   EQUAL (u.size (), vsize (5));
114   concat (u, v);
115   EQUAL (u.size (), vsize (7));
116
117   u.clear ();
118   v.clear ();
119   v.push_back (&a[0]);
120   v.push_back (&a[1]);
121   v.push_back (&a[2]);
122   v.push_back (&a[3]);
123   v.push_back (&a[4]);
124   concat (u, v);
125   EQUAL (u[0], &a[0]);
126   EQUAL (u[1], &a[1]);
127   EQUAL (u[2], &a[2]);
128   EQUAL (u[3], &a[3]);
129   EQUAL (u[4], &a[4]);
130   EQUAL (u.size (), vsize (5));
131 }
132
133 FUNC (parray_uniq)
134 {
135   vector<int> v;
136   v.push_back (0);
137   v.push_back (1);
138   v.push_back (0);
139   vector_sort (v, less<int> ());
140   uniq (v);
141   EQUAL (v.size (), vsize (2));
142 }
143
144 FUNC (vector_search)
145 {
146   vector<int> v;
147   v.push_back (0);
148   v.push_back (1);
149   v.push_back (2);
150   vsize i = binary_search (v, 1, less<int> ());
151   EQUAL (i, vsize (1));
152 }