2004-03-08 Benjamin Kosnik <bkoz@redhat.com>
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Mar 2004 06:01:39 +0000 (06:01 +0000)
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Mar 2004 06:01:39 +0000 (06:01 +0000)
PR c++/13658
* testsuite/23_containers/deque/modifiers/swap.cc: New.
* testsuite/23_containers/list/modifiers/swap.cc: New.
* testsuite/23_containers/map/modifiers/swap.cc: New.
* testsuite/23_containers/multimap/modifiers/swap.cc: New.
* testsuite/23_containers/multiset/modifiers/swap.cc: New.
* testsuite/23_containers/set/modifiers/swap.cc: New.
* testsuite/23_containers/vector/modifiers/swap.cc: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79151 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/23_containers/deque/modifiers/swap.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/list/modifiers/swap.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/map/modifiers/swap.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/set/modifiers/swap.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/vector/modifiers/swap.cc [new file with mode: 0644]

index 2b4eea2..1538ef3 100644 (file)
@@ -1,3 +1,14 @@
+2004-03-08  Benjamin Kosnik  <bkoz@redhat.com>
+       
+       PR c++/13658
+       * testsuite/23_containers/deque/modifiers/swap.cc: New.
+       * testsuite/23_containers/list/modifiers/swap.cc: New.
+       * testsuite/23_containers/map/modifiers/swap.cc: New.
+       * testsuite/23_containers/multimap/modifiers/swap.cc: New.
+       * testsuite/23_containers/multiset/modifiers/swap.cc: New.
+       * testsuite/23_containers/set/modifiers/swap.cc: New.
+       * testsuite/23_containers/vector/modifiers/swap.cc: New.
+       
 2004-03-08  Petur Runolfsson  <peturr02@ru.is>
 
        PR libstdc++/12658
