cdtest: Print proper begin/end of test messages

This commit is contained in:
Sebastian Huber
2016-12-09 08:25:47 +01:00
parent 8c637ee324
commit 05006c9017
2 changed files with 56 additions and 28 deletions

View File

@@ -1,31 +1,43 @@
Hey I'm in base class constructor number 1 for 0x400010cc. *** BEGIN OF TEST CONSTRUCTOR/DESTRUCTOR ***
Hey I'm in base class constructor number 2 for 0x400010d4. GLOBAL: Hey I'm in base class constructor number 1 for 0x2052154.
Hey I'm in derived class constructor number 3 for 0x400010d4. 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 *** *** BEGIN OF TEST CONSTRUCTOR/DESTRUCTOR ***
Hey I'm in base class constructor number 4 for 0x4009ee08. LOCAL: Hey I'm in base class constructor number 4 for 0x2057978.
Hey I'm in base class constructor number 5 for 0x4009ee10. LOCAL: Hey I'm in base class constructor number 5 for 0x2057984.
Hey I'm in base class constructor number 6 for 0x4009ee18. LOCAL: Hey I'm in base class constructor number 6 for 0x2057990.
Hey I'm in base class constructor number 7 for 0x4009ee20. LOCAL: Hey I'm in base class constructor number 7 for 0x205799c.
Hey I'm in derived class constructor number 8 for 0x4009ee20. LOCAL: Hey I'm in derived class constructor number 8 for 0x205799c.
Testing a C++ I/O stream IO Stream not tested
Hey I'm in derived class destructor number 8 for 0x4009ee20. LOCAL: Hey I'm in derived class destructor number 8 for 205799C.
Derived class - Instantiation order 8 Derived class - Instantiation order 8
Hey I'm in base class destructor number 7 for 0x4009ee20. LOCAL: Hey I'm in base class destructor number 7 for 205799C.
Instantiation order 8 Derived class - Instantiation order 8
Hey I'm in base class destructor number 6 for 0x4009ee18. LOCAL: Hey I'm in base class destructor number 6 for 2057990.
Instantiation order 6 Derived class - Instantiation order 6
Hey I'm in base class destructor number 5 for 0x4009ee10. LOCAL: Hey I'm in base class destructor number 5 for 2057984.
Instantiation order 5 Derived class - Instantiation order 5
Hey I'm in base class destructor number 4 for 0x4009ee08. LOCAL: Hey I'm in base class destructor number 4 for 2057978.
Instantiation order 5 Derived class - Instantiation order 5
*** END OF CONSTRUCTOR/DESTRUCTOR TEST *** *** TESTING C++ EXCEPTIONS ***
foo_function() catch block called:
Hey I'm in derived class destructor number 3 for 0x400010d4. < 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 Derived class - Instantiation order 3
Hey I'm in base class destructor number 2 for 0x400010d4. GLOBAL: Hey I'm in base class destructor number 2 for 2052148.
Instantiation order 3 Derived class - Instantiation order 3
Hey I'm in base class destructor number 1 for 0x400010cc. GLOBAL: Hey I'm in base class destructor number 1 for 2052154.
Instantiation order 1 Derived class - Instantiation order 1
*** END OF TEST CONSTRUCTOR/DESTRUCTOR ***

View File

@@ -44,10 +44,25 @@ extern rtems_task main_task(rtems_task_argument);
static int num_inst = 0; 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 { class AClass {
public: public:
AClass(const char *p = "LOCAL" ) : ptr( p ) AClass(const char *p = "LOCAL" ) : ptr( p )
{ {
check_begin_of_test();
num_inst++; num_inst++;
printf( printf(
"%s: Hey I'm in base class constructor number %d for %p.\n", "%s: Hey I'm in base class constructor number %d for %p.\n",
@@ -71,6 +86,7 @@ public:
); );
printk("Derived class - %s\n", string); printk("Derived class - %s\n", string);
num_inst--; num_inst--;
check_end_of_test();
}; };
virtual void print() { printf("%s\n", string); }; virtual void print() { printf("%s\n", string); };
@@ -84,6 +100,7 @@ class BClass : public AClass {
public: public:
BClass(const char *p = "LOCAL" ) : AClass( p ) BClass(const char *p = "LOCAL" ) : AClass( p )
{ {
check_begin_of_test();
num_inst++; num_inst++;
printf( printf(
"%s: Hey I'm in derived class constructor number %d for %p.\n", "%s: Hey I'm in derived class constructor number %d for %p.\n",
@@ -107,6 +124,7 @@ public:
); );
printk("Derived class - %s\n", string); printk("Derived class - %s\n", string);
num_inst--; num_inst--;
check_end_of_test();
}; };
void print() { printf("Derived class - %s\n", string); } void print() { printf("Derived class - %s\n", string); }
@@ -185,8 +203,6 @@ rtems_task main_task(
cdtest(); cdtest();
TEST_END();
printf( "*** TESTING C++ EXCEPTIONS ***\n\n" ); printf( "*** TESTING C++ EXCEPTIONS ***\n\n" );
try try