]> git.donarmstrong.com Git - lilypond.git/blobdiff - flower/test-std.cc
* flower/test-std.cc: Add simple unit test for vector migration.
[lilypond.git] / flower / test-std.cc
index 85e0a372fa040728c1555cf16d150f7010f3dec1..1e3f0f125ffc8f16b378ce738ea6d601d408d1eb 100644 (file)
 
 using boost::unit_test::test_suite;
 
+#if !STD_VECTOR
+#define vector flower_vector
+#endif
+
 template<typename T>
 void
 print (vector<T> v)
 {
   for (vsize i = 0; i < v.size (); i++)
     cout << "v[" << i << "] = " << v[i] << endl;
+  cout << endl;
 }
 
 BOOST_AUTO_UNIT_TEST (vector_erase)
@@ -23,23 +28,42 @@ BOOST_AUTO_UNIT_TEST (vector_erase)
   vector<int> v;
   v.push_back (0);
   v.push_back (1);
-  BOOST_CHECK_EQUAL (v.size (), 2u);
+  BOOST_CHECK_EQUAL (v.size (), vsize (2));
   v.erase (v.begin () + 1);
-  BOOST_CHECK_EQUAL (v.size (), 1u);
+  BOOST_CHECK_EQUAL (v.size (), vsize (1));
   BOOST_CHECK_EQUAL (v.back (), 0);
 
   v.push_back (1);
-  BOOST_CHECK_EQUAL (v.size (), 2u);
+  BOOST_CHECK_EQUAL (v.size (), vsize (2));
   v.erase (v.begin () + 0);
-  BOOST_CHECK_EQUAL (v.size (), 1u);
+  BOOST_CHECK_EQUAL (v.size (), vsize (1));
   BOOST_CHECK_EQUAL (v.back (), 1);
 }
 
+BOOST_AUTO_UNIT_TEST (vector_slice)
+{
+  vector<int> v;
+  v.push_back (0);
+  v.push_back (1);
+  v.push_back (2);
+  v.push_back (3);
+#if VECTOR_SLICE
+  BOOST_CHECK_EQUAL (v.slice (0, 0).size (), vsize (0));
+  BOOST_CHECK_EQUAL (v.slice (0, v.size ()).size (), v.size ());
+  BOOST_CHECK_EQUAL (v.slice (1, 2).size (), vsize (1));
+#else
+  BOOST_CHECK_EQUAL (vector<int> (v.begin (), v.begin ()).size (), vsize (0));
+  BOOST_CHECK_EQUAL (vector<int> (v.begin (), v.end ()).size (), v.size ());
+  BOOST_CHECK_EQUAL (vector<int> (v.begin () + 1, v.begin () + 2).size (),
+                    vsize (1));
+#endif
+}
 
 test_suite*
 init_unit_test_suite (int, char**)
 {
   test_suite *test = BOOST_TEST_SUITE("std::Flower");
   test->add (BOOST_TEST_CASE (vector_erase));
+  test->add (BOOST_TEST_CASE (vector_slice));
   return test;
 }