53 lines
2.5 KiB
Python
53 lines
2.5 KiB
Python
|
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)
|
||
|
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}
|
||
|
|
||
|
|
||
|
def test_simple_markup_parser_1(self):
|
||
|
# Test case with silence
|
||
|
markup_text = "[voice nova] Let's have a moment of silence. [silence 3s] And we're back!"
|
||
|
parser = SimpleMarkupParser(markup_text)
|
||
|
parser.parse()
|
||
|
parsed_output = parser.get_output()
|
||
|
|
||
|
assert len(parsed_output) == 4
|
||
|
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!"}
|
||
|
|
||
|
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
|
||
|
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.'}
|
||
|
|