Test whitespace handling in std::complex extraction
authorJonathan Wakely <jwakely@redhat.com>
Thu, 14 Dec 2017 11:47:42 +0000 (11:47 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Thu, 14 Dec 2017 11:47:42 +0000 (11:47 +0000)
* testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc:
Add tests using noskipws.

From-SVN: r255632

libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc

index b20a277a0856bed275d0f40cb01903af2bc0a463..e035302bed40fcc6fe6fe2c714fe8d9c97737bd8 100644 (file)
@@ -1,5 +1,8 @@
 2017-12-14  Jonathan Wakely  <jwakely@redhat.com>
 
+       * testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc:
+       Add tests using noskipws.
+
        * testsuite/26_numerics/complex/dr2714.cc: Move to ...
        * testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc:
        ... Here. Remove duplicate header and dg-options. Check first invalid
index 17fb8a249d95a0d1a832d5ef08aa3982d7bca259..952c52f4a2b71132f66159e7351cb286214dc78a 100644 (file)
@@ -145,10 +145,38 @@ test03()
   in.clear();
 }
 
+void
+test04()
+{
+  // Test noskipws handling
+  std::istringstream in;
+  const char* bad_inputs[] = {
+    " 1", " (2)", "( 2)", "(2 )", "(2 ,3)", "(2,3 )", 0
+  };
+  const std::complex<double> c0(-1, -1);
+  std::complex<double> c;
+  for (int i = 0; bad_inputs[i]; ++i)
+  {
+    c = c0;
+    in.clear();
+    in.str(bad_inputs[i]);
+    in >> std::noskipws >> c;
+    VERIFY( in.fail() );
+    VERIFY( c == c0 );
+
+    in.clear();
+    in.str(bad_inputs[i]);
+    in >> std::skipws >> c;
+    VERIFY( !in.fail() );
+    VERIFY( c != c0 );
+  }
+}
+
 int
 main()
 {
   test01();
   test02();
   test03();
+  test04();
 }