diff --git a/build_file.cpp b/build_file.cpp index d04cb40..b44bb94 100644 --- a/build_file.cpp +++ b/build_file.cpp @@ -1,38 +1,26 @@ #include "build_tool/library.cpp" -void CompileFiles(Strs cc, Strs files); +void Compile(Strs cc, Str files); int ReturnValue = 0; int Main() { Strs cc = CMDLine.get("cc"_s, ON_WINDOWS("cl"_s) ON_MAC("clang"_s) ON_LINUX("gcc"_s)); - Strs files = ListDir("../tests"); - For(files) { - if (S8_Seek(it, "test_"_s)) { - CompileFiles(cc, it); - } - } + Compile(cc, "../tests/test_main.cpp"); + Compile(cc, "../tests/test_filesystem.c"); return ReturnValue; } -void CompileFiles(Strs cc, Strs files) { +void Compile(Strs cc, Str file) { int result = 0; - Str exe = FilenameWithoutExt(files[0]); - Str filestr = Merge(files); - if (cc == "gcc") { - result = OS_SystemF("g++ -o %.*s.exe %.*s -g -Wno-write-strings -fsanitize=address", S8_Expand(exe), S8_Expand(filestr)); - } - else if (cc == "clang") { - result = OS_SystemF("clang++ -std=c++11 -o %.*s.exe %.*s -fdiagnostics-absolute-paths -g -Wno-writable-strings -fsanitize=address", S8_Expand(exe), S8_Expand(filestr)); - } - else { - result = OS_SystemF("cl -Fe:%.*s.exe %.*s -FC -Zi -WX -W3 -wd4200 -diagnostics:column -nologo -D_CRT_SECURE_NO_WARNINGS -fsanitize=address -RTC1", S8_Expand(exe), S8_Expand(filestr)); - } + Str exe = FilenameWithoutExt(file); + bool is_cpp = S8_EndsWith(file, ".cpp"); + if (cc == "gcc" && is_cpp) result = OS_SystemF("g++ -o %.*s.exe %.*s -g -Wno-write-strings -fsanitize=address", S8_Expand(exe), S8_Expand(file)); + else if (cc == "gcc" && !is_cpp) result = OS_SystemF("g -o %.*s.exe %.*s -g -Wno-write-strings -fsanitize=address", S8_Expand(exe), S8_Expand(file)); + else if (cc == "clang" && is_cpp) result = OS_SystemF("clang++ -std=c++11 -o %.*s.exe %.*s -fdiagnostics-absolute-paths -g -Wno-writable-strings -fsanitize=address", S8_Expand(exe), S8_Expand(file)); + else if (cc == "clang" && !is_cpp) result = OS_SystemF("clang -o %.*s.exe %.*s -fdiagnostics-absolute-paths -g -Wno-writable-strings -fsanitize=address", S8_Expand(exe), S8_Expand(file)); + else result = OS_SystemF("cl -Fe:%.*s.exe %.*s -FC -Zi -WX -W3 -wd4200 -diagnostics:column -nologo -D_CRT_SECURE_NO_WARNINGS -fsanitize=address -RTC1", S8_Expand(exe), S8_Expand(file)); - if (result == 0) { - result = OS_SystemF(IF_WINDOWS_ELSE("", "./") "%.*s.exe", S8_Expand(exe)); - } - else { - ReturnValue = result; - } + if (result == 0) result = OS_SystemF(IF_WINDOWS_ELSE("", "./") "%.*s.exe", S8_Expand(exe)); + else ReturnValue = result; } diff --git a/core_library/core.cpp b/core_library/core.cpp new file mode 100644 index 0000000..962f92f --- /dev/null +++ b/core_library/core.cpp @@ -0,0 +1 @@ +#include "core.c" \ No newline at end of file diff --git a/tests/1test_string.cpp b/tests/1test_string.cpp deleted file mode 100644 index 529d650..0000000 --- a/tests/1test_string.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "../core_library/core.c" - -#define CL_Allocator MA_Arena * -#define CL_Allocate(a, s) MA_PushSizeNonZeroed(a, s) -#define CL_ASSERT IO_Assert -#define CL_VSNPRINTF stbsp_vsnprintf -#define CL_SNPRINTF stbsp_snprintf -#include "../standalone_libraries/clexer.c" - -int main() { - // Unicode iteration over codepoints - { - S8_String s = "mrówka"; - - bool found_two_byte = false; - For(s) { - if (it.utf8_codepoint_byte_size == 2) { - found_two_byte = true; - IO_Assert(it.i == 2); - } - } - IO_Assert(found_two_byte); - } - - { - MA_Scratch scratch; - - S8_String filename = "../standalone_libraries/clexer.c"; - S8_String file = OS_ReadFile(scratch, filename); - CL_Lexer lexer = CL_Begin(scratch, file.str, filename.str); - - char buff[1024]; - for (;;) { - CL_Token token = CL_Next(&lexer); - if (token.kind == CL_EOF) break; - if (token.kind != CL_PREPROC_INCLUDE) continue; - - CL_Stringify(buff, sizeof(buff), &token); - IO_Printf("%s\n", buff); - } - } -} \ No newline at end of file diff --git a/tests/test_arena.cpp b/tests/test_arena.cpp index d888333..15a3958 100644 --- a/tests/test_arena.cpp +++ b/tests/test_arena.cpp @@ -1,5 +1,3 @@ -#include "../core_library/core.c" - void TestBootstrapArenaClear() { MA_Arena *arena = MA_Bootstrap(); IO_Assert(arena->base_len != 0); @@ -29,36 +27,6 @@ void TestBootstrapArenaClear() { ((char *)arena->memory.data)[arena->len - 1] = 0; } -void TestScratch() { - MA_Arena *scratch_arena_test = NULL; - { - MA_Scratch scratch; - IO_Assert(scratch.checkpoint.arena->len == 0); - IO_Assert(scratch.checkpoint.arena->memory.data == NULL); - int *a = MA_PushStruct(scratch, int); - IO_Assert(scratch.checkpoint.arena->memory.data); - IO_Assert(scratch.checkpoint.arena->len == sizeof(int)); - IO_Assert(scratch.checkpoint.arena); - scratch_arena_test = scratch.checkpoint.arena; - - int b = 10; - IO_Assert(MA_IsPointerInside(scratch, a)); - IO_Assert(!MA_IsPointerInside(scratch, &b)); - } - - { - MA_Scratch scratch; - IO_Assert(scratch_arena_test == scratch.checkpoint.arena); - IO_Assert(scratch.checkpoint.arena->len == 0); - - MA_Scratch scratch2(scratch.checkpoint); - IO_Assert(scratch.checkpoint.arena != scratch2.checkpoint.arena); - - MA_Scratch scratch3(scratch.checkpoint, scratch2.checkpoint); - IO_Assert(scratch3.checkpoint.arena != scratch2.checkpoint.arena); - } -} - void TestBuffer() { char buffer[1024]; MA_Arena buffer_arena = MA_MakeFromBuffer(buffer, 1024); @@ -98,12 +66,3 @@ void TestBootstrapExclusive() { For(v) IO_Assert(it == i++); v.dealloc(); } - -int main() { - TestScratch(); - TestBuffer(); - TestCreateAllocate(); - TestBootstrap(); - TestBootstrapExclusive(); - TestBootstrapArenaClear(); -} \ No newline at end of file diff --git a/tests/test_array.cpp b/tests/test_array.cpp index d5d114b..67d604c 100644 --- a/tests/test_array.cpp +++ b/tests/test_array.cpp @@ -1,4 +1,3 @@ -#include "../core_library/core.c" void TestExclusiveArenaBackedArray() { MA_Scratch scratch; MA_Arena ex = MA_Create(); @@ -118,12 +117,3 @@ void TestCopy() { a.dealloc(); } - -int main() { - TestExclusiveArenaBackedArray(); - TestRemoveForLoop(); - TestBasic(); - TestReverseLoop(); - TestCopy(); - return 0; -} \ No newline at end of file diff --git a/tests/test_main.cpp b/tests/test_main.cpp new file mode 100644 index 0000000..e2440c0 --- /dev/null +++ b/tests/test_main.cpp @@ -0,0 +1,63 @@ +#include "../core_library/core.cpp" +#include "test_table.cpp" +#include "test_array.cpp" +#include "test_arena.cpp" + +void TestClexer(); +int main() { + TestSimpleInsertAndIntegrity(); + TestStrings(); + + TestExclusiveArenaBackedArray(); + TestRemoveForLoop(); + TestBasic(); + TestReverseLoop(); + TestCopy(); + + TestBuffer(); + TestCreateAllocate(); + TestBootstrap(); + TestBootstrapExclusive(); + TestBootstrapArenaClear(); + + TestClexer(); + + // Unicode iteration over codepoints + { + S8_String s = "mrówka"; + + bool found_two_byte = false; + For(s) { + if (it.utf8_codepoint_byte_size == 2) { + found_two_byte = true; + IO_Assert(it.i == 2); + } + } + IO_Assert(found_two_byte); + } +} + +#define CL_Allocator MA_Arena * +#define CL_Allocate(a, s) MA_PushSizeNonZeroed(a, s) +#define CL_ASSERT IO_Assert +#define CL_VSNPRINTF stbsp_vsnprintf +#define CL_SNPRINTF stbsp_snprintf +#include "../standalone_libraries/clexer.c" + +void TestClexer() { + MA_Scratch scratch; + + S8_String filename = "../standalone_libraries/clexer.c"; + S8_String file = OS_ReadFile(scratch, filename); + CL_Lexer lexer = CL_Begin(scratch, file.str, filename.str); + + char buff[1024]; + for (;;) { + CL_Token token = CL_Next(&lexer); + if (token.kind == CL_EOF) break; + if (token.kind != CL_PREPROC_INCLUDE) continue; + + CL_Stringify(buff, sizeof(buff), &token); + // IO_Printf("%s\n", buff); + } +} \ No newline at end of file diff --git a/tests/test_table.cpp b/tests/test_table.cpp index 21d0539..7d6edc6 100644 --- a/tests/test_table.cpp +++ b/tests/test_table.cpp @@ -1,5 +1,3 @@ -#include "../core_library/core.c" - void TestSimpleInsertAndIntegrity() { MA_Scratch scratch; Table table = {scratch}; @@ -36,9 +34,3 @@ void TestStrings() { IO_Assert(table.gets("3")->i == 3); table.dealloc(); } - -int main() { - TestSimpleInsertAndIntegrity(); - TestStrings(); - return 0; -} \ No newline at end of file