2024-04-25 13:13:59 +00:00
|
|
|
from unittest import TestCase
|
|
|
|
|
|
|
|
from main import SimpleMarkupParser
|
|
|
|
|
|
|
|
|
|
|
|
class Test(TestCase):
|
|
|
|
def test_simple_markup_parser_0(self):
|
|
|
|
# Test case with sections
|
|
|
|
markup_text = "[section 1] [voice alloy] Hello, this is section 1. [end_section] [voice nova] Now we're outside the section. [insert_section 1]"
|
|
|
|
parser = SimpleMarkupParser(markup_text)
|
|
|
|
parser.parse()
|
|
|
|
parsed_output = parser.get_output()
|
|
|
|
|
|
|
|
assert len(parsed_output) == 7, "Expected 7 tokens, got %d" % len(parsed_output)
|
2024-04-25 13:32:07 +00:00
|
|
|
assert parsed_output[0] == {"type": "section_start", "section_id": 1}
|
|
|
|
assert parsed_output[1] == {"type": "voice", "voice": "alloy"}
|
|
|
|
assert parsed_output[2] == {"type": "text", "text": "Hello, this is section 1."}
|
|
|
|
assert parsed_output[3] == {"type": "section_end"}
|
|
|
|
assert parsed_output[4] == {"type": "voice", "voice": "nova"}
|
|
|
|
assert parsed_output[5] == {
|
|
|
|
"type": "text",
|
|
|
|
"text": "Now we're outside the section.",
|
|
|
|
}
|
|
|
|
assert parsed_output[6] == {"type": "insert_section", "section_id": 1}
|
2024-04-25 13:13:59 +00:00
|
|
|
|
|
|
|
def test_simple_markup_parser_1(self):
|
|
|
|
# Test case with silence
|
2024-04-25 13:32:07 +00:00
|
|
|
markup_text = (
|
|
|
|
"[voice nova] Let's have a moment of silence. [silence 3s] And we're back!"
|
|
|
|
)
|
2024-04-25 13:13:59 +00:00
|
|
|
parser = SimpleMarkupParser(markup_text)
|
|
|
|
parser.parse()
|
|
|
|
parsed_output = parser.get_output()
|
|
|
|
|
|
|
|
assert len(parsed_output) == 4
|
2024-04-25 13:32:07 +00:00
|
|
|
assert parsed_output[0] == {"type": "voice", "voice": "nova"}
|
|
|
|
assert parsed_output[1] == {
|
|
|
|
"type": "text",
|
|
|
|
"text": "Let's have a moment of silence.",
|
|
|
|
}
|
|
|
|
assert parsed_output[2] == {"type": "silence", "duration": 3000}
|
|
|
|
assert parsed_output[3] == {"type": "text", "text": "And we're back!"}
|
2024-04-25 13:13:59 +00:00
|
|
|
|
|
|
|
def test_simple_markup_parser_2(self):
|
|
|
|
# Test case with unknown markup
|
|
|
|
markup_text = "[voice fable] Hello! [unknown_markup] This is an unknown markup. [voice nova] Back to a known voice."
|
|
|
|
parser = SimpleMarkupParser(markup_text)
|
|
|
|
parser.parse()
|
|
|
|
parsed_output = parser.get_output()
|
|
|
|
|
|
|
|
assert len(parsed_output) == 6
|
2024-04-25 13:32:07 +00:00
|
|
|
assert parsed_output[0] == {"type": "voice", "voice": "fable"}
|
|
|
|
assert parsed_output[1] == {"type": "text", "text": "Hello!"}
|
|
|
|
assert parsed_output[2] == {"type": "none", "text": "[unknown_markup]"}
|
|
|
|
assert parsed_output[3] == {
|
|
|
|
"type": "text",
|
|
|
|
"text": "This is an unknown markup.",
|
|
|
|
}
|
|
|
|
assert parsed_output[4] == {"type": "voice", "voice": "nova"}
|
|
|
|
assert parsed_output[5] == {"type": "text", "text": "Back to a known voice."}
|