diff --git a/libstdc++-v3/testsuite/23_containers/deque/modifiers/swap.cc b/libstdc++-v3/testsuite/23_containers/deque/modifiers/swap.cc
new file mode 100644 (file)
index 0000000..12cfa74
--- /dev/null
@@ -0,0 +1,63 @@
+// Copyright (C) 2004 Free Software Foundation
+//
+// 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 2, 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 COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+#include <deque>
+#include <testsuite_hooks.h>
+struct T { int i; };
+
+int swap_calls;
+
+namespace std
+{
+  template<> 
+    void 
+    deque<T, allocator<T> >::swap(deque<T, allocator<T> >&) 
+    { ++swap_calls; }
+}
+
+// Should use deque specialization for swap.
+void test01()
+{
+  bool test __attribute__((unused)) = true;
+  std::deque<T> A;
+  std::deque<T> B;
+  swap_calls = 0;
+  std::swap(A, B);
+  VERIFY(1 == swap_calls);
+}
+
+// Should use deque specialization for swap.
+void test02()
+{
+  bool test __attribute__((unused)) = true;
+  using namespace std;
+  deque<T> A;
+  deque<T> B;
+  swap_calls = 0;
+  swap(A, B);
+  VERIFY(1 == swap_calls);
+}
+
+// See c++/13658 for background info.
+int main()
+{
+  test01();
+  test02();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/list/modifiers/swap.cc b/libstdc++-v3/testsuite/23_containers/list/modifiers/swap.cc
new file mode 100644 (file)
index 0000000..d20dec0
--- /dev/null
@@ -0,0 +1,63 @@
+// Copyright (C) 2004 Free Software Foundation
+//
+// 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 2, 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 COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+#include <list>
+#include <testsuite_hooks.h>
+struct T { int i; };
+
+int swap_calls;
+
+namespace std
+{
+  template<> 
+    void 
+    list<T, allocator<T> >::swap(list<T, allocator<T> >&) 
+    { ++swap_calls; }
+}
+
+// Should use list specialization for swap.
+void test01()
+{
+  bool test __attribute__((unused)) = true;
+  std::list<T> A;
+  std::list<T> B;
+  swap_calls = 0;
+  std::swap(A, B);
+  VERIFY(1 == swap_calls);
+}
+
+// Should use list specialization for swap.
+void test02()
+{
+  bool test __attribute__((unused)) = true;
+  using namespace std;
+  list<T> A;
+  list<T> B;
+  swap_calls = 0;
+  swap(A, B);
+  VERIFY(1 == swap_calls);
+}
+
+// See c++/13658 for background info.
+int main()
+{
+  test01();
+  test02();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/map/modifiers/swap.cc b/libstdc++-v3/testsuite/23_containers/map/modifiers/swap.cc
new file mode 100644 (file)
index 0000000..8fb48cb
--- /dev/null
@@ -0,0 +1,63 @@
+// Copyright (C) 2004 Free Software Foundation
+//
+// 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 2, 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 COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+#include <map>
+#include <testsuite_hooks.h>
+struct T { int i; };
+
+int swap_calls;
+
+namespace std
+{
+  template<> 
+    void 
+    map<T, int>::swap(map<T, int>&) 
+    { ++swap_calls; }
+}
+
+// Should use map specialization for swap.
+void test01()
+{
+  bool test __attribute__((unused)) = true;
+  std::map<T, int> A;
+  std::map<T, int> B;
+  swap_calls = 0;
+  std::swap(A, B);
+  VERIFY(1 == swap_calls);
+}
+
+// Should use map specialization for swap.
+void test02()
+{
+  bool test __attribute__((unused)) = true;
+  using namespace std;
+  map<T, int> A;
+  map<T, int> B;
+  swap_calls = 0;
+  swap(A, B);
+  VERIFY(1 == swap_calls);
+}
+
+// See c++/13658 for background info.
+int main()
+{
+  test01();
+  test02();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap.cc b/libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap.cc
new file mode 100644 (file)
index 0000000..34425bd
--- /dev/null
@@ -0,0 +1,63 @@
+// Copyright (C) 2004 Free Software Foundation
+//
+// 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 2, 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 COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+#include <map>
+#include <testsuite_hooks.h>
+struct T { int i; };
+
+int swap_calls;
+
+namespace std
+{
+  template<> 
+    void 
+    multimap<T, int>::swap(multimap<T, int>&) 
+    { ++swap_calls; }
+}
+
+// Should use multimap specialization for swap.
+void test01()
+{
+  bool test __attribute__((unused)) = true;
+  std::multimap<T, int> A;
+  std::multimap<T, int> B;
+  swap_calls = 0;
+  std::swap(A, B);
+  VERIFY(1 == swap_calls);
+}
+
+// Should use multimap specialization for swap.
+void test02()
+{
+  bool test __attribute__((unused)) = true;
+  using namespace std;
+  multimap<T, int> A;
+  multimap<T, int> B;
+  swap_calls = 0;
+  swap(A, B);
+  VERIFY(1 == swap_calls);
+}
+
+// See c++/13658 for background info.
+int main()
+{
+  test01();
+  test02();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap.cc b/libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap.cc
new file mode 100644 (file)
index 0000000..809e153
--- /dev/null
@@ -0,0 +1,63 @@
+// Copyright (C) 2004 Free Software Foundation
+//
+// 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 2, 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 COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+#include <set>
+#include <testsuite_hooks.h>
+struct T { int i; };
+
+int swap_calls;
+
+namespace std
+{
+  template<> 
+    void 
+    multiset<T>::swap(multiset<T>&) 
+    { ++swap_calls; }
+}
+
+// Should use multiset specialization for swap.
+void test01()
+{
+  bool test __attribute__((unused)) = true;
+  std::multiset<T> A;
+  std::multiset<T> B;
+  swap_calls = 0;
+  std::swap(A, B);
+  VERIFY(1 == swap_calls);
+}
+
+// Should use multiset specialization for swap.
+void test02()
+{
+  bool test __attribute__((unused)) = true;
+  using namespace std;
+  multiset<T> A;
+  multiset<T> B;
+  swap_calls = 0;
+  swap(A, B);
+  VERIFY(1 == swap_calls);
+}
+
+// See c++/13658 for background info.
+int main()
+{
+  test01();
+  test02();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/set/modifiers/swap.cc b/libstdc++-v3/testsuite/23_containers/set/modifiers/swap.cc
new file mode 100644 (file)
index 0000000..dbf3b83
--- /dev/null
@@ -0,0 +1,63 @@
+// Copyright (C) 2004 Free Software Foundation
+//
+// 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 2, 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 COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+#include <set>
+#include <testsuite_hooks.h>
+struct T { int i; };
+
+int swap_calls;
+
+namespace std
+{
+  template<> 
+    void 
+    set<T>::swap(set<T>&) 
+    { ++swap_calls; }
+}
+
+// Should use set specialization for swap.
+void test01()
+{
+  bool test __attribute__((unused)) = true;
+  std::set<T> A;
+  std::set<T> B;
+  swap_calls = 0;
+  std::swap(A, B);
+  VERIFY(1 == swap_calls);
+}
+
+// Should use set specialization for swap.
+void test02()
+{
+  bool test __attribute__((unused)) = true;
+  using namespace std;
+  set<T> A;
+  set<T> B;
+  swap_calls = 0;
+  swap(A, B);
+  VERIFY(1 == swap_calls);
+}
+
+// See c++/13658 for background info.
+int main()
+{
+  test01();
+  test02();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/vector/modifiers/swap.cc b/libstdc++-v3/testsuite/23_containers/vector/modifiers/swap.cc
new file mode 100644 (file)
index 0000000..3122aa1
--- /dev/null
@@ -0,0 +1,63 @@
+// Copyright (C) 2004 Free Software Foundation
+//
+// 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 2, 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 COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+#include <vector>
+#include <testsuite_hooks.h>
+struct T { int i; };
+
+int swap_calls;
+
+namespace std
+{
+  template<> 
+    void 
+    vector<T, allocator<T> >::swap(vector<T, allocator<T> >&) 
+    { ++swap_calls; }
+}
+
+// Should use vector specialization for swap.
+void test01()
+{
+  bool test __attribute__((unused)) = true;
+  std::vector<T> A;
+  std::vector<T> B;
+  swap_calls = 0;
+  std::swap(A, B);
+  VERIFY(1 == swap_calls);
+}
+
+// Should use vector specialization for swap.
+void test02()
+{
+  bool test __attribute__((unused)) = true;
+  using namespace std;
+  vector<T> A;
+  vector<T> B;
+  swap_calls = 0;
+  swap(A, B);
+  VERIFY(1 == swap_calls);
+}
+
+// See c++/13658 for background info.
+int main()
+{
+  test01();
+  test02();
+  return 0;
+}