def test_two_words(self): word = 'trolo !@#$%^&*_-"\';:+={}[]|.,?~`\\lo' self.assertTrue(sexpression_parser.is_start_of_word(word, 0)) self.assertTrue(sexpression_parser.is_end_of_word(word, 5)) self.assertTrue(sexpression_parser.is_start_of_word(word, 6)) for idx in range(1, len(word)): if idx == 6: continue self.assertFalse(sexpression_parser.is_start_of_word(word, idx)) self.assertTrue(sexpression_parser.is_end_of_word(word, len(word))) self.assertEqual(sexpression_parser.end_of_word(word, 0), 5) with self.assertRaises(Exception): sexpression_parser.end_of_word(word, 1) with self.assertRaises(Exception): sexpression_parser.children(word)
def _add_text_sexp(self, sexp: Text): """Add new nodes to the S-expression graph.""" if sexp in self: if self.to_text(to_node_id(sexp)) != sexp: tf.logging.fatal('Fingerprint collision in S-expression graph parser.') return children = sexpression_parser.children(sexp) node_id = to_node_id(sexp) self.children[node_id] = [] self.parents[node_id] = set() self.labels[node_id] = None if children else sexp for c in children: self.add_sexp(c) child_id = to_node_id(c) self.children[node_id].append(child_id) self.parents[child_id].add(node_id)
def test_docstring_example(self): sexp = '(word1 word1 (word1) () (() ()))' children = sexpression_parser.children(sexp) self.assertLen(children, 5) self.assertEqual(children, ['word1', 'word1', '(word1)', '()', '(() ())'])
def test_two_children(self): sexp = '(asdf asdf)' self.assertLen(sexpression_parser.children(sexp), 2)
def test_single_child(self): sexp = '(asdf)' self.assertLen(sexpression_parser.children(sexp), 1)
def test_grand_children(self): sexp = '(asdf1 (asdf2 asdf3))' self.assertLen(sexpression_parser.children(sexp), 2) self.assertLen( sexpression_parser.children(sexpression_parser.children(sexp)[1]), 2)
def test_invalid_sexp(self, string): with self.assertRaises(Exception): sexpression_parser.children(string)