1
0

902_chunked_array2d.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import array2d
  2. from vmath import vec2i
  3. def on_builder(a:vec2i):
  4. return str(a)
  5. pass
  6. default = 0
  7. a = array2d.chunked_array2d(16, default,on_builder)
  8. assert a.chunk_size == 16
  9. a[vec2i(16, 16)] = 16
  10. a[vec2i(15, 16)] = 15
  11. assert a[vec2i(16, 16)] == 16
  12. assert a[vec2i(15, 16)] == 15
  13. assert a[vec2i(16, 15)] == default
  14. a1,a2=a.world_to_chunk(vec2i(15,16))
  15. assert a.remove_chunk(a1)== True
  16. assert a[vec2i(15, 16)] == default
  17. assert a.get_context(vec2i(1,1))==on_builder(vec2i(1,1))
  18. assert a.view().tolist()==[
  19. [16 if i==0 and j==0 else 0 for j in range(16)] for i in range(16)
  20. ]
  21. assert a.view_rect(vec2i(15,15),4,4).tolist()==[
  22. [0,0,0,0],
  23. [0,16,0,0],
  24. [0,0,0,0],
  25. [0,0,0,0]
  26. ]
  27. a[vec2i(15, 16)] = 15
  28. assert a.view_chunk(a1).tolist()==[
  29. [15 if i==0 and j==15 else 0 for j in range(16)] for i in range(16)
  30. ]
  31. a.clear()
  32. assert a[vec2i(16, 16)] == default
  33. assert a[vec2i(15, 16)] == default
  34. assert a[vec2i(16, 15)] == default
  35. from typing import Any
  36. a = array2d.chunked_array2d[int, Any](4, default=0, context_builder=lambda x: 1)
  37. assert a.chunk_size == 4
  38. assert a.add_chunk(vec2i(0, 1)) == 1
  39. assert a.get_context(vec2i(0, 1)) == 1
  40. assert a.move_chunk(vec2i(2, 1), vec2i(1, 1)) == False
  41. assert a.move_chunk(vec2i(0, 1), vec2i(1, 1)) == True
  42. assert a.get_context(vec2i(1, 1)) == 1
  43. assert a.get_context(vec2i(0, 1)) == None
  44. b = a.copy()
  45. assert a is not b
  46. assert a.chunk_size == b.chunk_size
  47. assert a.default == b.default
  48. assert a.context_builder == b.context_builder
  49. assert (a.view() == b.view()).all()
  50. for pos, ctx in a:
  51. assert b.get_context(pos) == ctx