Explorar o código

Port `tests\core\thread`

Jeroen van Rijn hai 1 ano
pai
achega
dacb0f7786

+ 0 - 81
tests/common/common.odin

@@ -1,81 +0,0 @@
-// Boilerplate for tests
-package common
-
-import "core:testing"
-import "core:fmt"
-import "core:os"
-import "core:strings"
-
-TEST_count := 0
-TEST_fail  := 0
-
-when ODIN_TEST {
-	expect  :: testing.expect
-	log     :: testing.log
-	errorf  :: testing.errorf
-} else {
-	expect  :: proc(t: ^testing.T, condition: bool, message: string, loc := #caller_location) {
-		TEST_count += 1
-		if !condition {
-			TEST_fail += 1
-			fmt.printf("[%v:%s] FAIL %v\n", loc, loc.procedure, message)
-			return
-		}
-	}
-	errorf  :: proc(t: ^testing.T, message: string, args: ..any, loc := #caller_location) {
-		TEST_fail += 1
-		fmt.printf("[%v:%s] Error %v\n", loc, loc.procedure, fmt.tprintf(message, ..args))
-		return
-	}
-	log     :: proc(t: ^testing.T, v: any, loc := #caller_location) {
-		fmt.printf("[%v] ", loc)
-		fmt.printf("log: %v\n", v)
-	}
-}
-
-report :: proc(t: ^testing.T) {
-	if TEST_fail > 0 {
-		if TEST_fail > 1 {
-			fmt.printf("%v/%v tests successful, %v tests failed.\n", TEST_count - TEST_fail, TEST_count, TEST_fail)
-		} else {
-			fmt.printf("%v/%v tests successful, 1 test failed.\n", TEST_count - TEST_fail, TEST_count)
-		}
-		os.exit(1)
-	} else {
-		fmt.printf("%v/%v tests successful.\n", TEST_count, TEST_count)
-	}
-}
-
-// Returns absolute path to `sub_path` where `sub_path` is within the "tests/" sub-directory of the Odin project root
-// and we're being run from the Odin project root or from a sub-directory of "tests/"
-// e.g. get_data_path("assets/blah") will return "/Odin_root/tests/assets/blah" if run within "/Odin_root",
-// "/Odin_root/tests" or "/Odin_root/tests/subdir" etc
-get_data_path :: proc(t: ^testing.T, sub_path: string) -> (data_path: string) {
-
-	cwd := os.get_current_directory()
-	defer delete(cwd)
-
-	when ODIN_OS == .Windows {
-		norm, was_allocation := strings.replace_all(cwd, "\\", "/")
-		if !was_allocation {
-			norm = strings.clone(norm)
-		}
-		defer delete(norm)
-	} else {
-		norm := cwd
-	}
-
-	last_index := strings.last_index(norm, "/tests/")
-	if last_index == -1 {
-		len := len(norm)
-		if len >= 6 && norm[len-6:] == "/tests" {
-			data_path = fmt.tprintf("%s/%s", norm, sub_path)
-		} else {
-			data_path = fmt.tprintf("%s/tests/%s", norm, sub_path)
-		}
-	} else {
-		data_path = fmt.tprintf("%s/tests/%s", norm[:last_index], sub_path)
-	}
-
-	return data_path
-}

+ 1 - 2
tests/core/Makefile

@@ -1,7 +1,6 @@
 ODIN=../../odin
 PYTHON=$(shell which python3)
 COMMON=-no-bounds-check -vet -strict-style
-COLLECTION=-collection:tests=..
 
 all: all_bsd \
      net_test
@@ -103,7 +102,7 @@ strings_test:
 	$(ODIN) test strings $(COMMON) -out:test_core_strings
 
 thread_test:
-	$(ODIN) run thread $(COMMON) -out:test_core_thread
+	$(ODIN) test thread $(COMMON) -out:test_core_thread
 
 time_test:
 	$(ODIN) test time $(COMMON) -out:test_core_time

+ 1 - 2
tests/core/build.bat

@@ -1,6 +1,5 @@
 @echo off
 set COMMON=-no-bounds-check -vet -strict-style
-set COLLECTION=-collection:tests=..
 set PATH_TO_ODIN==..\..\odin
 python3 download_assets.py
 echo ---
@@ -112,7 +111,7 @@ echo ---
 echo ---
 echo Running core:thread tests
 echo ---
