mirror of https://github.com/ARMmbed/mbed-os.git
84 lines
1.5 KiB
C++
84 lines
1.5 KiB
C++
|
#include "greentea-client/test_env.h"
|
||
|
|
||
|
#define PATTERN_CHECK_VALUE 0xF0F0ADAD
|
||
|
|
||
|
class Test {
|
||
|
|
||
|
private:
|
||
|
const char* name;
|
||
|
const int pattern;
|
||
|
|
||
|
public:
|
||
|
Test(const char* _name) : name(_name), pattern(PATTERN_CHECK_VALUE) {
|
||
|
print("init");
|
||
|
}
|
||
|
|
||
|
void print(const char *message) {
|
||
|
printf("%s::%s\n", name, message);
|
||
|
}
|
||
|
|
||
|
bool check_init(void) {
|
||
|
bool result = (pattern == PATTERN_CHECK_VALUE);
|
||
|
print(result ? "check_init: OK" : "check_init: ERROR");
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
void stack_test(void) {
|
||
|
print("stack_test");
|
||
|
Test t("Stack");
|
||
|
t.hello();
|
||
|
}
|
||
|
|
||
|
void hello(void) {
|
||
|
print("hello");
|
||
|
}
|
||
|
|
||
|
~Test() {
|
||
|
print("destroy");
|
||
|
}
|
||
|
};
|
||
|
|
||
|
/* Check C++ startup initialisation */
|
||
|
Test s("Static");
|
||
|
|
||
|
/* EXPECTED OUTPUT:
|
||
|
*******************
|
||
|
Static::init
|
||
|
Static::stack_test
|
||
|
Stack::init
|
||
|
Stack::hello
|
||
|
Stack::destroy
|
||
|
Static::check_init: OK
|
||
|
Heap::init
|
||
|
Heap::hello
|
||
|
Heap::destroy
|
||
|
*******************/
|
||
|
int main (void) {
|
||
|
GREENTEA_SETUP(10, "default_auto");
|
||
|
|
||
|
bool result = true;
|
||
|
for (;;)
|
||
|
{
|
||
|
// Global stack object simple test
|
||
|
s.stack_test();
|
||
|
if (s.check_init() == false)
|
||
|
{
|
||
|
result = false;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
// Heap test object simple test
|
||
|
Test *m = new Test("Heap");
|
||
|
m->hello();
|
||
|
|
||
|
if (m->check_init() == false)
|
||
|
{
|
||
|
result = false;
|
||
|
}
|
||
|
delete m;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
GREENTEA_TESTSUITE_RESULT(result);
|
||
|
}
|