From 73a0f4841f8b886766dfb5d6869ee4c3d3547e89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=9A=93=E6=99=9F?= <2067144018@qq.com> Date: Thu, 4 Dec 2025 17:50:35 +0800 Subject: [PATCH] add test --- tests/100_array2d_extra1.py | 143 ++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 tests/100_array2d_extra1.py diff --git a/tests/100_array2d_extra1.py b/tests/100_array2d_extra1.py new file mode 100644 index 00000000..037bc3b1 --- /dev/null +++ b/tests/100_array2d_extra1.py @@ -0,0 +1,143 @@ +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) + ) +except TypeError as e: + pass + +try: + array2d.fromlist(text_data).render_with_color( + array2d(51, 51, 1), + array2d.fromlist(color_bg) + ) +except TypeError as e: + pass + + +# ====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)] + + +# ====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) + assert False + +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 + +