summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--testsuites/samples/cdtest/cdtest.scn64
-rw-r--r--testsuites/samples/cdtest/main.cc20
2 files changed, 56 insertions, 28 deletions
diff --git a/testsuites/samples/cdtest/cdtest.scn b/testsuites/samples/cdtest/cdtest.scn
index a832a72372..7307d7cb17 100644
--- a/testsuites/samples/cdtest/cdtest.scn
+++ b/testsuites/samples/cdtest/cdtest.scn
@@ -1,31 +1,43 @@
-Hey I'm in base class constructor number 1 for 0x400010cc.
-Hey I'm in base class constructor number 2 for 0x400010d4.
-Hey I'm in derived class constructor number 3 for 0x400010d4.
+*** BEGIN OF TEST CONSTRUCTOR/DESTRUCTOR ***
+GLOBAL: Hey I'm in base class constructor number 1 for 0x2052154.
+GLOBAL: Hey I'm in base class constructor number 2 for 0x2052148.
+GLOBAL: Hey I'm in derived class constructor number 3 for 0x2052148.
-*** CONSTRUCTOR/DESTRUCTOR TEST ***
-Hey I'm in base class constructor number 4 for 0x4009ee08.
-Hey I'm in base class constructor number 5 for 0x4009ee10.
-Hey I'm in base class constructor number 6 for 0x4009ee18.
-Hey I'm in base class constructor number 7 for 0x4009ee20.
-Hey I'm in derived class constructor number 8 for 0x4009ee20.
-Testing a C++ I/O stream
-Hey I'm in derived class destructor number 8 for 0x4009ee20.
+*** BEGIN OF TEST CONSTRUCTOR/DESTRUCTOR ***
+LOCAL: Hey I'm in base class constructor number 4 for 0x2057978.
+LOCAL: Hey I'm in base class constructor number 5 for 0x2057984.
+LOCAL: Hey I'm in base class constructor number 6 for 0x2057990.
+LOCAL: Hey I'm in base class constructor number 7 for 0x205799c.
+LOCAL: Hey I'm in derived class constructor number 8 for 0x205799c.
+IO Stream not tested
+LOCAL: Hey I'm in derived class destructor number 8 for 205799C.
Derived class - Instantiation order 8
-Hey I'm in base class destructor number 7 for 0x4009ee20.
-Instantiation order 8
-Hey I'm in base class destructor number 6 for 0x4009ee18.
-Instantiation order 6
-Hey I'm in base class destructor number 5 for 0x4009ee10.
-Instantiation order 5
-Hey I'm in base class destructor number 4 for 0x4009ee08.
-Instantiation order 5
-*** END OF CONSTRUCTOR/DESTRUCTOR TEST ***
-
+LOCAL: Hey I'm in base class destructor number 7 for 205799C.
+Derived class - Instantiation order 8
+LOCAL: Hey I'm in base class destructor number 6 for 2057990.
+Derived class - Instantiation order 6
+LOCAL: Hey I'm in base class destructor number 5 for 2057984.
+Derived class - Instantiation order 5
+LOCAL: Hey I'm in base class destructor number 4 for 2057978.
+Derived class - Instantiation order 5
+*** TESTING C++ EXCEPTIONS ***
-Hey I'm in derived class destructor number 3 for 0x400010d4.
+foo_function() catch block called:
+ < foo_function() throw this exception >
+Success catching a char * exception
+foo_function() re-throwing execption...
+throw std::runtime: caught: thrown std::runtime object
+throw an instance based exception
+RtemsException raised=File:../../../../../../../rtems/c/src/../../testsuites/samples/cdtest/main.cc, Line:229, Error=55
+Success catching RtemsException...
+RtemsException ---> File:../../../../../../../rtems/c/src/../../testsuites/samples/cdtest/main.cc, Line:229, Error=55
+Exceptions are working properly.
+Global Dtors should be called after this line....
+GLOBAL: Hey I'm in derived class destructor number 3 for 2052148.
+Derived class - Instantiation order 3
+GLOBAL: Hey I'm in base class destructor number 2 for 2052148.
Derived class - Instantiation order 3
-Hey I'm in base class destructor number 2 for 0x400010d4.
-Instantiation order 3
-Hey I'm in base class destructor number 1 for 0x400010cc.
-Instantiation order 1
+GLOBAL: Hey I'm in base class destructor number 1 for 2052154.
+Derived class - Instantiation order 1
+*** END OF TEST CONSTRUCTOR/DESTRUCTOR ***
diff --git a/testsuites/samples/cdtest/main.cc b/testsuites/samples/cdtest/main.cc
index fb015fa7ac..43b6b06e09 100644
--- a/testsuites/samples/cdtest/main.cc
+++ b/testsuites/samples/cdtest/main.cc
@@ -44,10 +44,25 @@ extern rtems_task main_task(rtems_task_argument);
static int num_inst = 0;
+static void check_begin_of_test(void)
+{
+ if ( num_inst == 0 ) {
+ printf(TEST_BEGIN_STRING);
+ }
+}
+
+static void check_end_of_test(void)
+{
+ if ( num_inst == 0 ) {
+ printk(TEST_END_STRING);
+ }
+}
+
class AClass {
public:
AClass(const char *p = "LOCAL" ) : ptr( p )
{
+ check_begin_of_test();
num_inst++;
printf(
"%s: Hey I'm in base class constructor number %d for %p.\n",
@@ -71,6 +86,7 @@ public:
);
printk("Derived class - %s\n", string);
num_inst--;
+ check_end_of_test();
};
virtual void print() { printf("%s\n", string); };
@@ -84,6 +100,7 @@ class BClass : public AClass {
public:
BClass(const char *p = "LOCAL" ) : AClass( p )
{
+ check_begin_of_test();
num_inst++;
printf(
"%s: Hey I'm in derived class constructor number %d for %p.\n",
@@ -107,6 +124,7 @@ public:
);
printk("Derived class - %s\n", string);
num_inst--;
+ check_end_of_test();
};
void print() { printf("Derived class - %s\n", string); }
@@ -185,8 +203,6 @@ rtems_task main_task(
cdtest();
- TEST_END();
-
printf( "*** TESTING C++ EXCEPTIONS ***\n\n" );
try