Make library work on unix again

This commit is contained in:
Doyle T 2018-03-09 02:03:05 +11:00
parent 540deb4774
commit 6fcf111d2d
3 changed files with 697 additions and 697 deletions

1301
dqn.h

File diff suppressed because it is too large Load Diff

View File

@ -27,7 +27,7 @@
// TODO(doyle): Replace DQN_ASSERT with a non-halting assert that can connect to // TODO(doyle): Replace DQN_ASSERT with a non-halting assert that can connect to
// some sort of testing framework to track successes and failures. // some sort of testing framework to track successes and failures.
#define LOG_HEADER() LogHeader( __func__) #define LOG_HEADER() LogHeader(__func__)
FILE_SCOPE i32 globalIndent; FILE_SCOPE i32 globalIndent;
FILE_SCOPE bool globalNewLine; FILE_SCOPE bool globalNewLine;
@ -47,7 +47,7 @@ enum class Status
Error Error
}; };
void Log(Status status, char *fmt, va_list argList) void Log(Status status, char const *fmt, va_list argList)
{ {
DQN_ASSERT(globalIndent >= 0); DQN_ASSERT(globalIndent >= 0);
LOCAL_PERSIST i32 lineLen = 0; LOCAL_PERSIST i32 lineLen = 0;
@ -56,7 +56,7 @@ void Log(Status status, char *fmt, va_list argList)
i32 bufLen = 0; i32 bufLen = 0;
{ {
bufLen = Dqn_vsprintf(buf, fmt, argList); bufLen = Dqn_vsprintf(buf, fmt, argList);
DQN_ASSERT(bufLen < DQN_ARRAY_COUNT(buf)); DQN_ASSERT(bufLen < (i32)DQN_ARRAY_COUNT(buf));
lineLen += bufLen; lineLen += bufLen;
} }
@ -113,7 +113,7 @@ void Log(Status status, char *fmt, va_list argList)
} }
} }
void Log(Status status, char *fmt, ...) void Log(Status status, char const *fmt, ...)
{ {
va_list argList; va_list argList;
va_start(argList, fmt); va_start(argList, fmt);
@ -121,7 +121,7 @@ void Log(Status status, char *fmt, ...)
va_end(argList); va_end(argList);
} }
void Log(char *fmt, ...) void Log(char const *fmt, ...)
{ {
va_list argList; va_list argList;
va_start(argList, fmt); va_start(argList, fmt);
@ -129,7 +129,7 @@ void Log(char *fmt, ...)
va_end(argList); va_end(argList);
} }
void LogHeader(char *funcName) void LogHeader(char const *funcName)
{ {
globalIndent--; globalIndent--;
Log("\n[%s]", funcName); Log("\n[%s]", funcName);
@ -707,17 +707,6 @@ void DqnString_Test()
str.Free(); str.Free();
Log(Status::Ok, "Check expand on append"); Log(Status::Ok, "Check expand on append");
} }
// Try init literal no alloc
if (1)
{
char *literal = "this is a literal string";
DqnString str = {};
DQN_ASSERT(str.InitLiteralNoAlloc(literal));
DQN_ASSERT(str.Append(", hello again") == false);
str.Free();
Log(Status::Ok, "Try init literal no alloc, can't expand");
}
} }
void DqnTimer_Test() void DqnTimer_Test()
@ -726,13 +715,14 @@ void DqnTimer_Test()
if (1) if (1)
{ {
#if defined(DQN_UNIX_PLATFORM) #if defined(DQN_UNIX_PLATFORM)
f64 startInS = DqnTimer_NowInS(); f64 startInMs = DqnTimer_NowInMs();
u32 sleepTimeInS = 1; u32 sleepTimeInMs = 1;
sleep(sleepTimeInS); sleep(sleepTimeInMs);
f64 endInS = DqnTimer_NowInS(); f64 endInMs = DqnTimer_NowInMs();
Log("start: %f, end: %f", startInS, endInS); Log("start: %f, end: %f", startInMs, endInMs);
DQN_ASSERT((startInS + sleepTimeInS) <= endInS); DQN_ASSERT((startInMs + sleepTimeInMs) <= endInMs);
#elif defined(DQN_WIN32_PLATFORM) #elif defined(DQN_WIN32_PLATFORM)
f64 startInMs = DqnTimer_NowInMs(); f64 startInMs = DqnTimer_NowInMs();
@ -1577,7 +1567,7 @@ void DqnArray_TestRealDataInternal(DqnArray<char> *array)
u8 *buf = DqnFile::ReadEntireFile("tests/google-10000-english.txt", &bufSize); u8 *buf = DqnFile::ReadEntireFile("tests/google-10000-english.txt", &bufSize);
DQN_ASSERT(buf); DQN_ASSERT(buf);
for (auto i = 0; i < bufSize; i++) for (usize i = 0; i < bufSize; i++)
array->Push(buf[i]); array->Push(buf[i]);
DQN_ASSERT((size_t)array->count == bufSize); DQN_ASSERT((size_t)array->count == bufSize);
@ -1631,7 +1621,6 @@ void DqnArray_Test()
if (1) if (1)
{ {
DqnMemStack stack = {}; stack.Init(DQN_MEGABYTE(1), Dqn::ZeroClear::True, DqnMemStack::Flag::BoundsGuard); DqnMemStack stack = {}; stack.Init(DQN_MEGABYTE(1), Dqn::ZeroClear::True, DqnMemStack::Flag::BoundsGuard);
DqnMemAPI memAPI = DqnMemAPI::StackAllocator(&stack);
if (1) if (1)
{ {
@ -1681,7 +1670,7 @@ void DqnFile_Test()
// should give us zero, but we fall back to manual byte checking // should give us zero, but we fall back to manual byte checking
// which should give us the proper size. // which should give us the proper size.
size_t size = 0; size_t size = 0;
DQN_ASSERT(DqnFile_GetFileSize("/proc/cpuinfo", &size)); DQN_ASSERT(DqnFile::GetFileSize("/proc/cpuinfo", &size));
DQN_ASSERT(size > 0); DQN_ASSERT(size > 0);
} }
@ -1866,8 +1855,7 @@ void DqnFile_Test()
FILE_SCOPE u32 volatile globalDebugCounter; FILE_SCOPE u32 volatile globalDebugCounter;
FILE_SCOPE DqnLock globalJobQueueLock; FILE_SCOPE DqnLock globalJobQueueLock;
const u32 QUEUE_SIZE = 256; const u32 QUEUE_SIZE = 256;
FILE_SCOPE void JobQueueDebugCallbackIncrementCounter(DqnJobQueue *const queue, FILE_SCOPE void JobQueueDebugCallbackIncrementCounter(DqnJobQueue *const queue, void *const userData)
void *const userData)
{ {
(void)userData; (void)userData;
DQN_ASSERT(queue->size == QUEUE_SIZE); DQN_ASSERT(queue->size == QUEUE_SIZE);
@ -1875,15 +1863,11 @@ FILE_SCOPE void JobQueueDebugCallbackIncrementCounter(DqnJobQueue *const queue,
DqnLockGuard guard = globalJobQueueLock.LockGuard(); DqnLockGuard guard = globalJobQueueLock.LockGuard();
globalDebugCounter++; globalDebugCounter++;
#if 0
u32 number = globalDebugCounter; u32 number = globalDebugCounter;
#if defined(DQN_WIN32_IMPLEMENTATION) #if defined(DQN_WIN32_IMPLEMENTATION)
Log("JobQueueDebugCallbackIncrementCounter(): Thread %d: Incrementing Number: %d\n", Log("JobQueueDebugCallbackIncrementCounter(): Thread %d: Incrementing Number: %d", GetCurrentThreadId(), number);
GetCurrentThreadId(), number);
#elif defined(DQN_UNIX_IMPLEMENTATION) #elif defined(DQN_UNIX_IMPLEMENTATION)
Log("JobQueueDebugCallbackIncrementCounter(): Thread unix: Incrementing Number: %d\n", Log("JobQueueDebugCallbackIncrementCounter(): Thread unix: Incrementing Number: %d", number);
number);
#endif
#endif #endif
} }
@ -2314,16 +2298,18 @@ void DqnMemSet_Test()
for (auto testIndex = 0; testIndex < size; testIndex++) for (auto testIndex = 0; testIndex < size; testIndex++)
{ {
DQN_ASSERT(((u8 *)buffers[0])[testIndex] == ((u8 *)buffers[1])[testIndex]); DQN_ASSERT(((u8 *)buffers[0])[testIndex] == ((u8 *)buffers[1])[testIndex]);
#if defined(DQN_WIN32_IMPLEMENTATION)
DQN_ASSERT(((u8 *)buffers[1])[testIndex] == ((u8 *)buffers[2])[testIndex]); DQN_ASSERT(((u8 *)buffers[1])[testIndex] == ((u8 *)buffers[2])[testIndex]);
#endif
} }
for (auto bufferIndex = 0; bufferIndex < DQN_ARRAY_COUNT(buffers); bufferIndex++) for (usize bufferIndex = 0; bufferIndex < DQN_ARRAY_COUNT(buffers); bufferIndex++)
{ {
free(buffers[bufferIndex]); free(buffers[bufferIndex]);
} }
} }
for (auto timingsIndex = 0; timingsIndex < DQN_ARRAY_COUNT(timings); timingsIndex++) for (usize timingsIndex = 0; timingsIndex < DQN_ARRAY_COUNT(timings); timingsIndex++)
{ {
f64 totalTime = 0; f64 totalTime = 0;
for (auto iterationIndex = 0; iterationIndex < NUM_ITERATIONS; iterationIndex++) for (auto iterationIndex = 0; iterationIndex < NUM_ITERATIONS; iterationIndex++)
@ -2897,15 +2883,14 @@ int main(void)
{ {
globalIndent = 1; globalIndent = 1;
globalNewLine = true; globalNewLine = true;
DqnString_Test(); DqnString_Test();
DqnMemStack_Test();
DqnChar_Test(); DqnChar_Test();
DqnRnd_Test(); DqnRnd_Test();
DqnMath_Test(); DqnMath_Test();
DqnVX_Test(); DqnVX_Test();
DqnRect_Test(); DqnRect_Test();
DqnArray_Test(); DqnArray_Test();
DqnMemStack_Test();
DqnQuickSort_Test(); DqnQuickSort_Test();
DqnHashTable_Test(); DqnHashTable_Test();
Dqn_BSearch_Test(); Dqn_BSearch_Test();

View File

@ -1,3 +1,3 @@
all: dqn_unit_test.cpp all: dqn_unit_test.cpp
mkdir -p bin mkdir -p bin
g++ -o bin/dqn_unit_test dqn_unit_test.cpp -lm -Wall -Werror -pthread -ggdb -O3 g++ -std=c++14 -o bin/dqn_unit_test dqn_unit_test.cpp -lm -Wall -pthread -ggdb