using Invercargill; using Invercargill.DataStructures; void sorted_series_tests() { Test.add_func("/invercargill/structure/sorted_series/add_item", () => { var series = new SortedSeries(); series.add(8); assert(series.count() == 1); assert(series.first_or_default() == 8); }); Test.add_func("/invercargill/structure/sorted_series/add_many", () => { var series = new SortedSeries(); var items = range(0, 10000000); series.add_all(items); assert_cmpint(series.count(), CompareOperator.EQ, 10000000); assert(series.matches(items, (a, b) => a == b)); }); Test.add_func("/invercargill/structure/sorted_series/add_many_reversed", () => { var series = new SortedSeries(); var items = range(10000000, 0, -1); series.add_all(items); assert_cmpint(series.count(), CompareOperator.EQ, 10000000); }); Test.add_func("/invercargill/structure/sorted_series/add_twice", () => { var series = new SortedSeries(); var items = range(0, 100); series.add_all(items); series.add_all(items); assert_cmpint(series.count(), CompareOperator.EQ, 200); assert_true(series.matches(items.interleave(items), (a, b) => a == b)); }); Test.add_func("/invercargill/structure/sorted_series/remove_first_where", () => { var series = new SortedSeries(); var items = range(0, 100); series.add_all(items); series.add_all(items); items.iterate(i => series.remove_first_where(si => si == i)); assert_cmpint(series.count(), CompareOperator.EQ, 100); assert_true(series.matches(items, (a, b) => a == b)); }); Test.add_func("/invercargill/structure/sorted_series/remove_all_where", () => { var series = new SortedSeries(); var items = range(0, 100); series.add_all(items); series.add_all(items); series.remove_all_where(si => si < 50); assert_cmpint(series.count(), CompareOperator.EQ, 100); assert_true(range(50, 100).interleave(range(50, 100)).matches(series, (a, b) => a == b)); }); Test.add_func("/invercargill/structure/sorted_series/clear", () => { var series = new SortedSeries(); var items = range(0, 100); series.add_all(items); series.add_all(items); series.clear(); assert_cmpint(series.count(), CompareOperator.EQ, 0); assert_cmpint(series.last_or_default(), CompareOperator.EQ, 0); }); Test.add_func("/invercargill/structure/sorted_series/to_array", () => { var items = new int[] { 1, 8, 2, 4, 6, 5, 3, 10, 3, 7 }; var expected = new int[] { 1, 2, 3, 3, 4, 5, 6, 7, 8, 10 }; var series = new SortedSeries(); series.add_all(Wrap.array(items)); var array = series.to_array(); assert_cmpint(array.length, CompareOperator.EQ, 10); for(int i = 0; i < expected.length; i++) { assert_cmpint(array[i], CompareOperator.EQ, expected[i]); } }); }