-%PATH_TO_ODIN% run thread %COMMON% %COLLECTION% -out:test_core_thread.exe || exit /b
+%PATH_TO_ODIN% test thread %COMMON% -out:test_core_thread.exe || exit /b
 
 echo ---
 echo Running core:time tests

BIN=BIN
tests/core/test_core_odin


+ 12 - 44
tests/core/thread/test_core_thread.odin

@@ -2,39 +2,7 @@ package test_core_thread
 
 import "core:testing"
 import "core:thread"
-import "core:fmt"
-import "core:os"
-
-TEST_count := 0
-TEST_fail  := 0
-
-t := &testing.T{}
-
-when ODIN_TEST {
-    expect  :: testing.expect
-    log     :: testing.log
-} else {
-    expect  :: proc(t: ^testing.T, condition: bool, message: string, loc := #caller_location) {
-        TEST_count += 1
-        if !condition {
-            TEST_fail += 1
-            fmt.printf("[%v] %v\n", loc, message)
-            return
-        }
-    }
-    log     :: proc(t: ^testing.T, v: any, loc := #caller_location) {
-        fmt.printf("[%v] ", loc)
-        fmt.printf("log: %v\n", v)
-    }
-}
-
-main :: proc() {
-	poly_data_test(t)
-
-	if TEST_fail > 0 {
-		os.exit(1)
-	}
-}
+import "base:intrinsics"
 
 @(test)
 poly_data_test :: proc(_t: ^testing.T) {
@@ -46,7 +14,7 @@ poly_data_test :: proc(_t: ^testing.T) {
 	b: [MAX]byte = 8
 	t1 := thread.create_and_start_with_poly_data(b, proc(b: [MAX]byte) {
 		b_expect: [MAX]byte = 8
-		expect(poly_data_test_t, b == b_expect, "thread poly data not correct")
+		testing.expect(poly_data_test_t, b == b_expect, "thread poly data not correct")
 	})
 	defer free(t1)
 
@@ -55,8 +23,8 @@ poly_data_test :: proc(_t: ^testing.T) {
 	t2 := thread.create_and_start_with_poly_data2(b1, b2, proc(b: [3]uintptr, b2: [MAX / 2]byte) {
 		b_expect: [3]uintptr = 1
 		b2_expect: [MAX / 2]byte = 3
-		expect(poly_data_test_t, b == b_expect,   "thread poly data not correct")
-		expect(poly_data_test_t, b2 == b2_expect, "thread poly data not correct")
+		testing.expect(poly_data_test_t, b == b_expect,   "thread poly data not correct")
+		testing.expect(poly_data_test_t, b2 == b2_expect, "thread poly data not correct")
 	})
 	defer free(t2)
 
@@ -64,21 +32,21 @@ poly_data_test :: proc(_t: ^testing.T) {
 		b_expect: [3]uintptr = 1
 		b2_expect: [MAX / 2]byte = 3
 
-		expect(poly_data_test_t, b == b_expect,   "thread poly data not correct")
-		expect(poly_data_test_t, b2 == b2_expect, "thread poly data not correct")
-		expect(poly_data_test_t, b3 == 333,       "thread poly data not correct")
+		testing.expect(poly_data_test_t, b == b_expect,   "thread poly data not correct")
+		testing.expect(poly_data_test_t, b2 == b2_expect, "thread poly data not correct")
+		testing.expect(poly_data_test_t, b3 == 333,       "thread poly data not correct")
 	})
 	defer free(t3)
 
 	t4 := thread.create_and_start_with_poly_data4(uintptr(111), b1, uintptr(333), u8(5), proc(n: uintptr, b: [3]uintptr, n2: uintptr, n4: u8) {
 		b_expect: [3]uintptr = 1
 
-		expect(poly_data_test_t, n == 111,        "thread poly data not correct")
-		expect(poly_data_test_t, b == b_expect,   "thread poly data not correct")
-		expect(poly_data_test_t, n2 == 333,       "thread poly data not correct")
-		expect(poly_data_test_t, n4 == 5,         "thread poly data not correct")
+		testing.expect(poly_data_test_t, n == 111,        "thread poly data not correct")
+		testing.expect(poly_data_test_t, b == b_expect,   "thread poly data not correct")
+		testing.expect(poly_data_test_t, n2 == 333,       "thread poly data not correct")
+		testing.expect(poly_data_test_t, n4 == 5,         "thread poly data not correct")
 	})
 	defer free(t4)
 
 	thread.join_multiple(t1, t2, t3, t4)
-}
+}