mirror of https://github.com/ARMmbed/mbed-os.git
106 lines
2.2 KiB
C++
106 lines
2.2 KiB
C++
/* mbed Microcontroller Library
|
|
* Copyright (c) 2017 ARM Limited
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
#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, bool print_message = true) : name(_name), pattern(PATTERN_CHECK_VALUE)
|
|
{
|
|
if (print_message) {
|
|
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", false);
|
|
|
|
/* 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 (;;) {
|
|
s.print("init");
|
|
// 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);
|
|
}
|