def test_check_sanity(self): t = PrefTree() t['abc'] = PrefTree() t['aa'] = PrefTree() self.assertFalse(t.check_sanity()) t = PrefTree(url_count=-1) self.assertFalse(t.check_sanity()) t = PrefTree() t['abc'] = PrefTree() t.is_wildcard = True self.assertFalse(t.check_sanity()) t2 = PrefTree() t2['def'] = t self.assertFalse(t2.check_sanity())
def test_wildcard(self): t = PrefTree() t.add_url('arxiv.org/pdf/', True) t['arxiv.org/pdf/'].is_wildcard = True self.assertTrue(t.check_sanity()) self.assertTrue(t.has_wildcard()) self.assertEqual(t.match('arxiv.org/pdf/1410.1454v2'), (1,1)) t.add_url('arxiv.org/pdf/1412.8548v1', True) self.assertEqual(t.match('arxiv.org/pdf/1410.1454v2'), (2,2)) t.print_as_tree() self.assertEqual(len(t.urls()), 1)
def test_create(self): t = PrefTree() urls = ['aaba','cadb','abdc','abcd','afgh','abec'] for u in urls: t.add_url(u) self.assertTrue(t.check_sanity()) self.assertFalse(t.has_wildcard()) t.print_as_tree() self.assertEqual(sorted([flatten(u) for u, c, s in t.urls()]), sorted(urls)) for u in urls: self.assertEqual(t.match(u), (1,0)) self.assertEqual(t.match('bac'), (0,0))
def test_prune_with_reverse(self): t = PrefTree() for url, success in [ ('researchgate.net/publication/233865122_uriset', False), ('researchgate.net/publication/143874230_albtedru', False), ('researchgate.net/publication/320748374_kelbcad', False), ('researchgate.net/publication/233865122_uriset.pdf', True), ('researchgate.net/publication/143874230_albtedru.pdf', True), ('researchgate.net/publication/320748374_kelbcad.pdf', True), ('onlinelibrary.wiley.com/wol1/doi/10.1002/anie.200800037.abstract', False), ('onlinelibrary.wiley.com/wol1/doi/10.1002/anie.200800037.pdf', False)]: t.add_url(url, success) t.print_as_tree() t, pruned = t.prune(reverse=True) t.print_as_tree() self.assertTrue(t.check_sanity()) for u, c, s in t.urls(): print flatten(u), c, s
def test_empty(self): t = PrefTree() self.assertTrue(t.check_sanity())