summaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite
diff options
context:
space:
mode:
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2001-06-12 02:30:37 +0000
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2001-06-12 02:30:37 +0000
commit3482ff44bfd28ed6d749df33d11323fa4ac25478 (patch)
tree1c224bfab1803de1debc3780ac8f957f19874588 /libstdc++-v3/testsuite
parent90f0a84964659a148a533f536c27b1e009b7db9d (diff)
downloadgcc-3482ff44bfd28ed6d749df33d11323fa4ac25478.tar.gz
2001-06-11 Benjamin Kosnik <bkoz@redhat.com>
libstdc++/3126 * include/bits/basic_string.h (string::compare): Adjust signatures as per DR 5. * include/bits/basic_string.tcc: And here. libstdc++/2346 * config/c_io_stdio.h: Remove whitespace. * testsuite/27_io/istream_seeks.cc (test03): Add regression. (test02): Add regression. * testsuite/27_io/istream_seeks-3.tst: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43240 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/testsuite')
-rw-r--r--libstdc++-v3/testsuite/27_io/istream_seeks-3.tst10
-rw-r--r--libstdc++-v3/testsuite/27_io/istream_seeks.cc74
2 files changed, 82 insertions, 2 deletions
diff --git a/libstdc++-v3/testsuite/27_io/istream_seeks-3.tst b/libstdc++-v3/testsuite/27_io/istream_seeks-3.tst
new file mode 100644
index 00000000000..dc45fc9330a
--- /dev/null
+++ b/libstdc++-v3/testsuite/27_io/istream_seeks-3.tst
@@ -0,0 +1,10 @@
+0-0 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
+0-1 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
+0-2 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
+0-3 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
+0-4 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
+0-5 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
+0-6 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
+0-7 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
+0-8 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
+0-9 lootpack, peanut butter wolf, rob swift, madlib, quasimoto
diff --git a/libstdc++-v3/testsuite/27_io/istream_seeks.cc b/libstdc++-v3/testsuite/27_io/istream_seeks.cc
index 97ef01b121c..a8f138eb7b4 100644
--- a/libstdc++-v3/testsuite/27_io/istream_seeks.cc
+++ b/libstdc++-v3/testsuite/27_io/istream_seeks.cc
@@ -1,6 +1,6 @@
// 2000-06-29 bkoz
-// Copyright (C) 2000 Free Software Foundation
+// Copyright (C) 2000, 2001 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
@@ -28,7 +28,6 @@
#include <fstream>
#include <debug_assert.h>
-
bool test01()
{
using namespace std;
@@ -64,6 +63,71 @@ bool test01()
return test;
}
+const char* s = " lootpack, peanut butter wolf, rob swift, madlib, quasimoto";
+const int times = 10;
+
+void write_rewind(std::iostream& stream)
+{
+ for (int j = 0; j < times; j++)
+ {
+ bool test = true;
+ std::streampos begin = stream.tellg();
+
+ for (int i = 0; i < times; ++i)
+ stream << j << '-' << i << s << '\n';
+
+ stream.seekg(begin);
+ std::streampos end = stream.tellg();
+ std::streampos badpos = std::streampos(std::streambuf::off_type(-1));
+ }
+}
+
+void check_contents(std::iostream& stream)
+{
+ bool test = true;
+
+ stream.clear();
+ stream.seekg(0, std::ios::beg);
+ int i = 0;
+ int loop = times * times + 2;
+ while (i < loop)
+ {
+ stream.ignore(80, '\n');
+ if (stream.good())
+ ++i;
+ else
+ break;
+ }
+ VERIFY( i == times );
+}
+
+// fstream
+// libstdc++/2346
+void test02()
+{
+ std::fstream ofstrm;
+ ofstrm.open("istream_seeks-3.txt", std::ios::out);
+ if (!ofstrm)
+ abort();
+ write_rewind(ofstrm);
+ ofstrm.close();
+
+ std::fstream ifstrm;
+ ifstrm.open("istream_seeks-3.txt", std::ios::in);
+ check_contents(ifstrm);
+ ifstrm.close();
+}
+
+// stringstream
+// libstdc++/2346
+void test03()
+{
+ std::stringstream sstrm;
+
+ write_rewind(sstrm);
+ check_contents(sstrm);
+}
+
// fstreams
void test04(void)
{
@@ -289,7 +353,13 @@ void test05(void)
int main()
{
test01();
+
+ test02();
+ test03();
+
test04();
test05();
return 0;
}
+
+