SortedSeries.vala 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using Invercargill;
  2. using Invercargill.DataStructures;
  3. void sorted_series_tests() {
  4. Test.add_func("/invercargill/structure/sorted_series/add_item", () => {
  5. var series = new SortedSeries<int>();
  6. series.add(8);
  7. assert(series.count() == 1);
  8. assert(series.first_or_default() == 8);
  9. });
  10. Test.add_func("/invercargill/structure/sorted_series/add_many", () => {
  11. var series = new SortedSeries<int>();
  12. var items = range(0, 10000000);
  13. series.add_all(items);
  14. assert_cmpint(series.count(), CompareOperator.EQ, 10000000);
  15. assert(series.matches(items, (a, b) => a == b));
  16. });
  17. Test.add_func("/invercargill/structure/sorted_series/add_many_reversed", () => {
  18. var series = new SortedSeries<int>();
  19. var items = range(10000000, 0, -1);
  20. series.add_all(items);
  21. assert_cmpint(series.count(), CompareOperator.EQ, 10000000);
  22. });
  23. Test.add_func("/invercargill/structure/sorted_series/add_twice", () => {
  24. var series = new SortedSeries<int>();
  25. var items = range(0, 100);
  26. series.add_all(items);
  27. series.add_all(items);
  28. assert_cmpint(series.count(), CompareOperator.EQ, 200);
  29. assert_true(series.matches(items.interleave(items), (a, b) => a == b));
  30. });
  31. Test.add_func("/invercargill/structure/sorted_series/remove_first_where", () => {
  32. var series = new SortedSeries<int>();
  33. var items = range(0, 100);
  34. series.add_all(items);
  35. series.add_all(items);
  36. items.iterate(i => series.remove_first_where(si => si == i));
  37. assert_cmpint(series.count(), CompareOperator.EQ, 100);
  38. assert_true(series.matches(items, (a, b) => a == b));
  39. });
  40. Test.add_func("/invercargill/structure/sorted_series/remove_all_where", () => {
  41. var series = new SortedSeries<int>();
  42. var items = range(0, 100);
  43. series.add_all(items);
  44. series.add_all(items);
  45. series.remove_all_where(si => si < 50);
  46. assert_cmpint(series.count(), CompareOperator.EQ, 100);
  47. assert_true(range(50, 100).interleave(range(50, 100)).matches(series, (a, b) => a == b));
  48. });
  49. Test.add_func("/invercargill/structure/sorted_series/clear", () => {
  50. var series = new SortedSeries<int>();
  51. var items = range(0, 100);
  52. series.add_all(items);
  53. series.add_all(items);
  54. series.clear();
  55. assert_cmpint(series.count(), CompareOperator.EQ, 0);
  56. assert_cmpint(series.last_or_default(), CompareOperator.EQ, 0);
  57. });
  58. Test.add_func("/invercargill/structure/sorted_series/to_array", () => {
  59. var items = new int[] { 1, 8, 2, 4, 6, 5, 3, 10, 3, 7 };
  60. var expected = new int[] { 1, 2, 3, 3, 4, 5, 6, 7, 8, 10 };
  61. var series = new SortedSeries<int>();
  62. series.add_all(Wrap.array(items));
  63. var array = series.to_array();
  64. assert_cmpint(array.length, CompareOperator.EQ, 10);
  65. for(int i = 0; i < expected.length; i++) {
  66. assert_cmpint(array[i], CompareOperator.EQ, expected[i]);
  67. }
  68. });
  69. }