def test_GIVEN_two_characters_on_stage_WHEN_get_character_by_name_THEN_can_get_that_character( self): tokens = [Token(TokenTypes.Name, "C"), Token(TokenTypes.Eof)] parser = Parser(t for t in tokens) parser.onstage = ["A", "B"] parser.speaking = "A" self.assertEqual(parser.character_name(), "C")
def test_GIVEN_two_characters_on_stage_WHEN_one_speaking_THEN_2nd_person_pronoun_gets_not_speaking_character( self): tokens = [Token(TokenTypes.SecondPronoun), Token(TokenTypes.Eof)] parser = Parser(t for t in tokens) parser.onstage = ["A", "B"] parser.speaking = "A" self.assertEqual(parser.character_name(), "B")
def test_GIVEN_nonsense_token_WHEN_get_character_by_name_THEN_parse_error( self): tokens = [Token(TokenTypes.Numeral), Token(TokenTypes.Eof)] parser = Parser(t for t in tokens) parser.onstage = ["A", "B"] parser.speaking = "A" with self.assertRaises(SPLSyntaxError): parser.character_name()
def test_GIVEN_a_character_on_stage_WHEN_that_character_leaves_THEN_no_parse_error( self): tokens = [ Token(TokenTypes.OpenSqBracket), Token(TokenTypes.Exit), Token(TokenTypes.Name, "A"), Token(TokenTypes.CloseSqBracket), Token(TokenTypes.Eof), ] parser = Parser(t for t in tokens) parser.onstage = ["A"] parser.stagecontrol()
def test_GIVEN_many_characters_on_stage_WHEN_exeunt_THEN_noone_left_on_stage( self): tokens = [ Token(TokenTypes.OpenSqBracket), Token(TokenTypes.Exeunt), Token(TokenTypes.CloseSqBracket), Token(TokenTypes.Eof), ] parser = Parser(t for t in tokens) parser.onstage = ["A", "B", "C", "D"] parser.stagecontrol() self.assertEqual(parser.onstage, [])