y_sparsearray_tests.inc 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // This is quite hard to test, since it can be implemented three different ways
  2. // depending on what exists when compiling.
  3. TEST__ SparseArray()
  4. {
  5. new
  6. SparseArray:arr<>;
  7. ASSERT(!Sparse_Contains(arr, 42));
  8. Sparse_Set(arr, 42, 101);
  9. ASSERT(Sparse_Contains(arr, 42));
  10. ASSERT_EQ(Sparse_Get(arr, 42), 101);
  11. Sparse_UnSet(arr, 42);
  12. ASSERT(!Sparse_Contains(arr, 42));
  13. ASSERT_EQ(Sparse_Get(arr, 42), cellmin);
  14. new
  15. BitArray:done<10000>;
  16. for (new i = 0, idx, val; i != 1000; ++i)
  17. {
  18. do
  19. {
  20. idx = random(10000);
  21. }
  22. while (Bit_Get(done, idx));
  23. val = random(99999);
  24. Bit_Let(done, idx);
  25. ASSERT(!Sparse_Contains(arr, idx));
  26. Sparse_Set(arr, idx, val);
  27. ASSERT(Sparse_Contains(arr, idx));
  28. ASSERT_EQ(Sparse_Get(arr, idx), val);
  29. val = random(99999);
  30. Sparse_Set(arr, idx, val);
  31. ASSERT(Sparse_Contains(arr, idx));
  32. ASSERT_EQ(Sparse_Get(arr, idx), val);
  33. }
  34. FOREACH__ (new idx : Bits(done))
  35. {
  36. ASSERT(Sparse_Contains(arr, idx));
  37. Sparse_UnSet(arr, idx);
  38. ASSERT_EQ(Sparse_Get(arr, idx), cellmin);
  39. ASSERT(!Sparse_Contains(arr, idx));
  40. }
  41. }