| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- from array2d import array2d, chunked_array2d
- from vmath import color32, vec2i
- '''
- src/modules/array2d.c
- '''
- # =====array2d_like_render
- data = [
- [1,2,3],
- [4,5,6],
- ]
- assert array2d.fromlist(data).render() == "123\n456"
- # ====array2d_like_render_with_color
- text_data = []
- color_fg = []
- color_bg = []
- for i in range(51):
- r = i * 5 # r in [0,5,10,15...250,255]
- g = i * 5 # g in [0,5,10,15...250,255]
-
- row_fg = []
- row_bg = []
- row_text_data = []
- for j in range(51):
- b = j * 5 # j in [0,5,10,15...250,255]
- row_fg.append(color32(255-r, 255-g, 255-b, 255))
- row_bg.append(color32(r, g, b, 255))
- row_text_data.append("A")
-
- color_fg.append(row_fg)
- color_bg.append(row_bg)
- text_data.append(row_text_data)
- array2d.fromlist(text_data).render_with_color(
- array2d.fromlist(color_fg),
- array2d.fromlist(color_bg)
- )
- array2d.fromlist(text_data).render_with_color(
- array2d.fromlist(color_fg),
- array2d(51, 51, None)
- )
- array2d.fromlist(text_data).render_with_color(
- array2d(51, 51, None),
- array2d.fromlist(color_bg)
- )
- # (curr_fg.u32 != 0 || curr_bg.u32 != 0) == false
- array2d.fromlist(text_data).render_with_color(
- array2d(51, 51, None),
- array2d(51, 51, None)
- )
- try:
- array2d.fromlist(text_data).render_with_color(
- array2d.fromlist(color_fg),
- array2d(51, 51, 1)
- )
- assert False, "here expect a TypeError"
- except TypeError as e:
- assert "color32" in str(e) or "None" in str(e)
- try:
- array2d.fromlist(text_data).render_with_color(
- array2d(51, 51, 1),
- array2d.fromlist(color_bg)
- )
- assert False, "here expect a TypeError"
- except TypeError as e:
- assert "color32" in str(e) or "None" in str(e)
- # ====array2d_like_any
- data = [[False, False], [False, False]]
- assert array2d.fromlist(data).any() == False
- # ====c11_array2d_view__set
- data = chunked_array2d(4)
- data[vec2i(3,3)] = 0
- data.view()[1,1] = 10
- assert data.view() == array2d.fromlist([
- [None, None, None, None,],
- [None, 10, None, None,],
- [None, None, 0, None,],
- [None, None, None, None,],
- ])
- # ====array2d_view_origin
- assert data.view()[vec2i(1,1)-data.view().origin] == data[vec2i(1,1)]
- assert data.view()[vec2i(3,3)-data.view().origin] == data[vec2i(3,3)]
- # ====chunked_array2d__delitem__
- data = chunked_array2d(4)
- for i in range(10):
- for j in range(10):
- data[vec2i(i,j)] = 10
- del data[vec2i(0,0)]
- assert data[vec2i(0,0)] == data.default
- # ====chunked_array2d__len__
- data = chunked_array2d(4)
- for i in range(10):
- for j in range(10):
- data[vec2i(i,j)] = 10
- assert len(data) == 9
- # ====c11_chunked_array2d__mark
- import gc
- def gc_collect_callback(statue, msg):
- if statue == 'stop':
- for line in msg.split('\n'):
- print(line)
- if "5290" in line and "str" in line:
- return
- print(msg)
- raise AssertionError("Expected GC output not found")
- gc.collect()
- gc.setup_debug_callback(gc_collect_callback)
- def create_garbage():
- data = chunked_array2d(4)
- # [str ] small: 0 large: 5290
- for x in range(23):
- for y in range(230):
- data[vec2i(x, y)] = "garbage"*100
-
- create_garbage()
- gc.collect()
- # ====chunked_array2d_view_chunks
- data = chunked_array2d(4, default = 0)
- data[vec2i(-10,-10)] = -1
- assert data.view_chunks(vec2i(-3, -3), 6, 6)[vec2i(2, 2)] == -1
- data.view_chunks(vec2i(-3, -3), 6, 6)[vec2i(22, 22)] = 1
- assert data[vec2i(10,10)] == 1
|