On 10/06/2017 06:20 PM, David Malcolm wrote:
> 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

Hi.

I like it! Do you want to commit it before there will be
a consumer of the function?

Martin

> 
> 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
> 

Reply via email to