diff options
| author | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-21 22:50:20 +0000 |
|---|---|---|
| committer | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-21 22:50:31 +0000 |
| commit | 260f01af1d3c19827d175740e30da57a288a6e86 (patch) | |
| tree | e81e36c0297c22eefa6988c0306ea87211d78314 /tests/generics | |
| parent | a552bd6b8175fe833e8a77dfb051bf3481df6851 (diff) | |
Fix for #74
Diffstat (limited to 'tests/generics')
| -rw-r--r-- | tests/generics/test_multi_generics.zc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/generics/test_multi_generics.zc b/tests/generics/test_multi_generics.zc index 30f4103..00d735e 100644 --- a/tests/generics/test_multi_generics.zc +++ b/tests/generics/test_multi_generics.zc @@ -4,6 +4,22 @@ struct Pair<A, B> { second: B; } +struct Triple<A, B, C> { + first: A; + second: B; + third: C; +} + +// Generic function with 2 type parameters +fn make_pair<F, S>(f: F, s: S) -> Pair<F, S> { + return Pair<F, S> { first: f, second: s }; +} + +// Generic function with 3 type parameters +fn make_triple<X, Y, Z>(x: X, y: Y, z: Z) -> Triple<X, Y, Z> { + return Triple<X, Y, Z> { first: x, second: y, third: z }; +} + test "multi-type generics basic" { var p: Pair<int, float>; p.first = 42; @@ -11,3 +27,16 @@ test "multi-type generics basic" { assert(p.first == 42, "First field failed"); println "Multi-type generics test passed!"; } + +test "generic function with 2 params" { + var p = make_pair<int, float>(100, 2.5); + assert(p.first == 100, "Pair first failed"); + println "2-param generic function passed!"; +} + +test "generic function with 3 params" { + var t = make_triple<int, float, bool>(42, 3.14, true); + assert(t.first == 42, "Triple first failed"); + assert(t.third == true, "Triple third failed"); + println "3-param generic function passed!"; +} |
