77 lines
1.3 KiB
C
77 lines
1.3 KiB
C
#define RT_CORE_IMPLEMENTATION
|
|
#include "rtcore.h"
|
|
|
|
#include <stdio.h>
|
|
|
|
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;
|
|
}
|