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.
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
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 2 for 2052148.
Derived class - Instantiation order 3
GLOBAL: Hey I'm in base class destructor number 1 for 2052154.
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 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