summaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/24_iterators/reverse_iterator
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /libstdc++-v3/testsuite/24_iterators/reverse_iterator
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'libstdc++-v3/testsuite/24_iterators/reverse_iterator')
-rw-r--r--libstdc++-v3/testsuite/24_iterators/reverse_iterator/11729.cc72
-rw-r--r--libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc45
-rw-r--r--libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc39
-rw-r--r--libstdc++-v3/testsuite/24_iterators/reverse_iterator/greedy_ops.cc43
-rw-r--r--libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc40
-rw-r--r--libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/current.cc31
-rw-r--r--libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/explicit_instantiation.cc26
-rw-r--r--libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/typedefs.cc36
8 files changed, 332 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/24_iterators/reverse_iterator/11729.cc b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/11729.cc
new file mode 100644
index 000000000..6180da7a2
--- /dev/null
+++ b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/11729.cc
@@ -0,0 +1,72 @@
+// 2005-10-04 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2005, 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
+// <http://www.gnu.org/licenses/>.
+
+// 24.4.1.2 Reverse iterators
+
+#include <vector>
+#include <testsuite_hooks.h>
+
+// libstdc++/11729
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ typedef std::vector<int> Vec;
+ typedef Vec::reverse_iterator reverse_iterator;
+ typedef Vec::const_reverse_iterator const_reverse_iterator;
+
+ Vec v(2);
+
+ reverse_iterator rbeg = v.rbegin();
+ reverse_iterator rend = v.rend();
+ const_reverse_iterator constrbeg(rbeg);
+ const_reverse_iterator constrend(rend);
+
+ VERIFY( rbeg == constrbeg );
+ VERIFY( constrend == rend );
+
+ VERIFY( rbeg != constrend );
+ VERIFY( constrbeg != rend );
+
+ VERIFY( rbeg < constrend );
+ VERIFY( constrbeg < rend );
+
+ VERIFY( rend > constrbeg );
+ VERIFY( constrend > rbeg );
+
+ VERIFY( rend >= constrend );
+ VERIFY( constrbeg >= rbeg );
+
+ VERIFY( rbeg <= constrbeg );
+ VERIFY( constrend <= rend );
+
+ VERIFY( rbeg - constrbeg == 0 );
+ VERIFY( constrend - rend == 0 );
+
+ VERIFY( rend - constrbeg > 0 );
+ VERIFY( constrend - rbeg > 0 );
+
+ VERIFY( (constrbeg = rend) == rend );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc
new file mode 100644
index 000000000..945b57aa4
--- /dev/null
+++ b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc
@@ -0,0 +1,45 @@
+// 2001-06-21 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2003, 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
+// <http://www.gnu.org/licenses/>.
+
+// 24.4.1.2 Reverse iterators
+
+#include <iterator>
+
+void test02()
+{
+ typedef std::reverse_iterator<int*> iterator_type;
+ iterator_type it01;
+ iterator_type it02;
+
+ // Sanity check non-member operators and functions can be instantiated.
+ it01 == it02;
+ it01 != it02;
+ it01 < it02;
+ it01 <= it02;
+ it01 > it02;
+ it01 >= it02;
+ it01 - it02;
+ 5 + it02;
+}
+
+int main()
+{
+ test02();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc
new file mode 100644
index 000000000..2f58f27ce
--- /dev/null
+++ b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc
@@ -0,0 +1,39 @@
+// 2003-05-29 Paolo Carlini <pcarlini@unitus.it>
+
+// Copyright (C) 2003, 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
+// <http://www.gnu.org/licenses/>.
+
+// 24.4.1.2 Reverse iterators
+
+#include <iterator>
+#include <vector>
+#include <testsuite_hooks.h>
+
+// libstdc++/10783
+void test03()
+{
+ bool test __attribute__((unused)) = true;
+
+ typedef std::vector<int> V;
+ VERIFY( sizeof(V::iterator) == sizeof(V::reverse_iterator) );
+}
+
+int main()
+{
+ test03();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/24_iterators/reverse_iterator/greedy_ops.cc b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/greedy_ops.cc
new file mode 100644
index 000000000..3c7c46fde
--- /dev/null
+++ b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/greedy_ops.cc
@@ -0,0 +1,43 @@
+// { dg-do compile }
+// Copyright (C) 2010 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
+// <http://www.gnu.org/licenses/>.
+
+#include <iterator>
+#include <testsuite_greedy_ops.h>
+
+void test01()
+{
+ typedef std::reverse_iterator<greedy_ops::X*> iterator_type;
+
+ iterator_type it;
+
+ it == it;
+ it != it;
+ it < it;
+ it <= it;
+ it > it;
+ it >= it;
+ it - it;
+ 1 + it;
+ it + 1;
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc
new file mode 100644
index 000000000..71d4297b7
--- /dev/null
+++ b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc
@@ -0,0 +1,40 @@
+// { dg-do compile }
+// 2001-06-21 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2003, 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
+// <http://www.gnu.org/licenses/>.
+
+// 24.4.1.2 Reverse iterators
+
+#include <iterator>
+
+void test01()
+{
+ using namespace std;
+
+ // Check for required base class.
+ long l;
+ typedef reverse_iterator<long*> test_iterator;
+ typedef iterator<iterator_traits<long*>::iterator_category,
+ iterator_traits<long*>::value_type,
+ iterator_traits<long*>::difference_type,
+ iterator_traits<long*>::pointer,
+ iterator_traits<long*>::reference>
+ base_iterator;
+ test_iterator r_it(&l);
+ base_iterator* base __attribute__((unused)) = &r_it;
+}
diff --git a/libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/current.cc b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/current.cc
new file mode 100644
index 000000000..cad21e39e
--- /dev/null
+++ b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/current.cc
@@ -0,0 +1,31 @@
+// { dg-do compile }
+// 2001-06-21 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2003, 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
+// <http://www.gnu.org/licenses/>.
+
+// 24.4.1.2 Reverse iterators
+
+#include <iterator>
+
+// Check data member 'current' accessible.
+class test_dm : public std::reverse_iterator<int*>
+{
+ int* p;
+public:
+ test_dm(): p(current) { }
+};
diff --git a/libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/explicit_instantiation.cc
new file mode 100644
index 000000000..fd6dfd249
--- /dev/null
+++ b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/explicit_instantiation.cc
@@ -0,0 +1,26 @@
+// { dg-do compile }
+// 2001-06-21 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2003, 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
+// <http://www.gnu.org/licenses/>.
+
+// 24.4.1.2 Reverse iterators
+
+#include <iterator>
+
+// Make sure iterator can be instantiated.
+template class std::reverse_iterator<int*>;
diff --git a/libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/typedefs.cc b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/typedefs.cc
new file mode 100644
index 000000000..19e1637f8
--- /dev/null
+++ b/libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/typedefs.cc
@@ -0,0 +1,36 @@
+// { dg-do compile }
+// 2001-06-21 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2003, 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
+// <http://www.gnu.org/licenses/>.
+
+// 24.4.1.2 Reverse iterators
+
+#include <iterator>
+
+void test01()
+{
+ using namespace std;
+
+ // Check for required typedefs
+ typedef reverse_iterator<long*> test_iterator;
+ typedef test_iterator::value_type value_type;
+ typedef test_iterator::difference_type difference_type;
+ typedef test_iterator::pointer pointer;
+ typedef test_iterator::reference reference;
+ typedef test_iterator::iterator_category iteratory_category;
+}