OILS / mycpp / bump_leak_heap_test.cc View on Github | oilshell.org

62 lines, 39 significant
1#include "mycpp/bump_leak_heap.h"
2
3#include <unistd.h> // STDERR_FILENO
4
5#include "mycpp/gc_alloc.h" // gHeap
6#include "vendor/greatest.h"
7
8TEST Reallocate_test() {
9 log("sizeof(size_t) = %zu", sizeof(size_t));
10
11 BumpLeakHeap h;
12
13 char* p1 = static_cast<char*>(h.Allocate(10));
14 strcpy(p1, "abcdef");
15 log("p1 = %p %s", p1, p1);
16
17 char* p2 = static_cast<char*>(h.Reallocate(p1, 20));
18 log("p2 = %p %s", p2, p2);
19 ASSERT_EQ_FMT(0, strcmp(p1, p2), "%d");
20
21 char* p3 = static_cast<char*>(h.Reallocate(p2, 30));
22 log("p3 = %p %s", p3, p3);
23 ASSERT_EQ_FMT(0, strcmp(p1, p3), "%d");
24
25 PASS();
26}
27
28// Test empty and trivial methods
29TEST for_code_coverage() {
30 BumpLeakHeap h;
31
32 h.Init();
33 h.Init(10);
34 h.PushRoot(nullptr);
35 h.PopRoot();
36 h.RootGlobalVar(nullptr);
37 (void)h.Allocate(10);
38 ASSERT_EQ(-1, h.MaybeCollect());
39
40 h.PrintStats(STDERR_FILENO);
41
42 h.ProcessExit();
43 h.CleanProcessExit();
44
45 PASS();
46}
47
48GREATEST_MAIN_DEFS();
49
50int main(int argc, char** argv) {
51 gHeap.Init();
52
53 GREATEST_MAIN_BEGIN();
54
55 RUN_TEST(Reallocate_test);
56 RUN_TEST(for_code_coverage);
57
58 gHeap.CleanProcessExit();
59
60 GREATEST_MAIN_END();
61 return 0;
62}