Spaces:
Running on Zero
Running on Zero
| """Tests for dream parser.""" | |
| from core.parser import _parse_text_format, _fallback_entity_extraction, _strip_thinking | |
| def test_parse_text_format_basic(): | |
| """Test text format parsing with standard output.""" | |
| text = """地点:水晶城市 — 漂浮的世界,由光点组成 | |
| 人物:银发精灵守望者 — 守护者与引导者 | |
| 物品:水晶碎片 — 散落的光源与线索 | |
| 情绪:希望、期待 | |
| 总结:梦见在水晶城市中寻找碎片""" | |
| result = _parse_text_format(text) | |
| assert result is not None | |
| assert len(result["entities"]) == 3 | |
| assert result["entities"][0]["name"] == "水晶城市" | |
| assert result["entities"][0]["type"] == "location" | |
| assert result["entities"][1]["type"] == "npc" | |
| assert "希望" in result["emotions"] | |
| assert "水晶" in result["summary"] | |
| def test_parse_text_format_with_thinking(): | |
| """Test that thinking tags are stripped before parsing.""" | |
| text = """<think> | |
| 一些推理过程... | |
| </think> | |
| 地点:深海图书馆 — 沉没在海底的古老图书馆 | |
| 情绪:神秘 | |
| 总结:探索深海图书馆""" | |
| result = _parse_text_format(text) | |
| assert result is not None | |
| assert len(result["entities"]) == 1 | |
| assert result["entities"][0]["name"] == "深海图书馆" | |
| def test_parse_text_format_no_entities(): | |
| """Test that empty text returns None.""" | |
| result = _parse_text_format("这是一段不相关的文本") | |
| assert result is None | |
| def test_strip_thinking(): | |
| """Test thinking tag removal.""" | |
| text = "<think>推理过程</think>\n实际内容" | |
| assert _strip_thinking(text) == "实际内容" | |
| def test_fallback_extraction_from_dream(): | |
| """Test regex-based fallback entity extraction from dream text.""" | |
| dream = "昨晚梦见自己在一座漂浮的水晶城市中飞翔" | |
| entities = _fallback_entity_extraction("", dream) | |
| assert len(entities) >= 1 | |
| def test_fallback_extraction_no_entities(): | |
| """Test fallback with no recognizable entities.""" | |
| entities = _fallback_entity_extraction("", "I just had a vague dream") | |
| assert isinstance(entities, list) | |
| if __name__ == "__main__": | |
| test_parse_text_format_basic() | |
| test_parse_text_format_with_thinking() | |
| test_parse_text_format_no_entities() | |
| test_strip_thinking() | |
| test_fallback_extraction_from_dream() | |
| test_fallback_extraction_no_entities() | |
| print("All parser tests passed!") | |