chore(syntax): Test 仓 R1 + R12 迁移
R1:T | t.CPtr -> T*(40 文件 / 1121 处;含多级 **、强转位 (T*)(x)、下标内 list[AST*]);引号前向引用 'Rect' | t.CPtr 26 处按例外保留,T | t.CPtr | t.State 25 处因 T* 后不能接 | 保持原联合写法。 R12:i = 0 + while i < N: + 尾 i += 1 -> or i in range(N):(10 文件 / 42 处;含 <= -> range(EXPR + 1)、带注解初始化 i: int = 0、尾 i = i + 1)。余 20 处经守卫判定不可安全改写(复合条件 1、尾部非自增 8、体内重绑定/continue 5、while-else 2、循环后仍被读取 2、找不到初始化 2)。
This commit is contained in:
1 parent
f5da836fbb
commit
aa5a7e7250
43 files changed
+851
-935
No files matched your search
+14
-18
@@ -18,7 +18,7 @@ def main() -> CInt | CExport:
|
||||
|
||||
# 分配内存竞技场
|
||||
arena: bytes = stdlib.malloc(65536)
|
||||
bd: memhub.MemBuddy | t.CPtr = memhub.MemBuddy(arena, 65536)
|
||||
bd: memhub.MemBuddy* = memhub.MemBuddy(arena, 65536)
|
||||
|
||||
# === Test 1: 基本插入和查找 ===
|
||||
testcheck.section("Test 1: 基本插入和查找 (set_int)")
|
||||
@@ -34,11 +34,11 @@ def main() -> CInt | CExport:
|
||||
# 须给出有元素类型的指针:c.Deref 的宽度只认 pointee 类型,i8*(t.CPtr)恒读
|
||||
# 1 字节,不再按赋值目标注解反推 4 字节。
|
||||
p1: t.CPtr = ht["alpha"]
|
||||
v1: int = *(int | t.CPtr)(p1)
|
||||
v1: int = *(int*)(p1)
|
||||
p2: t.CPtr = ht["beta"]
|
||||
v2: int = *(int | t.CPtr)(p2)
|
||||
v2: int = *(int*)(p2)
|
||||
p3: t.CPtr = ht["gamma"]
|
||||
v3: int = *(int | t.CPtr)(p3)
|
||||
v3: int = *(int*)(p3)
|
||||
stdio.printf("alpha=%d beta=%d gamma=%d\n", v1, v2, v3)
|
||||
testcheck.check(v1 == 10, "ht[alpha]==10 OK", "ht[alpha] FAILED")
|
||||
testcheck.check(v2 == 20, "ht[beta]==20 OK", "ht[beta] FAILED")
|
||||
@@ -48,7 +48,7 @@ def main() -> CInt | CExport:
|
||||
testcheck.section("Test 2: 更新已有键")
|
||||
ht.set_int("beta", 99)
|
||||
p2b: t.CPtr = ht["beta"]
|
||||
v2b: int = *(int | t.CPtr)(p2b)
|
||||
v2b: int = *(int*)(p2b)
|
||||
stdio.printf("beta(updated)=%d\n", v2b)
|
||||
testcheck.check(v2b == 99, "ht update OK", "ht update FAILED")
|
||||
testcheck.check(len(ht) == 3, "ht len still 3 OK", "ht len changed FAILED")
|
||||
@@ -58,7 +58,7 @@ def main() -> CInt | CExport:
|
||||
gv: t.CPtr = ht.get("missing", None)
|
||||
testcheck.check(gv == None, "ht get missing OK (None)", "ht get missing FAILED")
|
||||
gp: t.CPtr = ht.get("alpha", None)
|
||||
ga: int = *(int | t.CPtr)(gp)
|
||||
ga: int = *(int*)(gp)
|
||||
stdio.printf("get(alpha)=%d\n", ga)
|
||||
testcheck.check(ga == 10, "ht get existing OK", "ht get existing FAILED")
|
||||
|
||||
@@ -87,7 +87,7 @@ def main() -> CInt | CExport:
|
||||
testcheck.section("Test 6: 删除后重新插入")
|
||||
ht.set_int("beta", 555)
|
||||
p2c: t.CPtr = ht["beta"]
|
||||
v2c: int = *(int | t.CPtr)(p2c)
|
||||
v2c: int = *(int*)(p2c)
|
||||
stdio.printf("beta(re-inserted)=%d\n", v2c)
|
||||
testcheck.check(v2c == 555, "ht re-insert beta OK", "ht re-insert beta FAILED")
|
||||
testcheck.check(len(ht) == 3, "ht len 3 after re-insert OK", "ht len after re-insert FAILED")
|
||||
@@ -97,7 +97,7 @@ def main() -> CInt | CExport:
|
||||
iter_count: int = 0
|
||||
for key in ht:
|
||||
kp: t.CPtr = ht[key]
|
||||
val: int = *(int | t.CPtr)(kp)
|
||||
val: int = *(int*)(kp)
|
||||
stdio.printf("ht[%s]=%d\n", key, val)
|
||||
iter_count += 1
|
||||
testcheck.check(iter_count == 3, "ht iter OK (3)", "ht iter FAILED")
|
||||
@@ -127,12 +127,10 @@ def main() -> CInt | CExport:
|
||||
# === Test 9: 扩容测试 ===
|
||||
testcheck.section("Test 9: 扩容测试 (>16 个元素)")
|
||||
ht3: hashtable.HashTable = hashtable.HashTable(bd)
|
||||
i: int = 0
|
||||
while i < 50:
|
||||
for i in range(50):
|
||||
key_buf: str = stdlib.malloc(16)
|
||||
stdio.sprintf(key_buf, "key%d", i)
|
||||
ht3.set_int(key_buf, i * 100)
|
||||
i += 1
|
||||
n3: sizet = len(ht3)
|
||||
stdio.printf("ht3 len=%lu (after 50 inserts)\n", n3)
|
||||
testcheck.check(n3 == 50, "ht expand OK (50)", "ht expand FAILED")
|
||||
@@ -141,21 +139,21 @@ def main() -> CInt | CExport:
|
||||
k5: str = stdlib.malloc(16)
|
||||
stdio.sprintf(k5, "key5")
|
||||
p5: t.CPtr = ht3[k5]
|
||||
v5: int = *(int | t.CPtr)(p5)
|
||||
v5: int = *(int*)(p5)
|
||||
stdio.printf("ht3[key5]=%d\n", v5)
|
||||
testcheck.check(v5 == 500, "ht expand key5 OK", "ht expand key5 FAILED")
|
||||
|
||||
k25: str = stdlib.malloc(16)
|
||||
stdio.sprintf(k25, "key25")
|
||||
p25: t.CPtr = ht3[k25]
|
||||
v25: int = *(int | t.CPtr)(p25)
|
||||
v25: int = *(int*)(p25)
|
||||
stdio.printf("ht3[key25]=%d\n", v25)
|
||||
testcheck.check(v25 == 2500, "ht expand key25 OK", "ht expand key25 FAILED")
|
||||
|
||||
k49: str = stdlib.malloc(16)
|
||||
stdio.sprintf(k49, "key49")
|
||||
p49: t.CPtr = ht3[k49]
|
||||
v49: int = *(int | t.CPtr)(p49)
|
||||
v49: int = *(int*)(p49)
|
||||
stdio.printf("ht3[key49]=%d\n", v49)
|
||||
testcheck.check(v49 == 4900, "ht expand key49 OK", "ht expand key49 FAILED")
|
||||
|
||||
@@ -169,12 +167,10 @@ def main() -> CInt | CExport:
|
||||
|
||||
# === Test 11: 删除后扩容 ===
|
||||
testcheck.section("Test 11: 批量删除后操作")
|
||||
j: int = 0
|
||||
while j < 25:
|
||||
for j in range(25):
|
||||
del_buf: str = stdlib.malloc(16)
|
||||
stdio.sprintf(del_buf, "key%d", j)
|
||||
del ht3[del_buf]
|
||||
j += 1
|
||||
n3b: sizet = len(ht3)
|
||||
stdio.printf("ht3 len=%lu (after 25 deletes)\n", n3b)
|
||||
testcheck.check(n3b == 25, "ht after del OK (25)", "ht after del FAILED")
|
||||
@@ -183,7 +179,7 @@ def main() -> CInt | CExport:
|
||||
k30: str = stdlib.malloc(16)
|
||||
stdio.sprintf(k30, "key30")
|
||||
p30: t.CPtr = ht3[k30]
|
||||
v30: int = *(int | t.CPtr)(p30)
|
||||
v30: int = *(int*)(p30)
|
||||
stdio.printf("ht3[key30]=%d\n", v30)
|
||||
testcheck.check(v30 == 3000, "ht key30 after del OK", "ht key30 after del FAILED")
|
||||
|
||||
|
||||
Reference in new issue
Block a user