def test_eat_identifier(self): def is_valid_id(candidate): result = HyperParser._eat_identifier(candidate, 0, len(candidate)) if result == len(candidate): return True elif result == 0: return False else: err_msg = "Unexpected result: {} (expected 0 or {}".format( result, len(candidate)) raise Exception(err_msg) # invalid first character which is valid elsewhere in an identifier self.assertFalse(is_valid_id('2notid')) # ASCII-only valid identifiers self.assertTrue(is_valid_id('valid_id')) self.assertTrue(is_valid_id('_valid_id')) self.assertTrue(is_valid_id('valid_id_')) self.assertTrue(is_valid_id('_2valid_id')) # keywords which should be "eaten" self.assertTrue(is_valid_id('True')) self.assertTrue(is_valid_id('False')) self.assertTrue(is_valid_id('None')) # keywords which should not be "eaten" self.assertFalse(is_valid_id('for')) self.assertFalse(is_valid_id('import')) self.assertFalse(is_valid_id('return')) # valid unicode identifiers self.assertTrue(is_valid_id('cliche')) self.assertTrue(is_valid_id('cliché')) self.assertTrue(is_valid_id('a٢')) # invalid unicode identifiers self.assertFalse(is_valid_id('2a')) self.assertFalse(is_valid_id('٢a')) self.assertFalse(is_valid_id('a²')) # valid identifier after "punctuation" self.assertEqual(HyperParser._eat_identifier('+ var', 0, 5), len('var')) self.assertEqual(HyperParser._eat_identifier('+var', 0, 4), len('var')) self.assertEqual(HyperParser._eat_identifier('.var', 0, 4), len('var')) # invalid identifiers self.assertFalse(is_valid_id('+')) self.assertFalse(is_valid_id(' ')) self.assertFalse(is_valid_id(':')) self.assertFalse(is_valid_id('?')) self.assertFalse(is_valid_id('^')) self.assertFalse(is_valid_id('\\')) self.assertFalse(is_valid_id('"')) self.assertFalse(is_valid_id('"a string"'))
def test_eat_identifier(self): def is_valid_id(candidate): result = HyperParser._eat_identifier(candidate, 0, len(candidate)) if result == len(candidate): return True elif result == 0: return False else: err_msg = "Unexpected result: {} (expected 0 or {}".format( result, len(candidate) ) raise Exception(err_msg) # invalid first character which is valid elsewhere in an identifier self.assertFalse(is_valid_id('2notid')) # ASCII-only valid identifiers self.assertTrue(is_valid_id('valid_id')) self.assertTrue(is_valid_id('_valid_id')) self.assertTrue(is_valid_id('valid_id_')) self.assertTrue(is_valid_id('_2valid_id')) # keywords which should be "eaten" self.assertTrue(is_valid_id('True')) self.assertTrue(is_valid_id('False')) self.assertTrue(is_valid_id('None')) # keywords which should not be "eaten" self.assertFalse(is_valid_id('for')) self.assertFalse(is_valid_id('import')) self.assertFalse(is_valid_id('return')) # valid unicode identifiers self.assertTrue(is_valid_id('cliche')) self.assertTrue(is_valid_id('cliché')) self.assertTrue(is_valid_id('a٢')) # invalid unicode identifiers self.assertFalse(is_valid_id('2a')) self.assertFalse(is_valid_id('٢a')) self.assertFalse(is_valid_id('a²')) # valid identifier after "punctuation" self.assertEqual(HyperParser._eat_identifier('+ var', 0, 5), len('var')) self.assertEqual(HyperParser._eat_identifier('+var', 0, 4), len('var')) self.assertEqual(HyperParser._eat_identifier('.var', 0, 4), len('var')) # invalid identifiers self.assertFalse(is_valid_id('+')) self.assertFalse(is_valid_id(' ')) self.assertFalse(is_valid_id(':')) self.assertFalse(is_valid_id('?')) self.assertFalse(is_valid_id('^')) self.assertFalse(is_valid_id('\\')) self.assertFalse(is_valid_id('"')) self.assertFalse(is_valid_id('"a string"'))
def test_eat_identifier(self): def is_valid_id(candidate): result = HyperParser._eat_identifier(candidate, 0, len(candidate)) if result == len(candidate): return True elif result == 0: return False else: err_msg = "Unexpected result: {} (expected 0 or {}".format(result, len(candidate)) raise Exception(err_msg) # invalid first character which is valid elsewhere in an identifier self.assertFalse(is_valid_id("2notid")) # ASCII-only valid identifiers self.assertTrue(is_valid_id("valid_id")) self.assertTrue(is_valid_id("_valid_id")) self.assertTrue(is_valid_id("valid_id_")) self.assertTrue(is_valid_id("_2valid_id")) # keywords which should be "eaten" self.assertTrue(is_valid_id("True")) self.assertTrue(is_valid_id("False")) self.assertTrue(is_valid_id("None")) # keywords which should not be "eaten" self.assertFalse(is_valid_id("for")) self.assertFalse(is_valid_id("import")) self.assertFalse(is_valid_id("return")) # valid unicode identifiers self.assertTrue(is_valid_id("cliche")) self.assertTrue(is_valid_id("cliché")) self.assertTrue(is_valid_id("a٢")) # invalid unicode identifiers self.assertFalse(is_valid_id("2a")) self.assertFalse(is_valid_id("٢a")) self.assertFalse(is_valid_id("a²")) # valid identifier after "punctuation" self.assertEqual(HyperParser._eat_identifier("+ var", 0, 5), len("var")) self.assertEqual(HyperParser._eat_identifier("+var", 0, 4), len("var")) self.assertEqual(HyperParser._eat_identifier(".var", 0, 4), len("var")) # invalid identifiers self.assertFalse(is_valid_id("+")) self.assertFalse(is_valid_id(" ")) self.assertFalse(is_valid_id(":")) self.assertFalse(is_valid_id("?")) self.assertFalse(is_valid_id("^")) self.assertFalse(is_valid_id("\\")) self.assertFalse(is_valid_id('"')) self.assertFalse(is_valid_id('"a string"'))
def is_valid_id(candidate): result = HyperParser._eat_identifier(candidate, 0, len(candidate)) if result == len(candidate): return True elif result == 0: return False else: err_msg = "Unexpected result: {} (expected 0 or {}".format(result, len(candidate)) raise Exception(err_msg)
def is_valid_id(candidate): result = HyperParser._eat_identifier(candidate, 0, len(candidate)) if result == len(candidate): return True elif result == 0: return False else: err_msg = "Unexpected result: {} (expected 0 or {}".format( result, len(candidate)) raise Exception(err_msg)
def test_eat_identifier(self): def is_valid_id(candidate): result = HyperParser._eat_identifier(candidate, 0, len(candidate)) if result == len(candidate): return True elif result == 0: return False else: err_msg = 'Unexpected result: {} (expected 0 or {}'.format( result, len(candidate)) raise Exception(err_msg) self.assertFalse(is_valid_id('2notid')) self.assertTrue(is_valid_id('valid_id')) self.assertTrue(is_valid_id('_valid_id')) self.assertTrue(is_valid_id('valid_id_')) self.assertTrue(is_valid_id('_2valid_id')) self.assertTrue(is_valid_id('True')) self.assertTrue(is_valid_id('False')) self.assertTrue(is_valid_id('None')) self.assertFalse(is_valid_id('for')) self.assertFalse(is_valid_id('import')) self.assertFalse(is_valid_id('return')) self.assertTrue(is_valid_id('cliche')) self.assertTrue(is_valid_id('cliché')) self.assertTrue(is_valid_id('a٢')) self.assertFalse(is_valid_id('2a')) self.assertFalse(is_valid_id('٢a')) self.assertFalse(is_valid_id('a²')) self.assertEqual(HyperParser._eat_identifier('+ var', 0, 5), len('var')) self.assertEqual(HyperParser._eat_identifier('+var', 0, 4), len('var')) self.assertEqual(HyperParser._eat_identifier('.var', 0, 4), len('var')) self.assertFalse(is_valid_id('+')) self.assertFalse(is_valid_id(' ')) self.assertFalse(is_valid_id(':')) self.assertFalse(is_valid_id('?')) self.assertFalse(is_valid_id('^')) self.assertFalse(is_valid_id('\\')) self.assertFalse(is_valid_id('"')) self.assertFalse(is_valid_id('"a string"'))