diff options
author | Martin Liska <mliska@suse.cz> | 2018-05-29 11:55:02 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-05-29 09:55:02 +0000 |
commit | c04f64807ee5e911741290aafc90d17618a02dca (patch) | |
tree | edf1890fb08bd388e0654ec0a86b1dfadec70166 /gcc/vec.c | |
parent | 86e74d5869813c22b946d76e7dbe960ef0a0c1f2 (diff) | |
download | gcc-c04f64807ee5e911741290aafc90d17618a02dca.zip gcc-c04f64807ee5e911741290aafc90d17618a02dca.tar.gz gcc-c04f64807ee5e911741290aafc90d17618a02dca.tar.bz2 |
Add vec::reverse.
2018-05-29 Martin Liska <mliska@suse.cz>
David Malcolm <dmalcolm@redhat.com>
* vec.c (test_reverse): New.
(vec_c_tests): Add new test.
* vec.h (vl_ptr>::reverse): New function.
Co-Authored-By: David Malcolm <dmalcolm@redhat.com>
From-SVN: r260890
Diffstat (limited to 'gcc/vec.c')
-rw-r--r-- | gcc/vec.c | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -476,6 +476,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 @@ -492,6 +529,7 @@ vec_c_tests () test_unordered_remove (); test_block_remove (); test_qsort (); + test_reverse (); } } // namespace selftest |