From: Chris Jefferson Date: Wed, 7 Oct 2009 09:58:44 +0000 (+0000) Subject: moveable2.cc: New. X-Git-Tag: upstream/12.2.0~96931 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3c5339cb11398930a73945a6dab26ac824514d7b;p=platform%2Fupstream%2Fgcc.git moveable2.cc: New. 2009-10-07 Chris Jefferson * testsuite/25_algorithms/rotate/moveable2.cc: New. From-SVN: r152524 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index de805fe..1526c68 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,7 @@ +2009-10-07 Chris Jefferson + + * testsuite/25_algorithms/rotate/moveable2.cc: New. + 2009-10-06 Janis Johnson * testsuite/decimal/binary-arith.cc: Fix directive to skip test. diff --git a/libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc b/libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc new file mode 100644 index 0000000..d48d602 --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc @@ -0,0 +1,79 @@ +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +// 25.2.10 rotate + +// Tests rotate when an moveable class is used + +#undef _GLIBCXX_CONCEPT_CHECKS + +#include +#include +#include +#include + +using __gnu_test::test_container; +using __gnu_test::forward_iterator_wrapper; +using __gnu_test::bidirectional_iterator_wrapper; +using __gnu_test::random_access_iterator_wrapper; +using __gnu_test::rvalstruct; + +typedef test_container Fcontainer; +typedef test_container Bcontainer; +typedef test_container Rcontainer; + +template + void + test_con(int length, int rotate_pos) + { + bool test __attribute__((unused)) = true; + + rvalstruct array[length]; + for(int i = 0; i < length; ++i) + array[i] = i; + Con con(array, array + length); + std::rotate(con.begin(), con.it(rotate_pos), con.end()); + + if(length != 0) + { + for(int i = 0; i < length; ++i) + VERIFY( array[i].valid && array[i].val == (i + rotate_pos) % length ); + } + } + +void +test01() +{ + for(int i = 0; i < 20; ++i) + { + for(int j = 0; j <= i; ++j) + { + test_con(i, j); + test_con(i, j); + test_con(i, j); + } + } +} + +int +main() +{ + test01(); + return 0; +}