snapshot before regression test

This commit is contained in:
t
2026-07-18 19:25:40 +08:00
commit 796222a300
2295 changed files with 206453 additions and 0 deletions

View File

@@ -0,0 +1,129 @@
import stdio
import t, c
# ============================================================
# OOP 测试:存在方法的 class 自动升级为 OOP 结构体
# ============================================================
# ============================================================
# 测试 1: 基本方法(无 __init____before_init__ 零值填充)
# ============================================================
class Point:
x: t.CInt
y: t.CInt
def MoveTo(self, nx: t.CInt, ny: t.CInt) -> t.CInt:
self.x = nx
self.y = ny
return 0
def GetX(self) -> t.CInt:
return self.x
def GetY(self) -> t.CInt:
return self.y
# ============================================================
# 测试 2: 带默认值的 OOP 结构体__before_init__ 应用默认值)
# ============================================================
class Counter:
count: t.CInt = 0
step: t.CInt = 1
def Increment(self) -> t.CInt:
self.count = self.count + self.step
return self.count
def Reset(self) -> t.CInt:
self.count = 0
return 0
# ============================================================
# 测试 3: __init__ 构造函数
# ============================================================
class Rect:
width: t.CInt
height: t.CInt
def __init__(self, w: t.CInt, h: t.CInt):
self.width = w
self.height = h
def Area(self) -> t.CInt:
return self.width * self.height
# ============================================================
# 主函数
# ============================================================
def oop_test() -> int:
# ============================================================
# 测试 1: 基本方法调用
# ============================================================
stdio.printf("oop: === Test 1: Basic Methods ===\n")
p: Point = Point()
p.MoveTo(10, 20)
stdio.printf("oop: p.x=%d p.y=%d\n", p.GetX(), p.GetY())
if p.GetX() != 10:
stdio.printf("[FAIL] p.GetX()=%d expected 10\n", p.GetX())
return 1
if p.GetY() != 20:
stdio.printf("[FAIL] p.GetY()=%d expected 20\n", p.GetY())
return 1
# 修改字段后再次调用方法
p.MoveTo(100, 200)
stdio.printf("oop: after move p.x=%d p.y=%d\n", p.GetX(), p.GetY())
if p.GetX() != 100:
return 1
# ============================================================
# 测试 2: 默认值 + 方法
# ============================================================
stdio.printf("oop: === Test 2: Defaults + Methods ===\n")
cnt: Counter = Counter()
stdio.printf("oop: initial count=%d step=%d\n", cnt.count, cnt.step)
if cnt.count != 0:
stdio.printf("[FAIL] cnt.count=%d expected 0\n", cnt.count)
return 1
if cnt.step != 1:
stdio.printf("[FAIL] cnt.step=%d expected 1\n", cnt.step)
return 1
r1: int = cnt.Increment()
r2: int = cnt.Increment()
r3: int = cnt.Increment()
stdio.printf("oop: after 3 increments: %d %d %d\n", r1, r2, r3)
if r1 != 1 or r2 != 2 or r3 != 3:
stdio.printf("[FAIL] increments: %d %d %d\n", r1, r2, r3)
return 1
cnt.Reset()
r4: int = cnt.Increment()
stdio.printf("oop: after reset+increment: %d\n", r4)
if r4 != 1:
return 1
# ============================================================
# 测试 3: __init__ 构造函数
# ============================================================
stdio.printf("oop: === Test 3: __init__ ===\n")
rect: Rect = Rect(3, 4)
area: int = rect.Area()
stdio.printf("oop: rect %dx%d area=%d\n", rect.width, rect.height, area)
if area != 12:
stdio.printf("[FAIL] area=%d expected 12\n", area)
return 1
if rect.width != 3:
stdio.printf("[FAIL] width=%d expected 3\n", rect.width)
return 1
if rect.height != 4:
stdio.printf("[FAIL] height=%d expected 4\n", rect.height)
return 1
stdio.printf("oop: === All OOP Tests Passed ===\n")
return 0