[beast: 11/12] SFI: tests: add test function for vector_erase_element() and copy_reordered()



commit eafd91cf8dd37e98b1c4d63b195e579f8654eaa4
Author: Tim Janik <timj gnu org>
Date:   Mon Sep 25 23:25:02 2017 +0200

    SFI: tests: add test function for vector_erase_element() and copy_reordered()
    
    Signed-off-by: Tim Janik <timj gnu org>

 sfi/tests/misctests.cc |   37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)
---
diff --git a/sfi/tests/misctests.cc b/sfi/tests/misctests.cc
index 5a92ec8..b1462b0 100644
--- a/sfi/tests/misctests.cc
+++ b/sfi/tests/misctests.cc
@@ -11,6 +11,43 @@
 
 using namespace Bse;
 
+#define print_vector(v, fmt)       ({ printf ("{"); for (const auto e : v) printf (" " fmt, e); printf (" 
}\n"); })
+
+static void
+test_vector_utils()
+{
+  std::vector<int> ref;
+  std::vector<int> v1 = { +17, +7, +5, +3, +1, -1, -3, -5, -7, -19 };
+  std::vector<int> v2 = { +27, -7, +4, -2, 0, -1, +2, -6, +7, -12, +66 };
+  std::vector<int> rv;
+  copy_reordered (v1.begin(), v1.end(), v2.begin(), v2.end(), std::back_inserter (rv));
+  ref = { -7, -1, +7, +17, +5, +3, +1, -3, -5, -19 };
+  TASSERT (rv == ref); // print_vector (rv, "%d");
+  vector_erase_element (v1, -3);    ref = { +17, +7, +5, +3, +1, -1, -5, -7, -19 };   TASSERT (v1 == ref);
+  vector_erase_element (v1, +5);    ref = { +17, +7, +3, +1, -1, -5, -7, -19 };       TASSERT (v1 == ref);
+  vector_erase_element (v1, -5);    ref = { +17, +7, +3, +1, -1, -7, -19 };           TASSERT (v1 == ref);
+  vector_erase_element (v1, -19);   ref = { +17, +7, +3, +1, -1, -7 };                TASSERT (v1 == ref);
+  vector_erase_element (v1, +17);   ref = { +7, +3, +1, -1, -7 };                     TASSERT (v1 == ref);
+  vector_erase_element (v1, +77);   ref = { +7, +3, +1, -1, -7 };                     TASSERT (v1 == ref);
+  vector_erase_element (v1, 0);     ref = { +7, +3, +1, -1, -7 };                     TASSERT (v1 == ref);
+  rv.clear(); copy_reordered (v1.begin(), v1.end(), v2.begin(), v2.end(), std::back_inserter (rv));
+  ref = { -7, -1, +7, +3, +1 };                                 TASSERT (rv == ref);
+  v1.push_back (0);
+  rv.clear(); copy_reordered (v1.begin(), v1.end(), v2.begin(), v2.end(), std::back_inserter (rv));
+  ref = { -7, 0, -1, +7, +3, +1 };                              TASSERT (rv == ref);
+  v1.push_back (0);
+  rv.clear(); copy_reordered (v1.begin(), v1.end(), v2.begin(), v2.end(), std::back_inserter (rv));
+  ref = { -7, 0, -1, +7, +3, +1, 0 };                           TASSERT (rv == ref);
+  v1.push_back (+2);
+  rv.clear(); copy_reordered (v1.begin(), v1.end(), v2.begin(), v2.end(), std::back_inserter (rv));
+  ref = { -7, 0, -1, +2, +7, +3, +1, 0 };                       TASSERT (rv == ref);
+  v1.resize (201);
+  std::iota (v1.begin(), v1.end(), -100); // v1 = -100 .. +100
+  rv.clear(); copy_reordered (v2.begin(), v2.end(), v1.begin(), v1.end(), std::back_inserter (rv));
+  ref = { -12, -7, -6, -2, -1, 0, +2, +4, +7, +27, +66 };       TASSERT (rv == ref);
+}
+TEST_ADD (test_vector_utils);
+
 static void
 test_paths()
 {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]