diff options
| author | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2025-06-10 16:46:12 +0200 |
|---|---|---|
| committer | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2025-06-10 16:46:12 +0200 |
| commit | 4f4839ecc5a8ab0cfea0f38e86784ee1fff04bdb (patch) | |
| tree | 6af8405b317a363af2dffe37e040e42cc536014e /tests/core | |
| parent | 14d2541529074f5b0462671e93881f58097b06e3 (diff) | |
Add initial tests for big rationals
Diffstat (limited to 'tests/core')
| -rw-r--r-- | tests/core/math/big/build.bat | 4 | ||||
| -rw-r--r-- | tests/core/math/big/test_core_math_big.odin | 48 |
2 files changed, 51 insertions, 1 deletions
diff --git a/tests/core/math/big/build.bat b/tests/core/math/big/build.bat index ad199d775..a15e48488 100644 --- a/tests/core/math/big/build.bat +++ b/tests/core/math/big/build.bat @@ -11,4 +11,6 @@ echo Running core:math/big tests echo ---
%PATH_TO_ODIN% build . %COMMON% -o:speed -out:%OUT_NAME%
-python3 test.py %TEST_ARGS%
\ No newline at end of file +python3 test.py %TEST_ARGS%
+
+odin test test_core_math_big.odin -file
\ No newline at end of file diff --git a/tests/core/math/big/test_core_math_big.odin b/tests/core/math/big/test_core_math_big.odin index 9a1e7b01b..14b6e978c 100644 --- a/tests/core/math/big/test_core_math_big.odin +++ b/tests/core/math/big/test_core_math_big.odin @@ -35,3 +35,51 @@ test_permutations_and_combinations :: proc(t: ^testing.T) { testing.expect_value(t, error, nil) } } + +Rational_Vectors :: struct { + numerator: int, + denominator: int, + expected_f64: f64, + expected_f32: f32, + expected_f16: f16, + exact_f64: bool, + exact_f32: bool, + exact_f16: bool, +} +rational_vectors := []Rational_Vectors{ + {-1, 1, -1.00, -1.00, -1.00, true, true, true}, + { 1, 4, 0.25, 0.25, 0.25, true, true, true}, + { 3, 4, 0.75, 0.75, 0.75, true, true, true}, + {-3, 4, -0.75, -0.75, -0.75, true, true, true}, +} + +@(test) +test_rational_to_float :: proc(t: ^testing.T) { + for vec in rational_vectors { + r: big.Rat + defer big.destroy(&r) + big.set(&r.a, vec.numerator) + big.set(&r.b, vec.denominator) + + { + float, exact, err := big.rat_to_f64(&r) + testing.expect_value(t, float, vec.expected_f64) + testing.expect(t, exact == vec.exact_f64) + testing.expect(t, err == nil) + } + + { + float, exact, err := big.rat_to_f32(&r) + testing.expect_value(t, float, vec.expected_f32) + testing.expect(t, exact == vec.exact_f32) + testing.expect(t, err == nil) + } + + { + float, exact, err := big.rat_to_f16(&r) + testing.expect_value(t, float, vec.expected_f16) + testing.expect(t, exact == vec.exact_f16) + testing.expect(t, err == nil) + } + } +}
\ No newline at end of file |