Add some extra checks to unit tests
This commit is contained in:
parent
7a9ed920d5
commit
bf0551b781
@ -39,6 +39,7 @@ TEST(ObjectTrace, Basic) {
|
||||
CPPTRACE_FORCE_NO_INLINE void object_basic_resolution() {
|
||||
auto line = __LINE__ + 1;
|
||||
auto trace = cpptrace::generate_object_trace().resolve();
|
||||
ASSERT_GE(trace.frames.size(), 1);
|
||||
EXPECT_THAT(trace.frames[0].filename, testing::EndsWith("object_trace.cpp"));
|
||||
EXPECT_EQ(trace.frames[0].line.value(), line);
|
||||
EXPECT_THAT(trace.frames[0].symbol, testing::HasSubstr("object_basic_resolution"));
|
||||
@ -69,6 +70,10 @@ CPPTRACE_FORCE_NO_INLINE int object_resolve_3(std::vector<int>& line_numbers) {
|
||||
cpptrace::object_frame{0, dummy.frames[3].object_address, dummy_otrace.frames[3].object_path}
|
||||
);
|
||||
auto trace = otrace.resolve();
|
||||
if(trace.frames.size() < 4) {
|
||||
ADD_FAILURE() << "trace.frames.size() >= 4";
|
||||
return 2;
|
||||
}
|
||||
int i = 0;
|
||||
EXPECT_THAT(trace.frames[i].filename, testing::EndsWith("object_trace.cpp"));
|
||||
EXPECT_EQ(trace.frames[i].line.value(), line_numbers[i]);
|
||||
|
||||
@ -20,6 +20,7 @@ using namespace std::literals;
|
||||
CPPTRACE_FORCE_NO_INLINE static void raw_trace_basic() {
|
||||
auto raw_trace = cpptrace::generate_raw_trace();
|
||||
// look for within 90 bytes of the start of the function
|
||||
ASSERT_GE(raw_trace.frames.size(), 1);
|
||||
EXPECT_GE(raw_trace.frames[0], reinterpret_cast<uintptr_t>(raw_trace_basic));
|
||||
EXPECT_LE(raw_trace.frames[0], reinterpret_cast<uintptr_t>(raw_trace_basic) + 90);
|
||||
}
|
||||
@ -37,6 +38,7 @@ CPPTRACE_FORCE_NO_INLINE void raw_trace_basic_precise() {
|
||||
if(x) {
|
||||
goto* &&b;
|
||||
}
|
||||
ASSERT_GE(raw_trace.frames.size(), 1);
|
||||
EXPECT_GE(raw_trace.frames[0], reinterpret_cast<uintptr_t>(&&a));
|
||||
EXPECT_LE(raw_trace.frames[0], reinterpret_cast<uintptr_t>(&&b));
|
||||
}
|
||||
@ -57,6 +59,7 @@ CPPTRACE_FORCE_NO_INLINE static void raw_trace_multi_2(
|
||||
cpptrace::frame_ptr parent_high_bound
|
||||
) {
|
||||
auto raw_trace = cpptrace::generate_raw_trace();
|
||||
ASSERT_GE(raw_trace.frames.size(), 2);
|
||||
EXPECT_GE(raw_trace.frames[0], reinterpret_cast<uintptr_t>(raw_trace_multi_2));
|
||||
EXPECT_LE(raw_trace.frames[0], reinterpret_cast<uintptr_t>(raw_trace_multi_2) + 90);
|
||||
EXPECT_GE(raw_trace.frames[1], parent_low_bound);
|
||||
@ -66,6 +69,7 @@ CPPTRACE_FORCE_NO_INLINE static void raw_trace_multi_2(
|
||||
CPPTRACE_FORCE_NO_INLINE static void raw_trace_multi_1() {
|
||||
auto raw_trace = cpptrace::generate_raw_trace();
|
||||
raw_trace_multi_2(reinterpret_cast<uintptr_t>(raw_trace_multi_1), reinterpret_cast<uintptr_t>(raw_trace_multi_1) + 300);
|
||||
ASSERT_GE(raw_trace.frames.size(), 1);
|
||||
EXPECT_GE(raw_trace.frames[0], reinterpret_cast<uintptr_t>(raw_trace_multi_1));
|
||||
EXPECT_LE(raw_trace.frames[0], reinterpret_cast<uintptr_t>(raw_trace_multi_1) + 90);
|
||||
}
|
||||
@ -88,6 +92,7 @@ CPPTRACE_FORCE_NO_INLINE void raw_trace_multi_precise_3() {
|
||||
if(x) {
|
||||
goto* &&b;
|
||||
}
|
||||
ASSERT_GE(raw_trace.frames.size(), parents.size() + 1);
|
||||
EXPECT_GE(raw_trace.frames[0], reinterpret_cast<uintptr_t>(&&a)); // this frame
|
||||
EXPECT_LE(raw_trace.frames[0], reinterpret_cast<uintptr_t>(&&b));
|
||||
for(size_t i = 0; i < parents.size(); i++) { // parent frames
|
||||
@ -107,6 +112,7 @@ CPPTRACE_FORCE_NO_INLINE void raw_trace_multi_precise_2() {
|
||||
if(x) {
|
||||
goto* &&b;
|
||||
}
|
||||
ASSERT_GE(raw_trace.frames.size(), parents.size() + 1);
|
||||
EXPECT_GE(raw_trace.frames[0], reinterpret_cast<uintptr_t>(&&a)); // this frame
|
||||
EXPECT_LE(raw_trace.frames[0], reinterpret_cast<uintptr_t>(&&b));
|
||||
for(size_t i = 0; i < parents.size(); i++) { // parent frames
|
||||
@ -136,6 +142,7 @@ CPPTRACE_FORCE_NO_INLINE void raw_trace_multi_precise_1() {
|
||||
if(x) {
|
||||
goto* &&b;
|
||||
}
|
||||
ASSERT_GE(raw_trace.frames.size(), 1);
|
||||
EXPECT_GE(raw_trace.frames[0], reinterpret_cast<uintptr_t>(&&a));
|
||||
EXPECT_LE(raw_trace.frames[0], reinterpret_cast<uintptr_t>(&&b));
|
||||
record_parent(reinterpret_cast<uintptr_t>(&&c), reinterpret_cast<uintptr_t>(&&d));
|
||||
|
||||
@ -31,6 +31,7 @@ TEST(Stacktrace, Empty) {
|
||||
CPPTRACE_FORCE_NO_INLINE void stacktrace_basic() {
|
||||
auto line = __LINE__ + 1;
|
||||
auto trace = cpptrace::generate_trace();
|
||||
ASSERT_GE(trace.frames.size(), 1);
|
||||
EXPECT_THAT(trace.frames[0].filename, testing::EndsWith("stacktrace.cpp"));
|
||||
EXPECT_EQ(trace.frames[0].line.value(), line);
|
||||
EXPECT_THAT(trace.frames[0].symbol, testing::HasSubstr("stacktrace_basic"));
|
||||
@ -47,6 +48,10 @@ TEST(Stacktrace, Basic) {
|
||||
CPPTRACE_FORCE_NO_INLINE int stacktrace_multi_3(std::vector<int>& line_numbers) {
|
||||
line_numbers.insert(line_numbers.begin(), __LINE__ + 1);
|
||||
auto trace = cpptrace::generate_trace();
|
||||
if(trace.frames.size() < 4) {
|
||||
ADD_FAILURE() << "trace.frames.size() >= 4";
|
||||
return 2;
|
||||
}
|
||||
int i = 0;
|
||||
EXPECT_THAT(trace.frames[i].filename, testing::EndsWith("stacktrace.cpp"));
|
||||
EXPECT_EQ(trace.frames[i].line.value(), line_numbers[i]);
|
||||
@ -104,6 +109,7 @@ TEST(Stacktrace, RawTraceResolution) {
|
||||
line_numbers.insert(line_numbers.begin(), __LINE__ + 1);
|
||||
auto raw = stacktrace_raw_resolve_1(line_numbers);
|
||||
auto trace = raw.resolve();
|
||||
ASSERT_GE(trace.frames.size(), 4);
|
||||
int i = 0;
|
||||
EXPECT_THAT(trace.frames[i].filename, testing::EndsWith("stacktrace.cpp"));
|
||||
EXPECT_EQ(trace.frames[i].line.value(), line_numbers[i]);
|
||||
@ -128,6 +134,10 @@ TEST(Stacktrace, RawTraceResolution) {
|
||||
CPPTRACE_FORCE_NO_INLINE int stacktrace_inline_resolution_3(std::vector<int>& line_numbers) {
|
||||
line_numbers.insert(line_numbers.begin(), __LINE__ + 1);
|
||||
auto trace = cpptrace::generate_trace();
|
||||
if(trace.frames.size() < 4) {
|
||||
ADD_FAILURE() << "trace.frames.size() >= 4";
|
||||
return 2;
|
||||
}
|
||||
int i = 0;
|
||||
EXPECT_THAT(trace.frames[i].filename, testing::EndsWith("stacktrace.cpp"));
|
||||
EXPECT_EQ(trace.frames[i].line.value(), line_numbers[i]);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user