def test_build_equality_testcase(self):
        DummyTestCase = build_equality_testcase('DummyTestCase', int, [
            ('str_to_int_pass', '1', 1),
            ('str_to_int_fail', '2', 1),
            ('str_to_int_exception', 'z', 1),
        ])
        DummyTestCase.runTest = run
        testcase = DummyTestCase()
        testcase.test_str_to_int_pass()

        with self.assertRaises(AssertionError):
            testcase.test_str_to_int_fail()

        with self.assertRaises(ValueError):
            testcase.test_str_to_int_exception()
 def test_build_equality_testcase_flag_dupe_labels(self):
     with self.assertRaises(ValueError):
         build_equality_testcase('DummyTestCase', int, [
             ('str_to_int_dupe', '1', 1),
             ('str_to_int_dupe', '2', 2),
         ])
    def test_extra_ending_braces(self):
        lexer = Lexer()
        lexer.input('\n\n())))')
        with self.assertRaises(ECMASyntaxError) as e:
            [token for token in lexer]
        self.assertEqual(str(e.exception), "Mismatched ')' at 3:3")


LexerKeywordTestCase = build_equality_testcase(
    'LexerKeywordTestCase',
    partial(run_lexer, lexer_cls=Lexer),
    (
        (
            label,
            data[0],
            data[1],
        ) for label, data in [(
            # Keywords
            # ('break case ...', ['BREAK break', 'CASE case', ...])
            'keywords_all',
            (' '.join(kw.lower() for kw in Lexer.keywords),
             ['%s %s' % (kw, kw.lower()) for kw in Lexer.keywords]),
        )]))

LexerTestCase = build_equality_testcase('LexerTestCase',
                                        partial(run_lexer, lexer_cls=Lexer), ((
                                            label,
                                            data[0],
                                            data[1],
                                        ) for label, data in es5_cases))