// Array_Contains / IndexOf / Extend + Iter_Collect / AnyEq import Std::Io::{PrintLine, PrintInt}; import Std::Array::{ Array, Array_New, Array_Push, Array_Contains, Array_IndexOf, Array_Extend, Array_Len, Array_Get, Array_Free }; import Std::Iter::{Array_Iter, Iter, Iter_Collect, Iter_AnyEq, Iter_AllEq, Iter_HasNext, Iter_Next}; import Std::Test::{Test_AssertTrue, Test_AssertFalse, Test_AssertEqInt, Test_Pass}; func Main() -> int { var a: Array = Array_New(4); Array_Push(&a, 10); Array_Push(&a, 20); Array_Push(&a, 30); Test_AssertTrue(Array_Contains(&a, 20)); Test_AssertFalse(Array_Contains(&a, 99)); Test_AssertEqInt(Array_IndexOf(&a, 30), 2); Test_AssertEqInt(Array_IndexOf(&a, 99), -1); var b: Array = Array_New(2); Array_Push(&b, 40); Array_Push(&b, 50); Array_Extend(&a, &b); Test_AssertEqInt(Array_Len(&a) as int, 5); Test_AssertEqInt(Array_Get(&a, 4), 50); var it: Iter = Array_Iter(&a); Test_AssertTrue(Iter_AnyEq(&it, 10)); Test_AssertFalse(Iter_AllEq(&it, 10)); // Skip first two via advancing, collect rest discard Iter_Next(&it); discard Iter_Next(&it); var rest: Array = Iter_Collect(&it); Test_AssertEqInt(Array_Len(&rest) as int, 3); Test_AssertEqInt(Array_Get(&rest, 0), 30); Array_Free(&a); Array_Free(&b); Array_Free(&rest); PrintLine("array_iter_extra: ok"); Test_Pass("array + iter extras"); return 0; }