97 lines
3.2 KiB
Python
97 lines
3.2 KiB
Python
import sys
|
|
import os
|
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
|
|
|
|
import unittest
|
|
import os
|
|
import shutil
|
|
from datetime import datetime
|
|
from persistence.data_store_origin import DataStore
|
|
|
|
class TestDataStore(unittest.TestCase):
|
|
def setUp(self):
|
|
"""测试前设置"""
|
|
self.test_storage_dir = "test_data/projects"
|
|
self.data_store = DataStore(storage_dir=self.test_storage_dir)
|
|
|
|
def tearDown(self):
|
|
"""测试后清理"""
|
|
if os.path.exists(self.test_storage_dir):
|
|
shutil.rmtree("test_data")
|
|
|
|
def test_save_and_load_project(self):
|
|
"""测试保存和加载项目"""
|
|
# 保存项目
|
|
project_name = "test_project"
|
|
description = "测试项目描述"
|
|
result = self.data_store.save_project(project_name, description)
|
|
self.assertTrue(result)
|
|
|
|
# 加载并验证项目
|
|
project_data = self.data_store.load_project(project_name)
|
|
self.assertIsNotNone(project_data)
|
|
self.assertEqual(project_data.name, project_name)
|
|
self.assertEqual(project_data.description, description)
|
|
self.assertEqual(len(project_data.params), 0)
|
|
|
|
def test_add_param_to_project(self):
|
|
"""测试向项目添加参数"""
|
|
# 创建项目
|
|
project_name = "test_project"
|
|
self.data_store.save_project(project_name)
|
|
|
|
# 添加参数
|
|
param_name = "test_param"
|
|
channel_data = {
|
|
1: {
|
|
'delay_data': 0.1,
|
|
'vol_data': -6.0,
|
|
'mix_left_data': 0.5,
|
|
'mix_right_data': 0.5,
|
|
'filters': [
|
|
{
|
|
'frequency': 1000,
|
|
'gain': 0,
|
|
'q': 0.7,
|
|
'type': 'peak',
|
|
'slope': 12,
|
|
'enabled': True
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
result = self.data_store.add_param_to_project(
|
|
project_name, param_name, channel_data, "测试参数描述"
|
|
)
|
|
self.assertTrue(result)
|
|
|
|
# 验证参数添加
|
|
project_data = self.data_store.load_project(project_name)
|
|
self.assertIn(param_name, project_data.params)
|
|
self.assertEqual(
|
|
project_data.params[param_name].channels[1].delay_data,
|
|
channel_data[1]['delay_data']
|
|
)
|
|
|
|
def test_list_and_delete_projects(self):
|
|
"""测试项目列表和删除功能"""
|
|
# 创建多个项目
|
|
projects = ["project1", "project2", "project3"]
|
|
for project in projects:
|
|
self.data_store.save_project(project)
|
|
|
|
# 验证项目列表
|
|
saved_projects = self.data_store.list_projects()
|
|
self.assertEqual(len(saved_projects), len(projects))
|
|
for project in projects:
|
|
self.assertIn(project, saved_projects)
|
|
|
|
# 测试删除项目
|
|
self.assertTrue(self.data_store.delete_project("project1"))
|
|
saved_projects = self.data_store.list_projects()
|
|
self.assertEqual(len(saved_projects), len(projects) - 1)
|
|
self.assertNotIn("project1", saved_projects)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main() |