commit 78c8ffd8542e3f09b6cf37164aa536dd12f6bda9
parent 35931843c2f9d6dd8d1c7e50e4fcd654df5dcde1
Author: Jack Mordaunt <jackmordaunt.dev@gmail.com>
Date: Thu, 18 May 2023 20:38:54 +0800
test: add test files that exercise C code in various ways
Signed-off-by: Jack Mordaunt <jackmordaunt.dev@gmail.com>
Diffstat:
2 files changed, 144 insertions(+), 0 deletions(-)
diff --git a/internal/test/main.c b/internal/test/main.c
@@ -0,0 +1,68 @@
+#include "../../audio_windows.h"
+
+#ifdef _MSC_VER
+#define _CRT_SECURE_NO_WARNINGS
+#endif
+
+int main(int argc, char** argv) {
+ if (argc < 2) {
+ printf("supply file name");
+ goto done;
+ }
+
+ printf("press return to start media framework...\n");
+ getchar();
+
+ StartMediaFramework();
+
+ printf("press return to decode...\n");
+ getchar();
+
+ const char* fname = argv[1];
+ FILE* f = fopen(fname, "rb");
+
+ if (f == NULL) {
+ fprintf(stderr, "cannot open file '%s': %s\n", fname, strerror(errno));
+ goto done;
+ }
+
+ fseek(f, 0, SEEK_END);
+ const int fsize = ftell(f);
+
+ fseek(f, 0, SEEK_SET);
+ byte* b = malloc(fsize);
+
+ fread(b, fsize, 1, f);
+ fclose(f);
+
+ Buffer* buf;
+ buf = BufferNew();
+
+ DecodeResult r;
+
+ r = Decode(b, fsize);
+
+ free(b);
+
+ if (r.Err != NULL) {
+ fprintf(stderr, "decoding: %s\n", r.Err->Str);
+ goto done;
+ }
+
+ printf("press return to free memory...\n");
+ getchar();
+
+ BufferFree(r.Uncompressed);
+
+ printf("press return to end media framework...\n");
+ getchar();
+
+ EndMediaFramework();
+
+ printf("press return to exit...\n");
+ getchar();
+
+done:
+ return 0;
+}
+
diff --git a/internal/test/main_test.c b/internal/test/main_test.c
@@ -0,0 +1,76 @@
+#include "../../audio_windows.h"
+
+#ifdef _MSC_VER
+#define _CRT_SECURE_NO_WARNINGS
+#endif
+
+#if _WIN32
+# define C_RED(s) s
+# define C_GREEN(s) s
+#else
+# define C_RED(s) "\033[31;1m" s "\033[0m"
+# define C_GREEN(s) "\033[32;1m" s "\033[0m"
+#endif
+
+#define TEST(s, x) \
+ do { \
+ if (x) { \
+ printf(C_GREEN("PASS") " %s\n", s); \
+ (*count_pass)++; \
+ } else { \
+ printf(C_RED("FAIL") " %s\n", s); \
+ (*count_fail)++; \
+ } \
+ } while (0)
+
+void
+TestBuffer(int *count_fail, int *count_pass) {
+
+ Buffer *b = NULL;
+
+ b = BufferNew();
+
+ TEST("BufferNew zero len", b->Len == 0);
+ TEST("BufferNew not null", b->Data != NULL);
+ TEST("BufferNew default size", b->Cap == BUFFER_DEFAULT_SIZE);
+
+ BYTE *data = malloc(1024);
+ BufferWrite(b, 1024, data);
+ free(data);
+
+ TEST("BufferWrite data pointer no null", b->Data != NULL);
+ TEST("BufferWrite len matches data written", b->Len == 1024);
+ TEST("BufferWrite cap unchanged", b->Cap == BUFFER_DEFAULT_SIZE);
+
+ for (int ii = 0; ii < 1024; ii++) {
+ BYTE *data = malloc(1024);
+ BufferWrite(b, 1024, data);
+ free(data);
+ }
+
+ TEST("BufferWrite data pointer not null", b->Data != NULL);
+ TEST("BufferWrite len matches data written", b->Len == 1024*1025);
+ TEST("BufferWrite exceed cap should grow", b->Cap != BUFFER_DEFAULT_SIZE);
+
+ BufferFree(b);
+}
+
+void
+TestCharWiden(int *count_fail, int *count_pass) {
+
+}
+
+int
+main(int argc, char** argv) {
+
+ int count_fail = 0;
+ int count_pass = 0;
+
+ TestBuffer(&count_fail, &count_pass);
+ TestCharWiden(&count_fail, &count_pass);
+
+ printf("%d fail, %d pass\n", count_fail, count_pass);
+ return count_fail != 0;
+}
+
+