mirror of https://github.com/mackron/miniaudio.git
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
| #include "../../external/fs/fs.c"   /* <-- Must come first due to some (hopefully temporary) hacks to work around some `-std=c89` errors. */
 | |
| #include "../../miniaudio.c"
 | |
| 
 | |
| #include <stdio.h>
 | |
| 
 | |
| #define MAX_TESTS       64
 | |
| #define TEST_OUTPUT_DIR "output"
 | |
| 
 | |
| typedef int (* ma_test_entry_proc)(int argc, char** argv);
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|     const char* pName;
 | |
|     ma_test_entry_proc onEntry;
 | |
| } ma_test;
 | |
| 
 | |
| static struct
 | |
| {
 | |
|     ma_test pTests[MAX_TESTS];
 | |
|     size_t count;
 | |
| } g_Tests;
 | |
| 
 | |
| ma_result ma_register_test(const char* pName, ma_test_entry_proc onEntry)
 | |
| {
 | |
|     MA_ASSERT(pName != NULL);
 | |
|     MA_ASSERT(onEntry != NULL);
 | |
| 
 | |
|     if (g_Tests.count >= MAX_TESTS) {
 | |
|         printf("Failed to register test %s because there are too many tests already registered. Increase the value of MAX_TESTS\n", pName);
 | |
|         return MA_INVALID_OPERATION;
 | |
|     }
 | |
| 
 | |
|     g_Tests.pTests[g_Tests.count].pName   = pName;
 | |
|     g_Tests.pTests[g_Tests.count].onEntry = onEntry;
 | |
|     g_Tests.count += 1;
 | |
| 
 | |
|     return MA_SUCCESS;
 | |
| }
 | |
| 
 | |
| int ma_run_tests(int argc, char** argv)
 | |
| {
 | |
|     int result;
 | |
|     ma_bool32 hasError = MA_FALSE;
 | |
|     size_t iTest;
 | |
| 
 | |
|     fs_mkdir(NULL, TEST_OUTPUT_DIR, FS_IGNORE_MOUNTS);
 | |
| 
 | |
|     for (iTest = 0; iTest < g_Tests.count; iTest += 1) {
 | |
|         printf("=== BEGIN %s ===\n", g_Tests.pTests[iTest].pName);
 | |
|         result = g_Tests.pTests[iTest].onEntry(argc, argv);
 | |
|         printf("=== END %s : %s ===\n", g_Tests.pTests[iTest].pName, (result == 0) ? "PASSED" : "FAILED");
 | |
| 
 | |
|         if (result != 0) {
 | |
|             hasError = MA_TRUE;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     if (hasError) {
 | |
|         return 1;  /* Something failed. */
 | |
|     } else {
 | |
|         return 0;   /* Everything passed. */
 | |
|     }
 | |
| }
 | |
| 
 |