Files
cultivation-world-simulator/tests/test_simulator.py
2025-08-28 22:25:05 +08:00

52 lines
1.3 KiB
Python

import random
from src.sim.simulator import Simulator
from src.classes.avatar import Avatar, Gender
from src.classes.calendar import Month, Year
from src.classes.world import World
from src.classes.tile import Map, TileType
from src.classes.action import Move
def test_simulator_step_moves_avatar_and_sets_tile():
# 固定随机种子,确保决定的移动是可预测的
random.seed(0)
# 构建 3x3 地图并填充地块
game_map = Map(width=3, height=3)
for x in range(3):
for y in range(3):
game_map.create_tile(x, y, TileType.PLAIN)
world = World(map=game_map, year=Year(1), month=Month.JANUARY)
# 将角色放在地图中心,避免越界
avatar = Avatar(
world=world,
name="Tester",
id="1",
birth_month=Month.JANUARY,
birth_year=Year(2000),
age=20,
gender=Gender.MALE,
pos_x=1,
pos_y=1,
)
sim = Simulator(world)
sim.avatars["1"] = avatar
# 执行一步模拟
sim.step()
# 断言位置在边界内
assert 0 <= avatar.pos_x < game_map.width
assert 0 <= avatar.pos_y < game_map.height
# 断言 tile 已正确设置且与位置一致
assert avatar.tile is not None
assert avatar.tile.x == avatar.pos_x
assert avatar.tile.y == avatar.pos_y