summaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/27_io/fpos
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/27_io/fpos
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/27_io/fpos')
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/11450.cc42
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/14252.cc53
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/14320-1.cc65
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/14320-2.cc41
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/14320-3.cc42
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/14320-4.cc51
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/14320-5.cc44
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/14775.cc54
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/mbstate_t/1.cc59
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/mbstate_t/12065.cc46
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/mbstate_t/2.cc88
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/mbstate_t/3.cc56
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/mbstate_t/4_neg.cc43
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/mbstate_t/5.cc40
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/mbstate_t/6.cc41
-rw-r--r--libstdc++-v3/testsuite/27_io/fpos/requirements/explicit_instantiation.cc45
16 files changed, 810 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/27_io/fpos/11450.cc b/libstdc++-v3/testsuite/27_io/fpos/11450.cc
new file mode 100644
index 000000000..768c0aa3b
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/11450.cc
@@ -0,0 +1,42 @@
+// 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/>.
+
+// 27.4.3 fpos
+
+#include <ios>
+#include <testsuite_hooks.h>
+
+// libstdc++/11450
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ std::fpos<int> p;
+ VERIFY( p.state() == 0 );
+ p.state(42);
+ VERIFY( p.state() == 42 );
+
+ std::fpos<int> q = p + static_cast<std::streamoff>(1);
+ VERIFY( q.state() == 42 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/fpos/14252.cc b/libstdc++-v3/testsuite/27_io/fpos/14252.cc
new file mode 100644
index 000000000..c114ff0fa
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/14252.cc
@@ -0,0 +1,53 @@
+// 2004-02-24 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2004, 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/>.
+
+
+// 27.4.3 template class fpos
+
+#include <ios>
+#include <testsuite_hooks.h>
+
+// libstdc++/14252
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ std::streamoff off01 = 10;
+ std::streamoff off02 = 2;
+ std::streamoff off03 = 2004;
+ std::streamoff off04 = 1;
+
+ VERIFY( off01++ == 10 );
+ VERIFY( off01 == 11 );
+
+ VERIFY( ++off02 == 3 );
+ VERIFY( off02 == 3 );
+
+ VERIFY( off03-- == 2004 );
+ VERIFY( off03 == 2003 );
+
+ VERIFY( --off04 == 0 );
+ VERIFY( off04 == 0 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/fpos/14320-1.cc b/libstdc++-v3/testsuite/27_io/fpos/14320-1.cc
new file mode 100644
index 000000000..a90741294
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/14320-1.cc
@@ -0,0 +1,65 @@
+// 2004-03-02 Petur Runolfsson <peturr02@ru.is>
+
+// Copyright (C) 2004, 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/>.
+
+// 27.4.3 fpos
+
+// { dg-do run }
+
+#include <typeinfo>
+#include <limits>
+#include <iterator>
+#include <testsuite_hooks.h>
+
+// libstdc++/14320
+void test01()
+{
+ using namespace std;
+ bool test __attribute__((unused)) = true;
+
+ typedef istreambuf_iterator<char>::difference_type Distance;
+
+ bool found = false;
+ // The C++ standard didn't originally have "long long", however that
+ // type will be in the C++0x standard and testing for it allows
+ // ilp32 targets to pass this test when `Distance' is 64 bits.
+ if (typeid(Distance) == typeid(long long int))
+ found = true;
+ if (typeid(Distance) == typeid(long int))
+ found = true;
+ if (typeid(Distance) == typeid(int))
+ found = true;
+ if (typeid(Distance) == typeid(short int))
+ found = true;
+ if (typeid(Distance) == typeid(signed char))
+ found = true;
+ if (numeric_limits<char>::is_signed &&
+ typeid(Distance) == typeid(char))
+ found = true;
+ if (numeric_limits<wchar_t>::is_signed &&
+ typeid(Distance) == typeid(wchar_t))
+ found = true;
+
+ VERIFY( found );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/fpos/14320-2.cc b/libstdc++-v3/testsuite/27_io/fpos/14320-2.cc
new file mode 100644
index 000000000..23a9854a4
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/14320-2.cc
@@ -0,0 +1,41 @@
+// 2004-03-02 Petur Runolfsson <peturr02@ru.is>
+
+// Copyright (C) 2004, 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/>.
+
+// 27.4.3 fpos
+
+#include <iterator>
+#include <limits>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ using namespace std;
+ bool test __attribute__((unused)) = true;
+
+ typedef istreambuf_iterator<char>::difference_type Distance;
+ typedef numeric_limits<Distance> Limits;
+
+ VERIFY( Limits::is_specialized );
+ VERIFY( Limits::is_signed );
+}
+
+int main()
+{
+ test01();
+}
diff --git a/libstdc++-v3/testsuite/27_io/fpos/14320-3.cc b/libstdc++-v3/testsuite/27_io/fpos/14320-3.cc
new file mode 100644
index 000000000..dc9891143
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/14320-3.cc
@@ -0,0 +1,42 @@
+// 2004-03-02 Petur Runolfsson <peturr02@ru.is>
+
+// Copyright (C) 2004, 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/>.
+
+// 27.4.3 fpos
+
+#include <iterator>
+#include <testsuite_hooks.h>
+
+// libstdc++/14320
+void test01()
+{
+ using namespace std;
+ bool test __attribute__((unused)) = true;
+
+ typedef std::istreambuf_iterator<char>::difference_type Distance;
+ Distance d = 2;
+ Distance e = 3;
+ d *= e;
+ VERIFY( static_cast<int>(d) == 6 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/fpos/14320-4.cc b/libstdc++-v3/testsuite/27_io/fpos/14320-4.cc
new file mode 100644
index 000000000..37c0ad60b
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/14320-4.cc
@@ -0,0 +1,51 @@
+// 2004-03-02 Petur Runolfsson <peturr02@ru.is>
+
+// Copyright (C) 2004, 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/>.
+
+// 27.4.3 fpos
+
+#include <iterator>
+#include <testsuite_hooks.h>
+
+class Fred
+{
+public:
+ Fred(bool)
+ { }
+};
+
+void barney(Fred)
+{ }
+
+// libstdc++/14320
+void test01()
+{
+ using namespace std;
+ bool test __attribute__((unused)) = true;
+
+ typedef istreambuf_iterator<char>::difference_type Distance;
+
+ Distance d = 0;
+ barney(d);
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/fpos/14320-5.cc b/libstdc++-v3/testsuite/27_io/fpos/14320-5.cc
new file mode 100644
index 000000000..eb142e98a
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/14320-5.cc
@@ -0,0 +1,44 @@
+// 2004-03-02 Petur Runolfsson <peturr02@ru.is>
+
+// Copyright (C) 2004, 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/>.
+
+// 27.4.3 fpos
+
+#include <iterator>
+#include <sstream>
+#include <testsuite_hooks.h>
+
+// libstdc++/14320
+void test01()
+{
+ using namespace std;
+ bool test __attribute__((unused)) = true;
+
+ typedef istreambuf_iterator<char>::difference_type Distance;
+
+ Distance d;
+ istringstream in("5");
+ in >> d;
+ VERIFY( d == 5 );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/fpos/14775.cc b/libstdc++-v3/testsuite/27_io/fpos/14775.cc
new file mode 100644
index 000000000..83a7410ad
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/14775.cc
@@ -0,0 +1,54 @@
+// 2004-03-31 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2004, 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/>.
+
+// 27.4.3 fpos
+
+#include <fstream>
+#include <testsuite_hooks.h>
+
+#define TWO_GB 2147483648UL
+
+// Basic test for LFS support.
+void test01()
+{
+#ifdef _GLIBCXX_USE_LFS
+ using namespace std;
+ bool test __attribute__((unused)) = true;
+
+ typedef filebuf::pos_type pos_type;
+ typedef filebuf::off_type off_type;
+
+ __gnu_test::set_file_limit(TWO_GB + 200);
+
+ basic_filebuf<char> fb;
+ fb.open("tmp_14775", ios_base::out | ios_base::in | ios_base::trunc);
+
+ pos_type ret = fb.pubseekoff(TWO_GB + 100, ios_base::beg);
+ VERIFY( ret != pos_type(off_type(-1)) );
+
+ fb.close();
+#endif
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
+
diff --git a/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/1.cc b/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/1.cc
new file mode 100644
index 000000000..be3e478e8
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/1.cc
@@ -0,0 +1,59 @@
+// 1999-09-20 bkoz
+
+// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 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/>.
+
+
+// 27.4.3 template class fpos
+
+#include <cwchar> // for mbstate_t
+#include <ios>
+#include <cstring>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ typedef std::mbstate_t state_type;
+ state_type state01 = state_type();
+ state_type state02 = state_type();
+
+ std::streampos pos01(0);
+ std::streampos pos02(0);
+
+ // 27.4.3.1 fpos members
+ // void state(state_type s);
+ // state_type state();
+
+ // XXX Need to have better sanity checking for the mbstate_t type,
+ // or whatever the insantiating type for class fpos happens to be
+ // for streampos, as things like equality operators and assignment
+ // operators, increment and deincrement operators need to be in
+ // place.
+ pos01.state(state02);
+ state01 = pos01.state();
+ test = std::memcmp(&state01, &state02, sizeof(state_type)) == 0;
+ VERIFY( test );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/12065.cc b/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/12065.cc
new file mode 100644
index 000000000..c7f1167ba
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/12065.cc
@@ -0,0 +1,46 @@
+// 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/>.
+
+// 27.4.3 fpos
+
+#include <typeinfo>
+#include <ios>
+#include <testsuite_hooks.h>
+
+// libstdc++/12065
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ std::streampos p(0);
+ const std::streampos q(0);
+ std::streamoff o(0);
+
+ VERIFY( typeid(p + o) == typeid(std::streampos) );
+ VERIFY( typeid(q + o) == typeid(std::streampos) );
+ VERIFY( typeid(p - o) == typeid(std::streampos) );
+ VERIFY( typeid(q - o) == typeid(std::streampos) );
+ VERIFY( typeid(p - q) == typeid(std::streamoff) );
+ VERIFY( typeid(q - p) == typeid(std::streamoff) );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/2.cc b/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/2.cc
new file mode 100644
index 000000000..accb56535
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/2.cc
@@ -0,0 +1,88 @@
+// 1999-09-20 bkoz
+
+// Copyright (C) 1999, 2001, 2003, 2009, 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/>.
+
+
+// 27.4.3 template class fpos
+
+#include <cwchar> // for mbstate_t
+#include <ios>
+#include <testsuite_hooks.h>
+
+// 27.4.3.2 fpos requirements/invariants
+void test02()
+{
+ bool test __attribute__((unused)) = true;
+
+ typedef std::mbstate_t state_type;
+
+ std::streamoff off01;
+ std::streamoff off02 = 997;
+ int i02 = 999;
+
+ // p(i), p = i
+ std::streampos pos01(i02);
+ std::streampos pos02 = i02;
+ VERIFY( pos01 == pos02 );
+
+ // p(o), p = o
+ // NB: P(o) is only required.
+ std::streampos pos03(off02);
+ std::streampos pos04 = off02;
+ VERIFY( pos03 == pos04 );
+
+ // O(p)
+ std::streamoff off03(pos04);
+ VERIFY( off03 == off02 );
+
+ // p == q, p!= q
+ VERIFY( pos01 == pos02 );
+ VERIFY( pos02 != pos03 );
+
+ // q = p + o
+ // p += o
+ pos03 = pos03 + off02;
+ pos04 += off02;
+ VERIFY( pos03 == pos04 );
+ std::streampos pos05 = pos03;
+ VERIFY ( pos05 == pos03 );
+
+ // q = p - o
+ // p -= o
+ pos03 = pos03 - off02;
+ pos04 -= off02;
+ VERIFY( pos03 == pos04 );
+ std::streampos pos07 = pos03;
+ VERIFY ( pos07 == pos03 );
+
+ // o = p - q
+ VERIFY( 0 == pos03 - pos04 );
+
+ // streamsize -> streamoff
+ // streamoff -> streamsize
+ off01 = off02;
+ std::streamsize size01(off02);
+ std::streamoff off04(size01);
+ VERIFY( off01 == off04 );
+}
+
+int main()
+{
+ test02();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/3.cc b/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/3.cc
new file mode 100644
index 000000000..34c557bfb
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/3.cc
@@ -0,0 +1,56 @@
+// 1999-09-20 bkoz
+
+// Copyright (C) 1999, 2001, 2003, 2009, 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/>.
+
+
+// 27.4.3 template class fpos
+
+#include <cwchar> // for mbstate_t
+#include <ios>
+#include <testsuite_hooks.h>
+
+void test03()
+{
+ bool test __attribute__((unused)) = true;
+
+ typedef std::mbstate_t state_type;
+ std::streamoff off01;
+
+ // casts to const streamoff
+ const std::streampos pos01 = 0;
+ off01 = std::streamoff(pos01);
+ off01 = off01; // Suppress unused warning.
+
+ // equality/inequality with const args
+ const std::streampos pos02(54);
+ std::streampos pos03(44);
+ VERIFY( !(pos03 == pos02) );
+ VERIFY( pos03 != pos02 );
+ VERIFY( !(pos02 == pos03) );
+ VERIFY( pos02 != pos03 );
+
+ // default values
+ std::streampos pos04;
+ VERIFY( std::streamoff(pos04) == 0 );
+}
+
+int main()
+{
+ test03();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/4_neg.cc b/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/4_neg.cc
new file mode 100644
index 000000000..9e3cad5d5
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/4_neg.cc
@@ -0,0 +1,43 @@
+// Copyright (C) 2003, 2009, 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/>.
+
+// 27.4.3 fpos
+
+// { dg-do compile }
+
+#include <ios>
+
+void test04()
+{
+ std::streampos pos;
+ long n;
+
+ // Implicit conversion
+ n = pos; // { dg-error "cannot convert" "" { xfail *-*-* } }
+
+ // Explicit conversion
+ n = static_cast<long>(pos); // { dg-error "invalid static_cast" "" { xfail *-*-* } }
+
+ n = n; // Suppress unused warning.
+}
+
+int main()
+{
+ test04();
+ return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/5.cc b/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/5.cc
new file mode 100644
index 000000000..a32e34adf
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/5.cc
@@ -0,0 +1,40 @@
+// { dg-do compile }
+
+// 2006-03-13 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2006, 2009, 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/>.
+
+
+// 27.4.3 template class fpos
+
+#include <ios>
+
+void test01()
+{
+ bool test01, test02;
+
+ std::streampos pos01(-1), pos02(0);
+
+ test01 = pos01 == -1;
+ test01 = -1 == pos01;
+ test01 = test01; // Suppress unused warning.
+
+ test02 = pos02 != -1;
+ test02 = -1 != pos02;
+ test02 = test02; // Suppress unused warning.
+}
diff --git a/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/6.cc b/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/6.cc
new file mode 100644
index 000000000..0cf651a5c
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/mbstate_t/6.cc
@@ -0,0 +1,41 @@
+// { dg-do compile }
+
+// 2006-06-21 Paolo Carlini <pcarlini@suse.de>
+
+// Copyright (C) 2006, 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/>.
+
+
+// 27.4.3 template class fpos
+
+#include <ios>
+
+class
+octave_int
+{
+ template<class U>
+ octave_int(U i);
+};
+
+bool
+operator==(const octave_int& lhs, const octave_int& rhs);
+
+bool
+Fsave(void)
+{
+ return std::streampos(0) == std::streampos(0);
+}
diff --git a/libstdc++-v3/testsuite/27_io/fpos/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/27_io/fpos/requirements/explicit_instantiation.cc
new file mode 100644
index 000000000..6140d3278
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/fpos/requirements/explicit_instantiation.cc
@@ -0,0 +1,45 @@
+// Copyright (C) 2003, 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/>.
+
+// 27.4.3 fpos
+// NB: This file is for testing fpos with NO OTHER INCLUDES.
+
+#include <ios>
+#include <testsuite_hooks.h>
+#include <testsuite_character.h>
+
+// { dg-do compile }
+
+namespace std
+{
+ using __gnu_test::pod_char;
+ typedef short type_t;
+ template class fpos<type_t>;
+ template class fpos<pod_char>;
+} // std
+
+// more surf!!!
+
+
+
+
+
+
+
+
+