Esempio n. 1
0
    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")
Esempio n. 2
0
    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")
Esempio n. 3
0
    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()
Esempio n. 4
0
    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()
Esempio n. 5
0
    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, [])