using Invercargill; void first_tests() { Test.add_func("/invercargill/operator/scalar/first/no-condition", () => { var items = ate(new int[] { 1, 2, 3, 4, 5, 6}); try{ var first = items.first(); assert_true(first == 1); } catch (Error e) { assert_no_error(e); } }); Test.add_func("/invercargill/operator/scalar/first/condition", () => { var items = ate(new int[] { 1, 2, 3, 4, 5, 6}); try { var first = items.first(i => i > 3); assert_true(first == 4); } catch (Error e) { assert_no_error(e); } }); Test.add_func("/invercargill/operator/scalar/first/empty", () => { var items = ate(new int[] {}); try { items.first(); assert_not_reached(); } catch (Error e) { } }); Test.add_func("/invercargill/operator/scalar/last/no-condition", () => { var items = ate(new int[] { 1, 2, 3, 4, 5, 6}); try{ var last = items.last(); assert_true(last == 6); } catch (Error e) { assert_no_error(e); } }); Test.add_func("/invercargill/operator/scalar/last/condition", () => { var items = ate(new int[] { 1, 2, 3, 4, 5, 6}); try { var last = items.last(i => i < 4); assert_true(last == 3); } catch (Error e) { assert_no_error(e); } }); Test.add_func("/invercargill/operator/scalar/last/empty", () => { var items = ate(new int[] {}); try { items.last(); assert_not_reached(); } catch (Error e) { } }); }