diff options
Diffstat (limited to 'tests/generics')
| -rw-r--r-- | tests/generics/test_generics_fn.zc | 25 | ||||
| -rw-r--r-- | tests/generics/test_generics_struct.zc | 14 |
2 files changed, 39 insertions, 0 deletions
diff --git a/tests/generics/test_generics_fn.zc b/tests/generics/test_generics_fn.zc new file mode 100644 index 0000000..ac1cbb5 --- /dev/null +++ b/tests/generics/test_generics_fn.zc @@ -0,0 +1,25 @@ + +fn identity<T>(x: T) -> T { + return x; +} + +struct Box<T> { + val: T; +} + +// Generic Impl +impl Box<T> { + fn get(self) -> T { + return self.val; + } +} + +test "Generics" { + // Generic Function + var i = identity<int>(42); + assert(i == 42, "Generic function failed"); + + // Generic Struct & Impl + var b = Box<int> { val: 100 }; + assert(b.get() == 100, "Generic impl failed"); +} diff --git a/tests/generics/test_generics_struct.zc b/tests/generics/test_generics_struct.zc new file mode 100644 index 0000000..ae61e4c --- /dev/null +++ b/tests/generics/test_generics_struct.zc @@ -0,0 +1,14 @@ + +struct Wrapper<T> { + item: T; + id: int; +} + +test "test_generics_struct" { + // Instantiate with int + var w1: Wrapper<int>; + w1.id = 1; + w1.item = 500; + + println "Wrapper Int: {w1.item} (ID: {w1.id})"; +} |
