[PATCH] Add selftest for vec::reverse
David Malcolm
dmalcolm@redhat.com
Fri Oct 6 16:20:00 GMT 2017
Martin: I noticed that your switch expansion patch added a
vec::reverse ()
method. Here's a proposed selftest for it, mostly to verify
that it handles even vs odd lengths (which it does).
Only lightly tested; hope this is useful.
Dave
gcc/ChangeLog:
* vec.c (selftest::test_reverse): New function.
(selftest::vec_c_tests): Call it.
---
gcc/vec.c | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/gcc/vec.c b/gcc/vec.c
index d612703..5d70973 100644
--- a/gcc/vec.c
+++ b/gcc/vec.c
@@ -359,6 +359,43 @@ test_qsort ()
ASSERT_EQ (10, v.length ());
}
+/* Verify that vec::reverse works correctly. */
+
+static void
+test_reverse ()
+{
+ /* Reversing an empty vec ought to be a no-op. */
+ {
+ auto_vec <int> v;
+ ASSERT_EQ (0, v.length ());
+ v.reverse ();
+ ASSERT_EQ (0, v.length ());
+ }
+
+ /* Verify reversing a vec with even length. */
+ {
+ auto_vec <int> v;
+ safe_push_range (v, 0, 4);
+ v.reverse ();
+ ASSERT_EQ (3, v[0]);
+ ASSERT_EQ (2, v[1]);
+ ASSERT_EQ (1, v[2]);
+ ASSERT_EQ (0, v[3]);
+ ASSERT_EQ (4, v.length ());
+ }
+
+ /* Verify reversing a vec with odd length. */
+ {
+ auto_vec <int> v;
+ safe_push_range (v, 0, 3);
+ v.reverse ();
+ ASSERT_EQ (2, v[0]);
+ ASSERT_EQ (1, v[1]);
+ ASSERT_EQ (0, v[2]);
+ ASSERT_EQ (3, v.length ());
+ }
+}
+
/* Run all of the selftests within this file. */
void
@@ -374,6 +411,7 @@ vec_c_tests ()
test_unordered_remove ();
test_block_remove ();
test_qsort ();
+ test_reverse ();
}
} // namespace selftest
--
1.8.5.3
More information about the Gcc-patches
mailing list