darkmedia-x-api / engine /tests /test_extraction.py
cybermedia's picture
Upload folder using huggingface_hub
343eed9 verified
import unittest
import sys
from pathlib import Path
# Add project root to path
ROOT_DIR = Path(__file__).resolve().parent.parent.parent
sys.path.append(str(ROOT_DIR))
from engine.utils.story_parser import extract_scene_data
class TestStoryExtraction(unittest.TestCase):
def test_standard_format(self):
content = """
## Scene 1 : L'Ombre
**Prompt d'image :** Une silhouette noire dans le brouillard.
**Narration :** L'ombre approchait sans un bruit.
**Texte à l'écran :** CHAPITRE 1
"""
story_file = Path("engine/tests/temp_test.md")
story_file.write_text(content, encoding="utf-8")
try:
scenes = extract_scene_data(str(story_file))
self.assertEqual(len(scenes), 1)
self.assertEqual(scenes[0]["prompt"], "Une silhouette noire dans le brouillard.")
self.assertEqual(scenes[0]["narration"], "L'ombre approchait sans un bruit.")
self.assertEqual(scenes[0]["text_overlay"], "CHAPITRE 1")
finally:
if story_file.exists(): story_file.unlink()
def test_variations_and_markdown(self):
content = """
## Scene 1 : Test
- **Visual Prompt** : cinematic view of a castle
- **Narration** : "Once upon a time."
- Texte : TITLE
## Scene 2 : Second
**Visuel** : a knight in armor
Narration : he was brave.
"""
story_file = Path("engine/tests/temp_test_var.md")
story_file.write_text(content, encoding="utf-8")
try:
scenes = extract_scene_data(str(story_file))
self.assertEqual(len(scenes), 2)
self.assertEqual(scenes[0]["prompt"], "cinematic view of a castle")
self.assertEqual(scenes[0]["narration"], "Once upon a time.")
self.assertEqual(scenes[0]["text_overlay"], "TITLE")
self.assertEqual(scenes[1]["prompt"], "a knight in armor")
self.assertEqual(scenes[1]["narration"], "he was brave.")
finally:
if story_file.exists(): story_file.unlink()
def test_multiline_narration(self):
content = """
## Scene 1
**Narration :**
Ceci est une narration
sur plusieurs lignes
pour tester la robustesse.
**Visual Prompt :** Un champ de fleurs.
"""
story_file = Path("engine/tests/temp_test_multi.md")
story_file.write_text(content, encoding="utf-8")
try:
scenes = extract_scene_data(str(story_file))
self.assertEqual(len(scenes), 1)
self.assertIn("Ceci est une narration", scenes[0]["narration"])
self.assertIn("plusieurs lignes", scenes[0]["narration"])
self.assertEqual(scenes[0]["prompt"], "Un champ de fleurs.")
finally:
if story_file.exists(): story_file.unlink()
if __name__ == "__main__":
unittest.main()