summaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/25_algorithms/fill
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3/testsuite/25_algorithms/fill')
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/fill/1.cc63
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/fill/2.cc63
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/fill/3.cc41
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/fill/35725.cc29
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/fill/4.cc75
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/2.cc34
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/pod.cc34
7 files changed, 339 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/25_algorithms/fill/1.cc b/libstdc++-v3/testsuite/25_algorithms/fill/1.cc
new file mode 100644
index 000000000..46bf33e55
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/fill/1.cc
@@ -0,0 +1,63 @@
+// 2004-06-25 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2004, 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/>.
+
+// 25.2.5 [lib.alg.fill] Fill
+
+#include <list>
+#include <algorithm>
+#include <testsuite_hooks.h>
+
+class num
+{
+ int stored;
+
+public:
+ num(int init = 0)
+ : stored(init)
+ { }
+
+ operator int() const
+ { return stored; }
+};
+
+// fill
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+ using namespace std;
+
+ const int val = 1;
+
+ const int V[] = { val, val, val, val, val, val, val };
+ const list<int>::size_type N = sizeof(V) / sizeof(int);
+
+ list<int> coll(N);
+ fill(coll.begin(), coll.end(), val);
+ VERIFY( equal(coll.begin(), coll.end(), V) );
+
+ list<num> coll2(N);
+ fill(coll2.begin(), coll2.end(), val);
+ VERIFY( equal(coll2.begin(), coll2.end(), V) );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/25_algorithms/fill/2.cc b/libstdc++-v3/testsuite/25_algorithms/fill/2.cc
new file mode 100644
index 000000000..d02d1ad89
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/fill/2.cc
@@ -0,0 +1,63 @@
+// 2004-06-25 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2004, 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/>.
+
+// 25.2.5 [lib.alg.fill] Fill
+
+#include <list>
+#include <algorithm>
+#include <testsuite_hooks.h>
+
+class num
+{
+ int stored;
+
+public:
+ num(int init = 0)
+ : stored(init)
+ { }
+
+ operator int() const
+ { return stored; }
+};
+
+// fill_n
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+ using namespace std;
+
+ const int val = 3;
+
+ const int V[] = { val, val, val, val, val, val, val, val, val };
+ const list<int>::size_type N = sizeof(V) / sizeof(int);
+
+ list<int> coll(N);
+ fill_n(coll.begin(), coll.size(), val);
+ VERIFY( equal(coll.begin(), coll.end(), V) );
+
+ list<num> coll2(N);
+ fill_n(coll2.begin(), coll2.size(), val);
+ VERIFY( equal(coll2.begin(), coll2.end(), V) );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/25_algorithms/fill/3.cc b/libstdc++-v3/testsuite/25_algorithms/fill/3.cc
new file mode 100644
index 000000000..5ababcab1
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/fill/3.cc
@@ -0,0 +1,41 @@
+// 2007-01-13 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007, 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/>.
+
+// 25.2.5 [lib.alg.fill] Fill
+
+#include <algorithm>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ char ca[1] = { '\0' };
+ signed char sc = 1;
+
+ std::fill_n(ca, 1, sc);
+ VERIFY( ca[0] == 1 );
+}
+
+int
+main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/25_algorithms/fill/35725.cc b/libstdc++-v3/testsuite/25_algorithms/fill/35725.cc
new file mode 100644
index 000000000..bc3e20087
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/fill/35725.cc
@@ -0,0 +1,29 @@
+// { dg-do compile }
+
+// Copyright (C) 2008, 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/>.
+
+#include <string>
+#include <vector>
+#include <algorithm>
+
+// libstdc++/35725
+void test01()
+{
+ std::vector<std::string> foo(20);
+ std::fill(foo.begin(), foo.end(), "bar");
+}
diff --git a/libstdc++-v3/testsuite/25_algorithms/fill/4.cc b/libstdc++-v3/testsuite/25_algorithms/fill/4.cc
new file mode 100644
index 000000000..838a71720
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/fill/4.cc
@@ -0,0 +1,75 @@
+// 2007-01-19 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2007, 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/>.
+
+// 25.2.5 [lib.alg.fill] Fill.
+
+#include <algorithm>
+#include <vector>
+#include <testsuite_hooks.h>
+
+void
+test01()
+{
+ using namespace std;
+ bool test __attribute__((unused)) = true;
+
+ const int A1[] = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3};
+ const int N1 = sizeof(A1) / sizeof(int);
+
+ int i1[N1];
+ fill(i1, i1 + N1, 3);
+ VERIFY( equal(i1, i1 + N1, A1) );
+
+ vector<int> v1(N1);
+ fill(v1.begin(), v1.end(), 3);
+ VERIFY( equal(v1.begin(), v1.end(), A1) );
+
+ const char A2[] = {'\3', '\3', '\3', '\3', '\3',
+ '\3', '\3', '\3', '\3', '\3'};
+ const int N2 = sizeof(A2) / sizeof(char);
+
+ char i2[N2];
+ fill(i2, i2 + N2, '\3');
+ VERIFY( equal(i2, i2 + N2, A2) );
+
+ vector<char> v2(N2);
+ fill(v2.begin(), v2.end(), '\3');
+ VERIFY( equal(v2.begin(), v2.end(), A2) );
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+ const wchar_t A3[] = {L'\3', L'\3', L'\3', L'\3', L'\3',
+ L'\3', L'\3', L'\3', L'\3', L'\3'};
+ const int N3 = sizeof(A3) / sizeof(wchar_t);
+
+ wchar_t i3[N3];
+ fill(i3, i3 + N3, L'\3');
+ VERIFY( equal(i3, i3 + N3, A3) );
+
+ vector<wchar_t> v3(N3);
+ fill(v3.begin(), v3.end(), L'\3');
+ VERIFY( equal(v3.begin(), v3.end(), A3) );
+#endif
+}
+
+int
+main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/2.cc b/libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/2.cc
new file mode 100644
index 000000000..95343d2ba
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/2.cc
@@ -0,0 +1,34 @@
+// { dg-do compile }
+
+// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2007, 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/>.
+
+
+#include <algorithm>
+#include <testsuite_api.h>
+
+namespace std
+{
+ using __gnu_test::NonDefaultConstructible;
+
+ typedef NonDefaultConstructible value_type;
+ typedef value_type* iterator_type;
+
+ template void fill(iterator_type, iterator_type, const value_type&);
+}
diff --git a/libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/pod.cc b/libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/pod.cc
new file mode 100644
index 000000000..5695c77da
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/pod.cc
@@ -0,0 +1,34 @@
+// { dg-do compile }
+
+// 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2007, 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/>.
+
+
+#include <algorithm>
+#include <testsuite_character.h>
+
+namespace std
+{
+ using __gnu_test::pod_int;
+
+ typedef pod_int value_type;
+ typedef value_type* iterator_type;
+
+ template void fill(iterator_type, iterator_type, const value_type&);
+}