maze_python/tests/test_save_ui_capacity.py

153 lines
4.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
测试存档界面显示数量修改
验证能否显示10条存档记录
"""
import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from simple_save_manager import simple_save_manager
import json
from datetime import datetime
def create_test_saves():
"""创建测试存档文件"""
print("=== 创建测试存档文件 ===")
# 确保saves目录存在
if not os.path.exists("saves"):
os.makedirs("saves")
# 创建简单的测试迷宫数据
test_maze_data = {
"maze": [
["#", "#", "#", "#", "#"],
["#", "S", " ", " ", "#"],
["#", " ", "#", " ", "#"],
["#", " ", " ", "E", "#"],
["#", "#", "#", "#", "#"]
],
"metadata": {
"name": "测试迷宫",
"test": True
}
}
# 创建12个测试存档超过10个来测试显示限制
for i in range(1, 13):
filename = f"saves/test_save_{i:02d}.json"
# 修改迷宫名称
test_data = test_maze_data.copy()
test_data["metadata"] = test_maze_data["metadata"].copy()
test_data["metadata"]["name"] = f"测试迷宫_{i:02d}"
test_data["metadata"]["save_time"] = datetime.now().isoformat()
with open(filename, 'w', encoding='utf-8') as f:
json.dump(test_data, f, indent=2, ensure_ascii=False)
print(f"创建: {filename}")
print(f"✅ 创建了12个测试存档文件")
def check_save_list():
"""检查存档列表"""
print("\n=== 检查存档列表 ===")
save_list = simple_save_manager.get_save_list()
print(f"找到存档数量: {len(save_list)}")
for i, save_info in enumerate(save_list):
print(f"{i+1:2d}. {save_info['name']} ({save_info['format']})")
return len(save_list)
def calculate_display_capacity():
"""计算显示容量"""
print("\n=== 计算显示容量 ===")
from config import get_button_positions
positions = get_button_positions()
save_area = positions['save_list_area']
print(f"存档区域尺寸: {save_area[2]}x{save_area[3]} (宽x高)")
# 计算可用高度
title_height = 25
hint_height = 25
start_offset = 55 # 实际开始位置偏移
available_height = save_area[3] - start_offset
item_height = 25
max_items = available_height // item_height
print(f"标题和提示占用: {start_offset}像素")
print(f"可用高度: {available_height}像素")
print(f"每项高度: {item_height}像素")
print(f"理论最大显示: {max_items}")
return max_items
def test_ui_layout():
"""测试UI布局说明"""
print("\n=== UI测试说明 ===")
print()
print("现在可以测试存档界面显示效果:")
print("1. 运行主程序: python main.py")
print("2. 按 Ctrl+L 打开存档界面")
print("3. 验证能否看到10条存档如果存档数量足够")
print("4. 使用↑↓键测试所有存档是否可选择")
print()
print("预期结果:")
print("- 存档界面高度增加到300像素")
print("- 最多可显示约9-10条存档")
print("- 界面不会截断或重叠")
print("- 所有存档都可以正常选择和加载")
print()
def cleanup_test_files():
"""清理测试文件"""
response = input("是否删除测试存档文件? (y/n): ")
if response.lower() == 'y':
print("\n=== 清理测试文件 ===")
for i in range(1, 13):
filename = f"saves/test_save_{i:02d}.json"
if os.path.exists(filename):
os.remove(filename)
print(f"删除: {filename}")
print("✅ 测试文件清理完成")
def main():
print("开始测试存档界面显示数量...")
# 计算理论容量
max_capacity = calculate_display_capacity()
# 创建测试文件
create_test_saves()
# 检查存档列表
save_count = check_save_list()
print(f"\n=== 结果分析 ===")
print(f"理论最大显示容量: {max_capacity}")
print(f"实际存档数量: {save_count}")
if max_capacity >= 10:
print("✅ 界面尺寸足够显示10条存档")
else:
print(f"❌ 界面尺寸只能显示{max_capacity}条存档")
# UI测试说明
test_ui_layout()
# 可选清理
cleanup_test_files()
if __name__ == "__main__":
main()