Cache.vala 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using Invercargill;
  2. using Invercargill.Convert;
  3. void cache_tests() {
  4. Test.add_func("/invercargill/operator/cache", () => {
  5. var runs = 0;
  6. var enumerable = range(0, 64).act(() => runs++).cache().assert_promotion<SignedNativeIntegers>();
  7. var count = enumerable.count();
  8. var min = enumerable.min();
  9. var max = enumerable.max();
  10. var average = enumerable.average();
  11. assert_cmpint(64, CompareOperator.EQ, count);
  12. assert_cmpint(0, CompareOperator.EQ, min);
  13. assert_cmpint(63, CompareOperator.EQ, max);
  14. assert_cmpint(31, CompareOperator.EQ, average);
  15. assert_cmpint(64, CompareOperator.EQ, runs);
  16. });
  17. Test.add_func("/invercargill/cache/once", () => {
  18. var runs = 0;
  19. CachedGet<int> func = () => once<int>(() => ++runs);
  20. var enumerable = range(0, 64).select<int>(i => func()).to_vector();
  21. assert_cmpint(1, CompareOperator.EQ, runs);
  22. assert_true(enumerable.all(i => i == 1));
  23. });
  24. }