def assertSomeTokens(self, input_string, expected_tokens): ''' test the parser with complex stuff which might contain tokens we don't care about. ''' tokens = update_and_get_names(input_string) iter_tokens = iter(tokens) matched_tokens = [] missing_tokens = list(reversed(expected_tokens)) # gonna pop through them try: while not matched_tokens == expected_tokens: token = iter_tokens.next() if token == missing_tokens[-1]: matched_tokens.append(missing_tokens.pop()) except IndexError as e: err = e except StopIteration as e: err = e except ValueError as e: err = e else: return self.fail('Error: %s.\nTokens found: %s\nTokens missing: %s\n' % (repr(err), repr(matched_tokens), repr(missing_tokens)))
def test_comments(self): raise unittest.SkipTest self.assertEqual(update('/*/jugfytgiuh/*/'), [ ('multiline_comment', '/*/jugfytgiuh/*/')]) self.assertEqual(update('/* */'), [ ('multiline_comment', '/* */')]) self.assertEqual(update('/**/'), [ ('multiline_comment', '/**/')]) self.assertEqual(update('/* /* /* * */'), [ ('multiline_comment', '/* /* /* * */')]) self.assertEqual(update('/*/*/*/*/*/*/**/asd'), [ ('multiline_comment', '/*/*/'), ('times_sign', '*'), ('multiline_comment', '/*/*/'), ('times_sign', '*'), ('multiline_comment', '/**/'), ('identifier', 'asd')]) s = ''' // And my aunt slew a dragon! she is // paper ''' self.assertEqual(update_and_get_names(s), [ 'singleline_comment', 'identifier', 'identifier', 'singleline_comment'])
def test_everything(self): self.assertEqual(update('int a=3'), [ ('identifier', 'int'), ('identifier', 'a'), ('equal_sign', '='), ('decimal_number_literal', '3')]) # self.assertEqual(update('int a=031'), [ # ('identifier', 'int'), # ('identifier', 'a'), # ('equal_sign', '='), # ('octal_number_literal', '031')]) self.assertEqual(update_and_get_names( '{}()?;:,!*+/'), [ 'open_brace', 'close_brace', 'open_paren', 'close_paren', 'question_mark', 'semicolon', 'colon', 'comma', 'bang', 'times_sign', 'plus_sign', 'reverse_solidus'])