TEST(CallStackTestGroup, UnwindOneCaller) { CallStack TestCallStack; TestSuiteCaller1(TestCallStack); const void **Stack = TestCallStack.Get(); Dl_info Info; CHECK(dladdr(Stack[0], &Info) != 0); CHECK_EQUAL(0, strcmp(Info.dli_sname, "TestSuiteCaller1")); };
TEST(CallStackTestGroup, SetTo) { CallStack TestCallStack; CallStack TestCallStack2; TestSuiteUnwind5(TestCallStack); TestCallStack2.SetTo(TestCallStack); CHECK_EQUAL(0, memcmp(TestCallStack.Get(), TestCallStack2.Get(), CALLSTACK_MAX_DEPTH*sizeof(void*))); };
TEST(CallStackTestGroup, Unwind) { CallStack TestCallStack; TestSuiteUnwind5(TestCallStack); const void **Stack = TestCallStack.Get(); Dl_info Info; CHECK(dladdr(Stack[0], &Info) != 0); CHECK_EQUAL(0, strcmp(Info.dli_sname, "TestSuiteUnwind1")); CHECK(dladdr(Stack[1], &Info) != 0); CHECK_EQUAL(0, strcmp(Info.dli_sname, "TestSuiteUnwind2")); CHECK(dladdr(Stack[2], &Info) != 0); CHECK_EQUAL(0, strcmp(Info.dli_sname, "TestSuiteUnwind3")); CHECK(dladdr(Stack[3], &Info) != 0); CHECK_EQUAL(0, strcmp(Info.dli_sname, "TestSuiteUnwind4")); CHECK(dladdr(Stack[4], &Info) != 0); CHECK(strstr(Info.dli_sname, "TestSuiteUnwind5") != NULL); };