#define RT_CORE_IMPLEMENTATION #include "rtcore.h" #include THREAD_FN(TestThread) { int *p = param; printf("Thread got param %d\n", AtomicLoad(p)); AtomicStore(p, 42); return 0; } internal int AllocTest(void) { char space[260]; arena a = {.begin = space, .end = space + countof(space) }; int *t = alloc(&a, int); if (!t) return 0; *t = 42; int *t2 = alloc(&a, int); if (t == t2) return 0; *t2 = *t; return 1; } internal int ReadFileTest(void) { char space[260]; arena a = {.begin = space, .end = space + countof(space) }; s8 data = ReadEntireFileS8(S8("somedata.txt"), &a); return S8Equals(data, S8("1234567890\n")); } internal int ThreadTest(void) { int p = 32; thread *t = StartThread(TestThread, &p); JoinThread(t); return AtomicLoad(&p) == 42; } internal int ParseIntTest(void) { if (S8ParseI32(S8("123"), 10).i != 123) return 0; if (S8ParseI32(S8("-124"), 10).i != -124) return 0; if (S8ParseI64(S8("9223372036854775807"), 10).i != 9223372036854775807) return 0; if (S8ParseI32(S8("Not a number"), 10).ok) return 0; return 1; } int main() { if (!AllocTest()) return 1; if (!ReadFileTest()) return 2; if (!ThreadTest()) return 3; if (!ParseIntTest()) return 4; return 0; }