OSDN Git Service

2003-06-13 Paolo Carlini <pcarlini@unitus.it>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 13 Jun 2003 21:06:37 +0000 (21:06 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 13 Jun 2003 21:06:37 +0000 (21:06 +0000)
* testsuite/27_io/basic_filebuf/seekoff/char/1.cc: Split and
fix for missing seeks between gets and puts into...
* testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc: New.
* testsuite/27_io/basic_filebuf/seekoff/char/4-io.cc: New.
* testsuite/27_io/basic_filebuf/seekpos/char/1.cc: Same, into...
* testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc: New.
* testsuite/27_io/basic_filebuf/seekpos/char/4-io.cc: New.
* testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc: Fix
for missing seeks between gets and puts.
* testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc: Ditto.
* testsuite/data/seekoff-1.tst: New.
* testsuite/data/seekoff-2.tst: New.
* testsuite/data/seekpos-1.tst: New.
* testsuite/data/seekpos-2.tst: New.

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

13 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1.cc [deleted file]
libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/4-io.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1.cc [deleted file]
libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/4-io.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc
libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc
libstdc++-v3/testsuite/data/seekoff-1.tst [new file with mode: 0644]
libstdc++-v3/testsuite/data/seekoff-2.tst [new file with mode: 0644]
libstdc++-v3/testsuite/data/seekpos-1.tst [new file with mode: 0644]
libstdc++-v3/testsuite/data/seekpos-2.tst [new file with mode: 0644]

index 883e9f8..75de06f 100644 (file)
@@ -1,3 +1,20 @@
+2003-06-13  Paolo Carlini  <pcarlini@unitus.it>
+
+       * testsuite/27_io/basic_filebuf/seekoff/char/1.cc: Split and
+       fix for missing seeks between gets and puts into...
+       * testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc: New.
+       * testsuite/27_io/basic_filebuf/seekoff/char/4-io.cc: New.
+       * testsuite/27_io/basic_filebuf/seekpos/char/1.cc: Same, into...
+       * testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc: New.
+       * testsuite/27_io/basic_filebuf/seekpos/char/4-io.cc: New.
+       * testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc: Fix
+       for missing seeks between gets and puts.
+       * testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc: Ditto.
+       * testsuite/data/seekoff-1.tst: New.
+       * testsuite/data/seekoff-2.tst: New.
+       * testsuite/data/seekpos-1.tst: New.
+       * testsuite/data/seekpos-2.tst: New.
+
 2003-06-13  Nathan C. Myers <ncm-nospam@cantrip.org>
 
        Avoid multi-processor bus contention on increment/decrement-and-
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1.cc
deleted file mode 100644 (file)
index e448326..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-// 2001-05-21 Benjamin Kosnik  <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2002, 2003 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 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.
-
-// 27.8.1.4 Overridden virtual functions
-
-#include <fstream>
-#include <testsuite_hooks.h>
-
-// @require@ %-*.tst %-*.txt
-// @diff@ %-*.tst %*.txt
-
-// NB: This test assumes that _M_buf_size == 40, and not the usual
-// buffer_size length of BUFSIZ (8192), so that overflow/underflow can be
-// simulated a bit more readily.
-// NRB (Nota Really Bene): setting it to 40 breaks the test, as intended.
-const int buffer_size = 8192;
-//const int buffer_size = 40;
-
-const char name_01[] = "filebuf_virtuals-1.txt"; // empty file, need to create
-
-class derived_filebuf: public std::filebuf
-{
- public:
-  void
-  set_size(int_type __size) { _M_buf_size = __size; }
-};
-
-derived_filebuf fb_03; // in | out
-
-// Initialize filebufs to be the same size regardless of platform.
-void test03()
-{
-  fb_03.set_size(buffer_size);
-}
-
-// Test overloaded virtual functions.
-void test05() 
-{
-  using namespace std;
-  typedef filebuf::int_type    int_type;
-  typedef filebuf::traits_type         traits_type;
-  typedef filebuf::pos_type    pos_type;
-  typedef filebuf::off_type    off_type;
-  typedef size_t                       size_type;
-
-  bool                                         test = true;
-  filebuf                              f_tmp;
-  streamsize                   strmsz_1, strmsz_2;
-  streamoff                    strmof_1, strmof_2;
-  int                                  i = 0, j = 0, k = 0;
-
-  fb_03.open(name_01, ios_base::out | ios_base::in);
-
-  int_type c1;
-  int_type c2;
-  int_type c3;
-
-  // seekoff
-  // pubseekoff(off_type off, ios_base::seekdir way, ios_base::openmode which)
-  // alters the stream position to off
-  pos_type pt_1(off_type(-1));
-  pos_type pt_2(off_type(0));
-  off_type off_1 = 0;
-  off_type off_2 = 0;
-
-  //IN|OUT
-  // 27filebuf-3.txt = bd23456789:;<=>?...
-  //beg
-  strmsz_1 = fb_03.in_avail(); 
-  pt_1 = fb_03.pubseekoff(2, ios_base::beg);
-  strmsz_2 = fb_03.in_avail(); 
-  off_1 = pt_1;
-  VERIFY( off_1 > 0 );
-  c1 = fb_03.snextc(); //current in pointer +1
-  VERIFY( c1 == '9' );
-  c2 = fb_03.sputc('\n');  //current in pointer +1
-  c3 = fb_03.sgetc();
-  VERIFY( c2 != c3 ); 
-  VERIFY( c3 == '9' );
-  fb_03.pubsync(); 
-  c1 = fb_03.sgetc();
-  VERIFY( c1 == c3 );
-  //cur
-  // 27filebuf-3.txt = bd2\n456789:;<=>?...
-  pt_2 = fb_03.pubseekoff(2, ios_base::cur);
-  off_2 = pt_2;
-  VERIFY( (off_2 == (off_1 + 2 + 1 + 1)) );
-  c1 = fb_03.snextc(); //current in pointer +1
-  VERIFY( c1 == '1' );
-  c2 = fb_03.sputc('x');  //test current out pointer
-  c3 = fb_03.sputc('\n');
-  c1 = fb_03.sgetc();
-  fb_03.pubsync(); 
-  c3 = fb_03.sgetc();
-  VERIFY( c1 == c3 );
-  //end
-  // 27filebuf-3.txt = "bd2\n456x\n9" 
-  pt_2 = fb_03.pubseekoff(0, ios_base::end, ios_base::in|ios_base::out);
-  off_1 = pt_2;
-  VERIFY( off_1 > off_2 ); //weak, but don't know exactly where it ends
-  c3 = fb_03.sputc('\n');
-  strmsz_1 = fb_03.sputn("because because because. . .", 28);  
-  VERIFY( strmsz_1 == 28 );
-  c1 = fb_03.sungetc();
-  // Defect?  retval of sungetc is not necessarily the character ungotten.
-  // So re-get it.
-  c1 = fb_03.sgetc();
-  fb_03.pubsync(); 
-  c3 = fb_03.sgetc();
-  VERIFY( c1 == c3 );
-  // IN
-  // OUT
-}
-
-main() 
-{
-  test03();
-  test05();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc
new file mode 100644 (file)
index 0000000..7552d88
--- /dev/null
@@ -0,0 +1,123 @@
+// 2001-05-21 Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2003 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 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.
+
+// 27.8.1.4 Overridden virtual functions
+
+#include <fstream>
+#include <testsuite_hooks.h>
+#include <testsuite_io.h>
+
+// @require@ %-*.tst %-*.txt
+// @diff@ %-*.tst %*.txt
+
+const char name_01[] = "seekoff-1.tst";
+
+void test05() 
+{
+  using namespace std;
+  using namespace __gnu_cxx_test;
+
+  typedef filebuf::int_type    int_type;
+  typedef filebuf::pos_type    pos_type;
+  typedef filebuf::off_type    off_type;
+
+  bool                                 test = true;
+  streamsize                   strmsz_1, strmsz_2;
+  streamoff                    strmof_1, strmof_2;
+
+  int_type c1;
+  int_type c2;
+  int_type c3;
+
+  pos_type pt_1(off_type(-1));
+  pos_type pt_2(off_type(0));
+  off_type off_1 = 0;
+  off_type off_2 = 0;
+
+  // seekoff
+  // pubseekoff(off_type off, ios_base::seekdir way, ios_base::openmode which)
+  // alters the stream position to off
+
+  // in | out
+  {
+    constraint_filebuf fb_03;
+    fb_03.open(name_01, ios_base::out | ios_base::in);
+    VERIFY( fb_03.write_position() );
+    VERIFY( !fb_03.read_position() );
+    // 27filebuf-3.txt = bd23456789:;<=>?...
+    //beg
+    strmsz_1 = fb_03.in_avail(); 
+    pt_1 = fb_03.pubseekoff(2, ios_base::beg);
+    strmsz_2 = fb_03.in_avail(); 
+    off_1 = pt_1;
+    VERIFY( off_1 > 0 );
+    c1 = fb_03.snextc(); //current in pointer +1
+    VERIFY( c1 == '9' );
+    fb_03.pubseekoff(3, ios_base::beg);
+    c2 = fb_03.sputc('\n');  //current in pointer +1
+    fb_03.pubseekoff(4, ios_base::beg);
+    c3 = fb_03.sgetc();
+    VERIFY( c2 != c3 ); 
+    VERIFY( c3 == '9' );
+    fb_03.pubsync(); 
+    c1 = fb_03.sgetc();
+    VERIFY( c1 == c3 );
+    //cur
+    // 27filebuf-3.txt = bd2\n456789:;<=>?...
+    pt_2 = fb_03.pubseekoff(2, ios_base::cur);
+    off_2 = pt_2;
+    VERIFY( (off_2 == (off_1 + 2 + 1 + 1)) );
+    c1 = fb_03.snextc(); //current in pointer +1
+    VERIFY( c1 == '1' );
+    fb_03.pubseekoff(0, ios_base::cur);
+    c2 = fb_03.sputc('x');  //test current out pointer
+    c3 = fb_03.sputc('\n');
+    fb_03.pubseekoff(0, ios_base::cur);
+    c1 = fb_03.sgetc();
+    fb_03.pubsync(); 
+    c3 = fb_03.sgetc();
+    VERIFY( c1 == c3 );
+    //end
+    // 27filebuf-3.txt = "bd2\n456x\n9" 
+    pt_2 = fb_03.pubseekoff(0, ios_base::end);
+    off_1 = pt_2;
+    VERIFY( off_1 > off_2 ); //weak, but don't know exactly where it ends
+    c3 = fb_03.sputc('\n');
+    strmsz_1 = fb_03.sputn("because because because. . .", 28);  
+    VERIFY( strmsz_1 == 28 );
+    fb_03.pubseekoff(-1, ios_base::end);
+    fb_03.sgetc();
+    c1 = fb_03.sungetc();
+    // Defect?  retval of sungetc is not necessarily the character ungotten.
+    // So re-get it.
+    c1 = fb_03.sgetc();
+    fb_03.pubsync(); 
+    c3 = fb_03.sgetc();
+    VERIFY( c1 == c3 );
+    VERIFY( fb_03.write_position() );
+    VERIFY( fb_03.read_position() );
+  }
+}
+
+main() 
+{
+  test05();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/4-io.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/4-io.cc
new file mode 100644 (file)
index 0000000..d635247
--- /dev/null
@@ -0,0 +1,122 @@
+// 2001-05-21 Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2003 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 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.
+
+// 27.8.1.4 Overridden virtual functions
+
+#include <fstream>
+#include <testsuite_hooks.h>
+#include <testsuite_io.h>
+
+// @require@ %-*.tst %-*.txt
+// @diff@ %-*.tst %*.txt
+
+const char name_01[] = "seekoff-2.tst";
+
+void test05() 
+{
+  using namespace std;
+  using namespace __gnu_cxx_test;
+
+  typedef filebuf::int_type    int_type;
+  typedef filebuf::pos_type    pos_type;
+  typedef filebuf::off_type    off_type;
+
+  bool                         test = true;
+  streamsize                   strmsz_1, strmsz_2;
+  streamoff                    strmof_1, strmof_2;
+
+  int_type c1;
+  int_type c2;
+  int_type c3;
+
+  pos_type pt_1(off_type(-1));
+  pos_type pt_2(off_type(0));
+  off_type off_1 = 0;
+  off_type off_2 = 0;
+
+  // seekoff
+  // pubseekoff(off_type off, ios_base::seekdir way, ios_base::openmode which)
+  // alters the stream position to off
+
+  // in | out
+  {
+    constraint_filebuf fb_03;
+    fb_03.pubsetbuf(0, 0);
+    fb_03.open(name_01, ios_base::out | ios_base::in);
+    VERIFY( fb_03.unbuffered() );
+    // 27filebuf-3.txt = bd23456789:;<=>?...
+    //beg
+    strmsz_1 = fb_03.in_avail(); 
+    pt_1 = fb_03.pubseekoff(2, ios_base::beg);
+    strmsz_2 = fb_03.in_avail(); 
+    off_1 = pt_1;
+    VERIFY( off_1 > 0 );
+    c1 = fb_03.snextc(); //current in pointer +1
+    VERIFY( c1 == '9' );
+    fb_03.pubseekoff(3, ios_base::beg);
+    c2 = fb_03.sputc('\n');  //current in pointer +1
+    fb_03.pubseekoff(4, ios_base::beg);
+    c3 = fb_03.sgetc();
+    VERIFY( c2 != c3 ); 
+    VERIFY( c3 == '9' );
+    fb_03.pubsync(); 
+    c1 = fb_03.sgetc();
+    VERIFY( c1 == c3 );
+    //cur
+    // 27filebuf-3.txt = bd2\n456789:;<=>?...
+    pt_2 = fb_03.pubseekoff(2, ios_base::cur);
+    off_2 = pt_2;
+    VERIFY( (off_2 == (off_1 + 2 + 1 + 1)) );
+    c1 = fb_03.snextc(); //current in pointer +1
+    VERIFY( c1 == '1' );
+    fb_03.pubseekoff(0, ios_base::cur);
+    c2 = fb_03.sputc('x');  //test current out pointer
+    c3 = fb_03.sputc('\n');
+    fb_03.pubseekoff(0, ios_base::cur);
+    c1 = fb_03.sgetc();
+    fb_03.pubsync(); 
+    c3 = fb_03.sgetc();
+    VERIFY( c1 == c3 );
+    //end
+    // 27filebuf-3.txt = "bd2\n456x\n9" 
+    pt_2 = fb_03.pubseekoff(0, ios_base::end);
+    off_1 = pt_2;
+    VERIFY( off_1 > off_2 ); //weak, but don't know exactly where it ends
+    c3 = fb_03.sputc('\n');
+    strmsz_1 = fb_03.sputn("because because because. . .", 28);  
+    VERIFY( strmsz_1 == 28 );
+    fb_03.pubseekoff(-1, ios_base::end);
+    fb_03.sgetc();
+    c1 = fb_03.sungetc();
+    // Defect?  retval of sungetc is not necessarily the character ungotten.
+    // So re-get it.
+    c1 = fb_03.sgetc();
+    fb_03.pubsync(); 
+    c3 = fb_03.sgetc();
+    VERIFY( c1 == c3 );
+    VERIFY( fb_03.unbuffered() );
+  }
+}
+
+main() 
+{
+  test05();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1.cc
deleted file mode 100644 (file)
index cd4084f..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-// 2001-05-21 Benjamin Kosnik  <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2002, 2003 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 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.
-
-// 27.8.1.4 Overridden virtual functions
-
-#include <fstream>
-#include <testsuite_hooks.h>
-
-// @require@ %-*.tst %-*.txt
-// @diff@ %-*.tst %*.txt
-
-// NB: This test assumes that _M_buf_size == 40, and not the usual
-// buffer_size length of BUFSIZ (8192), so that overflow/underflow can be
-// simulated a bit more readily.
-// NRB (Nota Really Bene): setting it to 40 breaks the test, as intended.
-const int buffer_size = 8192;
-//const int buffer_size = 40;
-
-const char name_01[] = "filebuf_virtuals-1.txt"; // file with data in it
-
-class derived_filebuf: public std::filebuf
-{
- public:
-  void
-  set_size(int_type __size) { _M_buf_size = __size; }
-};
-
-derived_filebuf fb_03; // in | out
-
-// Initialize filebufs to be the same size regardless of platform.
-void test03()
-{
-  fb_03.set_size(buffer_size);
-}
-
-// Test overloaded virtual functions.
-void test05() 
-{
-  using namespace std;
-  typedef filebuf::int_type    int_type;
-  typedef filebuf::traits_type         traits_type;
-  typedef filebuf::pos_type    pos_type;
-  typedef filebuf::off_type    off_type;
-  typedef size_t                       size_type;
-
-  bool                                         test = true;
-  filebuf                              f_tmp;
-  streamsize                   strmsz_1, strmsz_2;
-  streamoff                    strmof_1, strmof_2;
-  int                                  i = 0, j = 0, k = 0;
-
-  fb_03.open(name_01, ios_base::out | ios_base::in);
-
-  int_type c1;
-  int_type c2;
-  int_type c3;
-
-  // seekpos
-  // pubseekpos(pos_type sp, ios_base::openmode)
-  // alters the stream position to sp
-  pos_type pt_1(off_type(-1));
-  pos_type pt_2(off_type(0));
-  off_type off_1 = 0;
-  off_type off_2 = 0;
-  //IN|OUT
-  //beg
-  pt_1 = fb_03.pubseekoff(78, ios_base::beg);
-  off_1 = pt_1;
-  VERIFY( off_1 > 0 );
-  c1 = fb_03.snextc();                 //current in pointer +1
-  VERIFY( c1 == 't' );
-  c2 = fb_03.sputc('\n');      //test current out pointer
-  c3 = fb_03.sgetc();
-  fb_03.pubsync();             //resets pointers
-  pt_2 = fb_03.pubseekpos(pt_1);
-  off_2 = pt_2;
-  VERIFY( off_1 == off_2 );
-  c3 = fb_03.snextc();                 //current in pointer +1
-  VERIFY( c2 == c3 );
-  pt_1 = fb_03.pubseekoff(0, ios_base::end);
-  off_1 = pt_1;
-  VERIFY( off_1 > off_2 );
-  fb_03.sputn("\nof the wonderful things he does!!\nok", 37);
-  fb_03.pubsync();
-
-  // IN
-  // OUT
-
-  // VIRTUALS (indirectly tested)
-  // underflow
-  // if read position avail, returns *gptr()
-
-  // pbackfail(int_type c)
-  // put c back into input sequence
-
-  // overflow
-  // appends c to output seq
-
-  // NB Have to close these suckers. . .
-  // filebuf_type* close()
-  fb_03.close();
-  VERIFY( !fb_03.is_open() );
-}
-
-main() 
-{
-  test03();
-  test05();
-  return 0;
-}
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc
new file mode 100644 (file)
index 0000000..097edb7
--- /dev/null
@@ -0,0 +1,98 @@
+// 2001-05-21 Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2003 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 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.
+
+// 27.8.1.4 Overridden virtual functions
+
+#include <fstream>
+#include <testsuite_hooks.h>
+#include <testsuite_io.h>
+
+// @require@ %-*.tst %-*.txt
+// @diff@ %-*.tst %*.txt
+
+const char name_01[] = "seekpos-1.tst"; // file with data in it
+
+void test05() 
+{
+  using namespace std;
+  using namespace __gnu_cxx_test;
+
+  typedef filebuf::int_type    int_type;
+  typedef filebuf::pos_type    pos_type;
+  typedef filebuf::off_type    off_type;
+
+  bool                                 test = true;
+  streamsize                   strmsz_1, strmsz_2;
+  streamoff                    strmof_1, strmof_2;
+
+  int_type c1;
+  int_type c2;
+  int_type c3;
+
+  pos_type pt_1(off_type(-1));
+  pos_type pt_2(off_type(0));
+  pos_type pt_3;
+  off_type off_1 = 0;
+  off_type off_2 = 0;
+
+  // seekpos
+  // pubseekpos(pos_type sp, ios_base::openmode)
+  // alters the stream position to sp
+
+  // in | out
+  {
+    constraint_filebuf fb_03;
+    fb_03.open(name_01, ios_base::out | ios_base::in);
+    VERIFY( fb_03.write_position() );
+    VERIFY( !fb_03.read_position() );
+    pt_1 = fb_03.pubseekoff(78, ios_base::beg);
+    off_1 = pt_1;
+    VERIFY( off_1 > 0 );
+    c1 = fb_03.snextc();               //current in pointer +1
+    VERIFY( c1 == 't' );
+    pt_3 = fb_03.pubseekoff(0, ios_base::cur);
+    fb_03.pubseekpos(pt_3);
+    c2 = fb_03.sputc('\n');    //test current out pointer
+    pt_3 = fb_03.pubseekoff(0, ios_base::cur);
+    fb_03.pubseekpos(pt_3);
+    c3 = fb_03.sgetc();
+    fb_03.pubsync();           //resets pointers
+    pt_2 = fb_03.pubseekpos(pt_1);
+    off_2 = pt_2;
+    VERIFY( off_1 == off_2 );
+    c3 = fb_03.snextc();               //current in pointer +1
+    VERIFY( c2 == c3 );
+    pt_1 = fb_03.pubseekoff(0, ios_base::end);
+    off_1 = pt_1;
+    VERIFY( off_1 > off_2 );
+    fb_03.sputn("\nof the wonderful things he does!!\nok", 37);
+    fb_03.pubsync();
+    VERIFY( fb_03.write_position() );
+    VERIFY( !fb_03.read_position() );
+    fb_03.close();
+    VERIFY( !fb_03.is_open() );
+  }
+}
+
+main() 
+{
+  test05();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/4-io.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/4-io.cc
new file mode 100644 (file)
index 0000000..a1c72cf
--- /dev/null
@@ -0,0 +1,97 @@
+// 2001-05-21 Benjamin Kosnik  <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2003 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 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.
+
+// 27.8.1.4 Overridden virtual functions
+
+#include <fstream>
+#include <testsuite_hooks.h>
+#include <testsuite_io.h>
+
+// @require@ %-*.tst %-*.txt
+// @diff@ %-*.tst %*.txt
+
+const char name_01[] = "seekpos-2.tst"; // file with data in it
+
+void test05() 
+{
+  using namespace std;
+  using namespace __gnu_cxx_test;
+
+  typedef filebuf::int_type    int_type;
+  typedef filebuf::pos_type    pos_type;
+  typedef filebuf::off_type    off_type;
+
+  bool                                 test = true;
+  streamsize                   strmsz_1, strmsz_2;
+  streamoff                    strmof_1, strmof_2;
+
+  int_type c1;
+  int_type c2;
+  int_type c3;
+
+  pos_type pt_1(off_type(-1));
+  pos_type pt_2(off_type(0));
+  pos_type pt_3;
+  off_type off_1 = 0;
+  off_type off_2 = 0;
+
+  // seekpos
+  // pubseekpos(pos_type sp, ios_base::openmode)
+  // alters the stream position to sp
+
+  // in | out
+  {
+    constraint_filebuf fb_03;
+    fb_03.pubsetbuf(0, 0);
+    fb_03.open(name_01, ios_base::out | ios_base::in);
+    VERIFY( fb_03.unbuffered() );
+    pt_1 = fb_03.pubseekoff(78, ios_base::beg);
+    off_1 = pt_1;
+    VERIFY( off_1 > 0 );
+    c1 = fb_03.snextc();               //current in pointer +1
+    VERIFY( c1 == 't' );
+    pt_3 = fb_03.pubseekoff(0, ios_base::cur);
+    fb_03.pubseekpos(pt_3);
+    c2 = fb_03.sputc('\n');    //test current out pointer
+    pt_3 = fb_03.pubseekoff(0, ios_base::cur);
+    fb_03.pubseekpos(pt_3);
+    c3 = fb_03.sgetc();
+    fb_03.pubsync();           //resets pointers
+    pt_2 = fb_03.pubseekpos(pt_1);
+    off_2 = pt_2;
+    VERIFY( off_1 == off_2 );
+    c3 = fb_03.snextc();               //current in pointer +1
+    VERIFY( c2 == c3 );
+    pt_1 = fb_03.pubseekoff(0, ios_base::end);
+    off_1 = pt_1;
+    VERIFY( off_1 > off_2 );
+    fb_03.sputn("\nof the wonderful things he does!!\nok", 37);
+    fb_03.pubsync();
+    VERIFY( fb_03.unbuffered() );
+    fb_03.close();
+    VERIFY( !fb_03.is_open() );
+  }
+}
+
+main() 
+{
+  test05();
+  return 0;
+}
index fd1708e..ca300ce 100644 (file)
@@ -54,6 +54,7 @@ void test01()
     VERIFY( !fb_01.read_position() );
     strmsz_1 = fb_01.sputn("racadabras", 10);//"abracadabras or what?"
     strmsz_2 = fb_01.sputn(", i wanna reach out and", 10);
+    fb_01.pubseekoff(0, std::ios_base::cur);
     c1 = fb_01.sgetc(); // -1
     c2 = fb_01.sputbackc('z');
     strmsz_2 = fb_01.in_avail();
@@ -63,9 +64,9 @@ void test01()
     VERIFY( 1 == strmsz_2 );
     //test for _in_cur == _in_beg
     // fb_01._M_out_beg = "bd23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZracada" etc
-    fb_01.pubseekoff(10, std::ios_base::beg, 
-                  std::ios_base::in | std::ios_base::out);
+    fb_01.pubseekoff(10, std::ios_base::beg);
     fb_01.sputc('m');
+    fb_01.pubseekoff(0, std::ios_base::cur);
     strmsz_1 = fb_01.in_avail(); 
     c1 = fb_01.sgetc(); 
     fb_01.snextc();
@@ -78,9 +79,11 @@ void test01()
     VERIFY( c2 == 'z' );
     // test for replacing char with identical one
     fb_01.snextc();
+    fb_01.pubseekoff(0, std::ios_base::cur);
     fb_01.sputc('u');
     fb_01.sputc('v');
     fb_01.sputc('a');
+    fb_01.pubseekoff(0, std::ios_base::end);
     strmsz_1 = fb_01.in_avail();
     c2 = fb_01.sputbackc('a');
     strmsz_2 = fb_01.in_avail();
index fba4481..093c663 100644 (file)
@@ -54,6 +54,7 @@ void test01()
     VERIFY( fb_01.unbuffered() );
     strmsz_1 = fb_01.sputn("racadabras", 10);//"abracadabras or what?"
     strmsz_2 = fb_01.sputn(", i wanna reach out and", 10);
+    fb_01.pubseekoff(0, std::ios_base::cur);
     c1 = fb_01.sgetc(); // -1
     c2 = fb_01.sputbackc('z');
     strmsz_2 = fb_01.in_avail();
@@ -63,9 +64,9 @@ void test01()
     VERIFY( 1 == strmsz_2 );
     //test for _in_cur == _in_beg
     // fb_01._M_out_beg = "bd23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZracada" etc
-    fb_01.pubseekoff(10, std::ios_base::beg, 
-                  std::ios_base::in | std::ios_base::out);
+    fb_01.pubseekoff(10, std::ios_base::beg);
     fb_01.sputc('m');
+    fb_01.pubseekoff(0, std::ios_base::cur);
     strmsz_1 = fb_01.in_avail(); 
     c1 = fb_01.sgetc(); 
     fb_01.snextc();
@@ -78,15 +79,17 @@ void test01()
     VERIFY( c2 == 'z' );
     // test for replacing char with identical one
     fb_01.snextc();
+    fb_01.pubseekoff(0, std::ios_base::cur);
     fb_01.sputc('u');
     fb_01.sputc('v');
     fb_01.sputc('a');
+    fb_01.pubseekoff(0, std::ios_base::end);
     strmsz_1 = fb_01.in_avail();
     c2 = fb_01.sputbackc('a');
     strmsz_2 = fb_01.in_avail();
     c3 = fb_01.sgetc();
     VERIFY( c3 == c2 );
-    VERIFY( strmsz_1 == strmsz_2 );
+    VERIFY( strmsz_1 + 1 == strmsz_2 );
     VERIFY( fb_01.unbuffered() );
   }
 }
diff --git a/libstdc++-v3/testsuite/data/seekoff-1.tst b/libstdc++-v3/testsuite/data/seekoff-1.tst
new file mode 100644 (file)
index 0000000..87e81f6
--- /dev/null
@@ -0,0 +1,3 @@
+// 990117 bkoz
+// test functionality of basic_filebuf for char_type == char
+// this is a data file for 27filebuf.cc
diff --git a/libstdc++-v3/testsuite/data/seekoff-2.tst b/libstdc++-v3/testsuite/data/seekoff-2.tst
new file mode 100644 (file)
index 0000000..87e81f6
--- /dev/null
@@ -0,0 +1,3 @@
+// 990117 bkoz
+// test functionality of basic_filebuf for char_type == char
+// this is a data file for 27filebuf.cc
diff --git a/libstdc++-v3/testsuite/data/seekpos-1.tst b/libstdc++-v3/testsuite/data/seekpos-1.tst
new file mode 100644 (file)
index 0000000..87e81f6
--- /dev/null
@@ -0,0 +1,3 @@
+// 990117 bkoz
+// test functionality of basic_filebuf for char_type == char
+// this is a data file for 27filebuf.cc
diff --git a/libstdc++-v3/testsuite/data/seekpos-2.tst b/libstdc++-v3/testsuite/data/seekpos-2.tst
new file mode 100644 (file)
index 0000000..87e81f6
--- /dev/null
@@ -0,0 +1,3 @@
+// 990117 bkoz
+// test functionality of basic_filebuf for char_type == char
+// this is a data file for 27filebuf.cc