]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/25_algorithms/rotate/dr488.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 25_algorithms / rotate / dr488.cc
CommitLineData
83ffe9cd 1// Copyright (C) 2015-2023 Free Software Foundation, Inc.
1d0a12dc
JW
2//
3// This file is part of the GNU ISO C++ Library. This library is free
4// software; you can redistribute it and/or modify it under the
5// terms of the GNU General Public License as published by the
6// Free Software Foundation; either version 3, or (at your option)
7// any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13
14// You should have received a copy of the GNU General Public License along
15// with this library; see the file COPYING3. If not see
16// <http://www.gnu.org/licenses/>.
17
52066eae 18// { dg-do run { target c++11 } }
1d0a12dc
JW
19
20#include <algorithm>
21#include <iterator>
22#include <forward_list>
23#include <list>
24#include <vector>
25#include <testsuite_hooks.h>
26
27template<typename Container>
28void
29test(Container& c)
30{
31 int size = std::distance(c.begin(), c.end());
32 for (int i=0; i < size; ++i)
33 {
34 auto first = c.begin(), middle = std::next(first, i), last = c.end();
35 auto r = std::rotate(first, middle, last);
36 auto expected = std::next(first, std::distance(middle, last));
37 VERIFY( r == expected );
38 }
39}
40
41void
42test01()
43{
44 // test random access iterators
45 std::vector<int> v{ 0, 1, 2, 3, 4 };
46 test(v);
47 v.push_back(5);
48 test(v);
49}
50
51void
52test02()
53{
54 // test bidirectional iterators
55 std::list<int> l{ 0, 1, 2, 3, 4 };
56 test(l);
57 l.push_back(5);
58 test(l);
59}
60
61void
62test03()
63{
64 // test forward iterators
65 std::forward_list<int> l{ 0, 1, 2, 3, 4 };
66 test(l);
67 l.push_front(5);
68 test(l);
69}
70
71int
72main()
73{
74 test01();
75 test02();
76 test03();
77}