aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2024-05-31 01:12:35 +0200
committerFeoramund <161657516+Feoramund@users.noreply.github.com>2024-06-02 14:47:09 -0400
commit5b1ffba915286209b83c444d40f9fcb4d44c9bc8 (patch)
treec4401ca2c872e66860dc0a17cb9a740e391e6ba7
parenta406ff70636b03a91024791c22838c1a67ce4817 (diff)
Port `testing\core\time`
-rw-r--r--tests/core/Makefile2
-rw-r--r--tests/core/build.bat2
-rw-r--r--tests/core/time/test_core_time.odin170
3 files changed, 94 insertions, 80 deletions
diff --git a/tests/core/Makefile b/tests/core/Makefile
index 34e490c69..ec4cdcafd 100644
--- a/tests/core/Makefile
+++ b/tests/core/Makefile
@@ -106,7 +106,7 @@ thread_test:
$(ODIN) run thread $(COMMON) -out:test_core_thread
time_test:
- $(ODIN) run time $(COMMON) -out:test_core_time
+ $(ODIN) test time $(COMMON) -out:test_core_time
clean:
rm test_* \ No newline at end of file
diff --git a/tests/core/build.bat b/tests/core/build.bat
index eee489dec..090369848 100644
--- a/tests/core/build.bat
+++ b/tests/core/build.bat
@@ -117,4 +117,4 @@ echo ---
echo ---
echo Running core:time tests
echo ---
-%PATH_TO_ODIN% run time %COMMON% %COLLECTION% -out:test_core_time.exe || exit /b \ No newline at end of file
+%PATH_TO_ODIN% test time %COMMON% -out:test_core_time.exe || exit /b \ No newline at end of file
diff --git a/tests/core/time/test_core_time.odin b/tests/core/time/test_core_time.odin
index c6c6869a7..aeae44ca1 100644
--- a/tests/core/time/test_core_time.odin
+++ b/tests/core/time/test_core_time.odin
@@ -1,68 +1,17 @@
package test_core_time
-import "core:fmt"
-import "core:mem"
-import "core:os"
import "core:testing"
import "core:time"
import dt "core:time/datetime"
is_leap_year :: time.is_leap_year
-TEST_count := 0
-TEST_fail := 0
-
-when ODIN_TEST {
- expect :: testing.expect
- expect_value :: testing.expect_value
- 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() {
- t := testing.T{}
-
- track: mem.Tracking_Allocator
- mem.tracking_allocator_init(&track, context.allocator)
- defer mem.tracking_allocator_destroy(&track)
- context.allocator = mem.tracking_allocator(&track)
-
- test_ordinal_date_roundtrip(&t)
- test_component_to_time_roundtrip(&t)
- test_parse_rfc3339_string(&t)
- test_parse_iso8601_string(&t)
-
- for _, leak in track.allocation_map {
- expect(&t, false, fmt.tprintf("%v leaked %m\n", leak.location, leak.size))
- }
- for bad_free in track.bad_free_array {
- expect(&t, false, fmt.tprintf("%v allocation %p was freed badly\n", bad_free.location, bad_free.memory))
- }
-
- fmt.printf("%v/%v tests successful.\n", TEST_count - TEST_fail, TEST_count)
- if TEST_fail > 0 {
- os.exit(1)
- }
-}
-
@test
test_ordinal_date_roundtrip :: proc(t: ^testing.T) {
- expect(t, dt.unsafe_ordinal_to_date(dt.unsafe_date_to_ordinal(dt.MIN_DATE)) == dt.MIN_DATE, "Roundtripping MIN_DATE failed.")
- expect(t, dt.unsafe_date_to_ordinal(dt.unsafe_ordinal_to_date(dt.MIN_ORD)) == dt.MIN_ORD, "Roundtripping MIN_ORD failed.")
- expect(t, dt.unsafe_ordinal_to_date(dt.unsafe_date_to_ordinal(dt.MAX_DATE)) == dt.MAX_DATE, "Roundtripping MAX_DATE failed.")
- expect(t, dt.unsafe_date_to_ordinal(dt.unsafe_ordinal_to_date(dt.MAX_ORD)) == dt.MAX_ORD, "Roundtripping MAX_ORD failed.")
+ testing.expect(t, dt.unsafe_ordinal_to_date(dt.unsafe_date_to_ordinal(dt.MIN_DATE)) == dt.MIN_DATE, "Roundtripping MIN_DATE failed.")
+ testing.expect(t, dt.unsafe_date_to_ordinal(dt.unsafe_ordinal_to_date(dt.MIN_ORD)) == dt.MIN_ORD, "Roundtripping MIN_ORD failed.")
+ testing.expect(t, dt.unsafe_ordinal_to_date(dt.unsafe_date_to_ordinal(dt.MAX_DATE)) == dt.MAX_DATE, "Roundtripping MAX_DATE failed.")
+ testing.expect(t, dt.unsafe_date_to_ordinal(dt.unsafe_ordinal_to_date(dt.MAX_ORD)) == dt.MAX_ORD, "Roundtripping MAX_ORD failed.")
}
/*
@@ -160,22 +109,51 @@ test_parse_rfc3339_string :: proc(t: ^testing.T) {
is_leap := false
if test.apply_offset {
res, consumed := time.rfc3339_to_time_utc(test.rfc_3339, &is_leap)
- msg := fmt.tprintf("[apply offet] Parsing failed: %v -> %v (nsec: %v). Expected %v consumed, got %v", test.rfc_3339, res, res._nsec, test.consumed, consumed)
- expect(t, test.consumed == consumed, msg)
+ testing.expectf(
+ t,
+ test.consumed == consumed,
+ "[apply offet] Parsing failed: %v -> %v (nsec: %v). Expected %v consumed, got %v",
+ test.rfc_3339, res, res._nsec, test.consumed, consumed,
+ )
if test.consumed == consumed {
- expect(t, test.datetime == res, fmt.tprintf("Time didn't match. Expected %v (%v), got %v (%v)", test.datetime, test.datetime._nsec, res, res._nsec))
- expect(t, test.is_leap == is_leap, "Expected a leap second, got none.")
+ testing.expectf(
+ t,
+ test.datetime == res,
+ "Time didn't match. Expected %v (%v), got %v (%v)",
+ test.datetime, test.datetime._nsec, res, res._nsec,
+ )
+ testing.expect(
+ t,
+ test.is_leap == is_leap,
+ "Expected a leap second, got none",
+ )
}
} else {
res, offset, consumed := time.rfc3339_to_time_and_offset(test.rfc_3339)
- msg := fmt.tprintf("Parsing failed: %v -> %v (nsec: %v), offset: %v. Expected %v consumed, got %v", test.rfc_3339, res, res._nsec, offset, test.consumed, consumed)
- expect(t, test.consumed == consumed, msg)
+ testing.expectf(
+ t,
+ test.consumed == consumed,
+ "Parsing failed: %v -> %v (nsec: %v), offset: %v. Expected %v consumed, got %v",
+ test.rfc_3339, res, res._nsec, offset, test.consumed, consumed,
+ )
if test.consumed == consumed {
- expect(t, test.datetime == res, fmt.tprintf("Time didn't match. Expected %v (%v), got %v (%v)", test.datetime, test.datetime._nsec, res, res._nsec))
- expect(t, test.utc_offset == offset, fmt.tprintf("UTC offset didn't match. Expected %v, got %v", test.utc_offset, offset))
- expect(t, test.is_leap == is_leap, "Expected a leap second, got none.")
+ testing.expectf(
+ t, test.datetime == res,
+ "Time didn't match. Expected %v (%v), got %v (%v)",
+ test.datetime, test.datetime._nsec, res, res._nsec,
+ )
+ testing.expectf(
+ t,
+ test.utc_offset == offset,
+ "UTC offset didn't match. Expected %v, got %v",
+ test.utc_offset, offset,
+ )
+ testing.expect(
+ t, test.is_leap == is_leap,
+ "Expected a leap second, got none",
+ )
}
}
}
@@ -187,22 +165,52 @@ test_parse_iso8601_string :: proc(t: ^testing.T) {
is_leap := false
if test.apply_offset {
res, consumed := time.iso8601_to_time_utc(test.iso_8601, &is_leap)
- msg := fmt.tprintf("[apply offet] Parsing failed: %v -> %v (nsec: %v). Expected %v consumed, got %v", test.iso_8601, res, res._nsec, test.consumed, consumed)
- expect(t, test.consumed == consumed, msg)
+ testing.expectf(
+ t,
+ test.consumed == consumed,
+ "[apply offet] Parsing failed: %v -> %v (nsec: %v). Expected %v consumed, got %v",
+ test.iso_8601, res, res._nsec, test.consumed, consumed,
+ )
if test.consumed == consumed {
- expect(t, test.datetime == res, fmt.tprintf("Time didn't match. Expected %v (%v), got %v (%v)", test.datetime, test.datetime._nsec, res, res._nsec))
- expect(t, test.is_leap == is_leap, "Expected a leap second, got none.")
+ testing.expectf(
+ t,
+ test.datetime == res,
+ "Time didn't match. Expected %v (%v), got %v (%v)",
+ test.datetime, test.datetime._nsec, res, res._nsec,
+ )
+ testing.expect(
+ t,
+ test.is_leap == is_leap,
+ "Expected a leap second, got none",
+ )
}
} else {
res, offset, consumed := time.iso8601_to_time_and_offset(test.iso_8601)
- msg := fmt.tprintf("Parsing failed: %v -> %v (nsec: %v), offset: %v. Expected %v consumed, got %v", test.iso_8601, res, res._nsec, offset, test.consumed, consumed)
- expect(t, test.consumed == consumed, msg)
+ testing.expectf(
+ t,
+ test.consumed == consumed,
+ "Parsing failed: %v -> %v (nsec: %v), offset: %v. Expected %v consumed, got %v",
+ test.iso_8601, res, res._nsec, offset, test.consumed, consumed,
+ )
if test.consumed == consumed {
- expect(t, test.datetime == res, fmt.tprintf("Time didn't match. Expected %v (%v), got %v (%v)", test.datetime, test.datetime._nsec, res, res._nsec))
- expect(t, test.utc_offset == offset, fmt.tprintf("UTC offset didn't match. Expected %v, got %v", test.utc_offset, offset))
- expect(t, test.is_leap == is_leap, "Expected a leap second, got none.")
+ testing.expectf(
+ t, test.datetime == res,
+ "Time didn't match. Expected %v (%v), got %v (%v)",
+ test.datetime, test.datetime._nsec, res, res._nsec,
+ )
+ testing.expectf(
+ t,
+ test.utc_offset == offset,
+ "UTC offset didn't match. Expected %v, got %v",
+ test.utc_offset, offset,
+ )
+ testing.expect(
+ t,
+ test.is_leap == is_leap,
+ "Expected a leap second, got none",
+ )
}
}
}
@@ -231,15 +239,21 @@ test_component_to_time_roundtrip :: proc(t: ^testing.T) {
date_component_roundtrip_test :: proc(t: ^testing.T, moment: dt.DateTime) {
res, ok := time.datetime_to_time(moment.year, moment.month, moment.day, moment.hour, moment.minute, moment.second)
- expect(t, ok, "Couldn't convert date components into date")
+ testing.expect(
+ t,
+ ok,
+ "Couldn't convert date components into date",
+ )
YYYY, MM, DD := time.date(res)
hh, mm, ss := time.clock(res)
- expected := fmt.tprintf("Expected %4d-%2d-%2d %2d:%2d:%2d, got %4d-%2d-%2d %2d:%2d:%2d",
- moment.year, moment.month, moment.day, moment.hour, moment.minute, moment.second, YYYY, MM, DD, hh, mm, ss)
-
ok = moment.year == i64(YYYY) && moment.month == i8(MM) && moment.day == i8(DD)
ok &= moment.hour == i8(hh) && moment.minute == i8(mm) && moment.second == i8(ss)
- expect(t, ok, expected)
+ testing.expectf(
+ t,
+ ok,
+ "Expected %4d-%2d-%2d %2d:%2d:%2d, got %4d-%2d-%2d %2d:%2d:%2d",
+ moment.year, moment.month, moment.day, moment.hour, moment.minute, moment.second, YYYY, MM, DD, hh, mm, ss,
+ )
} \ No newline at end of file