fix: 改进
This commit is contained in:
51
tests/kernel/puzzles/test_cloze.py
Normal file
51
tests/kernel/puzzles/test_cloze.py
Normal file
@@ -0,0 +1,51 @@
|
||||
import unittest
|
||||
from unittest.mock import patch, MagicMock
|
||||
|
||||
from heurams.kernel.puzzles.cloze import ClozePuzzle
|
||||
|
||||
|
||||
class TestClozePuzzle(unittest.TestCase):
|
||||
"""测试 ClozePuzzle 类"""
|
||||
|
||||
def test_init(self):
|
||||
"""测试初始化"""
|
||||
puzzle = ClozePuzzle("hello/world/test", min_denominator=3, delimiter="/")
|
||||
self.assertEqual(puzzle.text, "hello/world/test")
|
||||
self.assertEqual(puzzle.min_denominator, 3)
|
||||
self.assertEqual(puzzle.delimiter, "/")
|
||||
self.assertEqual(puzzle.wording, "填空题 - 尚未刷新谜题")
|
||||
self.assertEqual(puzzle.answer, ["填空题 - 尚未刷新谜题"])
|
||||
|
||||
@patch('random.sample')
|
||||
def test_refresh(self, mock_sample):
|
||||
"""测试 refresh 方法"""
|
||||
mock_sample.return_value = [0, 2] # 选择索引 0 和 2
|
||||
puzzle = ClozePuzzle("hello/world/test", min_denominator=2, delimiter="/")
|
||||
puzzle.refresh()
|
||||
|
||||
# 检查 wording 和 answer
|
||||
self.assertNotEqual(puzzle.wording, "填空题 - 尚未刷新谜题")
|
||||
self.assertNotEqual(puzzle.answer, ["填空题 - 尚未刷新谜题"])
|
||||
# 根据模拟,应该有两个填空
|
||||
self.assertEqual(len(puzzle.answer), 2)
|
||||
self.assertEqual(puzzle.answer, ["hello", "test"])
|
||||
# wording 应包含下划线
|
||||
self.assertIn("__", puzzle.wording)
|
||||
|
||||
def test_refresh_empty_text(self):
|
||||
"""测试空文本的 refresh"""
|
||||
puzzle = ClozePuzzle("", min_denominator=3, delimiter="/")
|
||||
puzzle.refresh() # 不应引发异常
|
||||
# 空文本导致 wording 和 answer 为空
|
||||
self.assertEqual(puzzle.wording, "")
|
||||
self.assertEqual(puzzle.answer, [])
|
||||
|
||||
def test_str(self):
|
||||
"""测试 __str__ 方法"""
|
||||
puzzle = ClozePuzzle("hello/world", min_denominator=2, delimiter="/")
|
||||
str_repr = str(puzzle)
|
||||
self.assertIn("填空题 - 尚未刷新谜题", str_repr)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user