diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/generics/test_generic_ptr.zc | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/generics/test_generic_ptr.zc b/tests/generics/test_generic_ptr.zc new file mode 100644 index 0000000..e08caba --- /dev/null +++ b/tests/generics/test_generic_ptr.zc @@ -0,0 +1,41 @@ +import "std/vec.zc" +import "std/result.zc" + +test "generic pointer instantiation" { + + // Vector of ints (internally int*) nested in Result + var v = Vec<int>::new(); + v.push(10); + v.push(20); + v.push(30); + + var res = Result<Vec<int>>::Ok(v); + + // Test unwrapping (signatures involving int*) + var unwrapped = res.unwrap_ref(); + assert(unwrapped.get(0) == 10); + assert(unwrapped.get(1) == 20); + assert(unwrapped.get(2) == 30); +} + +// I will have to work on this one, so TODO. +/* +test "generic pointer double nesting" { + // Double nesting - Result<Vec<int*>> + + var v_ptr = Vec<int*>::new(); + var a: int = 100; + var b: int = 200; + + v_ptr.push(&a); + v_ptr.push(&b); + + var res_ptr = Result<Vec<int*>>::Ok(v_ptr); + var unwrapped_ptr = res_ptr.unwrap(); + + assert(*unwrapped_ptr.get(0) == 100); + assert(*unwrapped_ptr.get(1) == 200); + + unwrapped_ptr.free(); +} +*/ |
