This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
[v3] testsuite preparation for 19_diagnostics
- From: Benjamin Kosnik <bkoz at redhat dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Cc: libstdc++ <libstdc++ at gcc dot gnu dot org>
- Date: Fri, 11 May 2007 17:48:44 +0200
- Subject: [v3] testsuite preparation for 19_diagnostics
... just the cleanups and prep work in the system_error patch. This
seems non-controversial.
tested x86/linux
-benjamin
2007-05-11 Benjamin Kosnik <bkoz@redhat.com>
* include/std/stdexcept: Tweak spacing.
* testsuite/19_diagnostics/stdexceptions.cc: Break into...
* testsuite/19_diagnostics/bad_exception: ...this. Populate.
* testsuite/19_diagnostics/logic_error: ... this.
* testsuite/19_diagnostics/logic_error/what-1.cc: ...this.
* testsuite/19_diagnostics/logic_error/what-2.cc: ...this.
* testsuite/19_diagnostics/runtime_error: ...this.
* testsuite/19_diagnostics/runtime_error/what-1.cc: ...this.
* testsuite/19_diagnostics/runtime_error/what-2.cc: ...this.
* testsuite/19_diagnostics/runtime_error/what-3.cc: ...this.
* testsuite/19_diagnostics/23591_thread-1.c: Move...
* testsuite/19_diagnostics/bad_exception/23591_thread-1.c: ...here.
Index: include/std/stdexcept
===================================================================
--- include/std/stdexcept (revision 124618)
+++ include/std/stdexcept (working copy)
@@ -1,6 +1,6 @@
// Standard exception classes -*- C++ -*-
-// Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2005, 2007 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
@@ -57,7 +57,7 @@
public:
/** Takes a character string describing the error. */
explicit
- logic_error(const string& __arg);
+ logic_error(const string& __arg);
virtual
~logic_error() throw();
@@ -73,14 +73,14 @@
class domain_error : public logic_error
{
public:
- explicit domain_error(const string& __arg);
+ explicit domain_error(const string& __arg);
};
/** Thrown to report invalid arguments to functions. */
class invalid_argument : public logic_error
{
public:
- explicit invalid_argument(const string& __arg);
+ explicit invalid_argument(const string& __arg);
};
/** Thrown when an object is constructed that would exceed its maximum
@@ -88,7 +88,7 @@
class length_error : public logic_error
{
public:
- explicit length_error(const string& __arg);
+ explicit length_error(const string& __arg);
};
/** This represents an argument whose value is not within the expected
@@ -96,7 +96,7 @@
class out_of_range : public logic_error
{
public:
- explicit out_of_range(const string& __arg);
+ explicit out_of_range(const string& __arg);
};
/** Runtime errors represent problems outside the scope of a program;
@@ -111,7 +111,7 @@
public:
/** Takes a character string describing the error. */
explicit
- runtime_error(const string& __arg);
+ runtime_error(const string& __arg);
virtual
~runtime_error() throw();
@@ -126,21 +126,21 @@
class range_error : public runtime_error
{
public:
- explicit range_error(const string& __arg);
+ explicit range_error(const string& __arg);
};
/** Thrown to indicate arithmetic overflow. */
class overflow_error : public runtime_error
{
public:
- explicit overflow_error(const string& __arg);
+ explicit overflow_error(const string& __arg);
};
/** Thrown to indicate arithmetic underflow. */
class underflow_error : public runtime_error
{
public:
- explicit underflow_error(const string& __arg);
+ explicit underflow_error(const string& __arg);
};
_GLIBCXX_END_NAMESPACE
Index: testsuite/19_diagnostics/stdexceptions.cc
===================================================================
--- testsuite/19_diagnostics/stdexceptions.cc (revision 124618)
+++ testsuite/19_diagnostics/stdexceptions.cc (working copy)
@@ -1,116 +0,0 @@
-// 2001-02-26 Benjamin Kosnik <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
-// 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-// 19.1 Exception classes
-
-#include <string>
-#include <cstring>
-#include <stdexcept>
-#include <testsuite_hooks.h>
-
-// libstdc++/1972
-void test01()
-{
- bool test __attribute__((unused)) = true;
- std::string s("lack of sunlight, no water error");
-
- // 1
- std::logic_error obj = std::logic_error(s);
-
- // 2
- // std::logic_error obj((std::string)strlit);
-
- VERIFY( std::strcmp(obj.what(), s.data()) == 0 );
-}
-
-void test02()
-{
- bool test __attribute__((unused)) = true;
- std::string s("lack of sunlight error");
- std::domain_error x(s);
-
- VERIFY( std::strcmp(x.what(), s.data()) == 0 );
-}
-
-// libstdc++/2089
-class fuzzy_logic : public std::logic_error
-{
-public:
- fuzzy_logic() : std::logic_error("whoa") { }
-};
-
-void test03()
-{
- bool test __attribute__((unused)) = true;
- try
- { throw fuzzy_logic(); }
- catch(const fuzzy_logic& obj)
- { VERIFY( std::strcmp("whoa", obj.what()) == 0 ); }
- catch(...)
- { VERIFY( false ); }
-}
-
-// test copy ctors and assignment operators
-// libstdc++/1972
-// via Greg Bumgardner <bumgard@roguewave.com>
-void allocate_on_stack(void)
-{
- const size_t num = 512;
- __extension__ char array[num];
- for (size_t i = 0; i < num; i++)
- array[i]=0;
-}
-void test04()
-{
- bool test __attribute__((unused)) = true;
- const std::string s("CA ISO emergency once again:immediate power down");
- const char* strlit1 = "wish I lived in Palo Alto";
- const char* strlit2 = "...or Santa Barbara";
- std::runtime_error obj1(s);
-
- // block 01
- {
- const std::string s2(strlit1);
- std::runtime_error obj2(s2);
- obj1 = obj2;
- }
- allocate_on_stack();
- VERIFY( std::strcmp(strlit1, obj1.what()) == 0 );
-
- // block 02
- {
- const std::string s3(strlit2);
- std::runtime_error obj3 = std::runtime_error(s3);
- obj1 = obj3;
- }
- allocate_on_stack();
- VERIFY( std::strcmp(strlit2, obj1.what()) == 0 );
-}
-
-int main(void)
-{
- test01();
- test02();
- test03();
- test04();
-
- return 0;
-}
Index: testsuite/19_diagnostics/logic_error/what-1.cc
===================================================================
--- testsuite/19_diagnostics/logic_error/what-1.cc (revision 0)
+++ testsuite/19_diagnostics/logic_error/what-1.cc (revision 0)
@@ -0,0 +1,57 @@
+// 2001-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2007 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// 19.1 Exception classes
+
+#include <string>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+// libstdc++/1972
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+ std::string s("lack of sunlight, no water error");
+
+ // 1
+ std::logic_error obj1 = std::logic_error(s);
+
+ // 2
+ std::logic_error obj2(s);
+
+ VERIFY( std::strcmp(obj1.what(), s.data()) == 0 );
+ VERIFY( std::strcmp(obj2.what(), s.data()) == 0 );
+}
+
+void test02()
+{
+ bool test __attribute__((unused)) = true;
+ std::string s("lack of sunlight error");
+ std::domain_error x(s);
+
+ VERIFY( std::strcmp(x.what(), s.data()) == 0 );
+}
+
+int main(void)
+{
+ test01();
+ test02();
+ return 0;
+}
Index: testsuite/19_diagnostics/logic_error/what-2.cc
===================================================================
--- testsuite/19_diagnostics/logic_error/what-2.cc (revision 0)
+++ testsuite/19_diagnostics/logic_error/what-2.cc (revision 0)
@@ -0,0 +1,49 @@
+// 2001-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2007 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// 19.1 Exception classes
+
+#include <string>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+// libstdc++/2089
+class fuzzy_logic : public std::logic_error
+{
+public:
+ fuzzy_logic() : std::logic_error("whoa") { }
+};
+
+void test03()
+{
+ bool test __attribute__((unused)) = true;
+ try
+ { throw fuzzy_logic(); }
+ catch(const fuzzy_logic& obj)
+ { VERIFY( std::strcmp("whoa", obj.what()) == 0 ); }
+ catch(...)
+ { VERIFY( false ); }
+}
+
+int main(void)
+{
+ test03();
+ return 0;
+}
Index: testsuite/19_diagnostics/23591_thread-1.c
===================================================================
--- testsuite/19_diagnostics/23591_thread-1.c (revision 124618)
+++ testsuite/19_diagnostics/23591_thread-1.c (working copy)
@@ -1,63 +0,0 @@
-// { dg-require-sharedlib "" }
-// { dg-options "-g -O2 -pthread -ldl -x c" { target *-*-linux* } }
-
-// Copyright (C) 2005 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-#include <pthread.h>
-#include <dlfcn.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-
-// NB: This must be compiled and linked as a "C" executable.
-static void* run(void* arg)
-{
- typedef void (*function_type) (void);
- void* lib;
- void (*cb)();
-
- lib = dlopen("./testsuite_shared.so", RTLD_NOW);
- if (lib == NULL)
- {
- printf("dlopen failed: %s\n", strerror(errno));
- return NULL;
- }
- cb = (function_type) dlsym(lib, "try_throw_exception");
- if (cb == NULL)
- {
- printf("dlsym failed: %s\n", strerror(errno));
- return NULL;
- }
- cb();
- dlclose(lib);
- return NULL;
-}
-
-// libstdc++/23591
-int main(void)
-{
- pthread_t pt;
-
- if (pthread_create(&pt, NULL, &run, NULL) != 0)
- return 1;
- if (pthread_join(pt, NULL) != 0)
- return 1;
-
- return 0;
-}
Index: testsuite/19_diagnostics/runtime_error/what-1.cc
===================================================================
--- testsuite/19_diagnostics/runtime_error/what-1.cc (revision 0)
+++ testsuite/19_diagnostics/runtime_error/what-1.cc (revision 0)
@@ -0,0 +1,57 @@
+// 2001-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2007 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// 19.1 Exception classes
+
+#include <string>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+// libstdc++/1972
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+ std::string s("lack of sunlight, no water error");
+
+ // 1
+ std::runtime_error obj1 = std::runtime_error(s);
+
+ // 2
+ std::runtime_error obj2(s);
+
+ VERIFY( std::strcmp(obj1.what(), s.data()) == 0 );
+ VERIFY( std::strcmp(obj2.what(), s.data()) == 0 );
+}
+
+void test02()
+{
+ bool test __attribute__((unused)) = true;
+ std::string s("lack of sunlight error");
+ std::range_error x(s);
+
+ VERIFY( std::strcmp(x.what(), s.data()) == 0 );
+}
+
+int main(void)
+{
+ test01();
+ test02();
+ return 0;
+}
Index: testsuite/19_diagnostics/runtime_error/what-2.cc
===================================================================
--- testsuite/19_diagnostics/runtime_error/what-2.cc (revision 0)
+++ testsuite/19_diagnostics/runtime_error/what-2.cc (revision 0)
@@ -0,0 +1,49 @@
+// 2001-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2007 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// 19.1 Exception classes
+
+#include <string>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+// libstdc++/2089
+class fuzzy_logic : public std::runtime_error
+{
+public:
+ fuzzy_logic() : std::runtime_error("whoa") { }
+};
+
+void test03()
+{
+ bool test __attribute__((unused)) = true;
+ try
+ { throw fuzzy_logic(); }
+ catch(const fuzzy_logic& obj)
+ { VERIFY( std::strcmp("whoa", obj.what()) == 0 ); }
+ catch(...)
+ { VERIFY( false ); }
+}
+
+int main(void)
+{
+ test03();
+ return 0;
+}
Index: testsuite/19_diagnostics/runtime_error/what-3.cc
===================================================================
--- testsuite/19_diagnostics/runtime_error/what-3.cc (revision 0)
+++ testsuite/19_diagnostics/runtime_error/what-3.cc (working copy)
@@ -24,48 +24,6 @@
#include <stdexcept>
#include <testsuite_hooks.h>
-// libstdc++/1972
-void test01()
-{
- bool test __attribute__((unused)) = true;
- std::string s("lack of sunlight, no water error");
-
- // 1
- std::logic_error obj = std::logic_error(s);
-
- // 2
- // std::logic_error obj((std::string)strlit);
-
- VERIFY( std::strcmp(obj.what(), s.data()) == 0 );
-}
-
-void test02()
-{
- bool test __attribute__((unused)) = true;
- std::string s("lack of sunlight error");
- std::domain_error x(s);
-
- VERIFY( std::strcmp(x.what(), s.data()) == 0 );
-}
-
-// libstdc++/2089
-class fuzzy_logic : public std::logic_error
-{
-public:
- fuzzy_logic() : std::logic_error("whoa") { }
-};
-
-void test03()
-{
- bool test __attribute__((unused)) = true;
- try
- { throw fuzzy_logic(); }
- catch(const fuzzy_logic& obj)
- { VERIFY( std::strcmp("whoa", obj.what()) == 0 ); }
- catch(...)
- { VERIFY( false ); }
-}
-
// test copy ctors and assignment operators
// libstdc++/1972
// via Greg Bumgardner <bumgard@roguewave.com>
@@ -105,10 +63,6 @@
int main(void)
{
- test01();
- test02();
- test03();
test04();
-
return 0;
}