1# -*- coding: utf-8 -*- 2 3import unittest 4 5import dotdot 6import fixtures 7import str_fixtures 8from pubs.paper import Paper 9from pubs.endecoder import EnDecoder 10 11 12class TestAttributes(unittest.TestCase): 13 14 def setUp(self): 15 self.p = Paper.from_bibentry( 16 fixtures.page_bibentry, 17 metadata=fixtures.page_metadata).deepcopy() 18 19 def test_tags(self): 20 self.assertEqual(self.p.tags, set(['search', 'network'])) 21 22 def test_add_tag(self): 23 self.p.add_tag('algorithm') 24 self.assertEqual(self.p.tags, set(['search', 'network', 'algorithm'])) 25 self.p.add_tag('algorithm') 26 self.assertEqual(self.p.tags, set(['search', 'network', 'algorithm'])) 27 28 def test_set_tags(self): 29 self.p.tags = ['algorithm'] 30 self.assertEqual(self.p.tags, set(['algorithm'])) 31 32 def test_remove_tags(self): 33 self.p.remove_tag('network') 34 self.assertEqual(self.p.tags, set(['search'])) 35 36 def test_mixed_tags(self): 37 self.p.add_tag('algorithm') 38 self.assertEqual(self.p.tags, set(['search', 'network', 'algorithm'])) 39 self.p.remove_tag('network') 40 self.assertEqual(self.p.tags, set(['search', 'algorithm'])) 41 self.p.tags = ['ranking'] 42 self.assertEqual(self.p.tags, set(['ranking'])) 43 self.p.remove_tag('ranking') 44 self.assertEqual(self.p.tags, set()) 45 self.p.remove_tag('ranking') 46 47 def test_fails_with_empty_citekey(self): 48 with self.assertRaises(ValueError): 49 Paper(" ", fixtures.doe_bibdata) 50 51 52class TestPaperUnicodeBibdata(unittest.TestCase): 53 54 def test_no_latex(self): 55 p = Paper.from_bibentry(fixtures.page_bibentry, 56 metadata=fixtures.page_metadata).deepcopy() 57 self.assertEqual(p.bibdata, p.get_unicode_bibdata()) 58 59 def test_latex_converted(self): 60 bib = EnDecoder().decode_bibdata(str_fixtures.bibtex_with_latex) 61 p = Paper.from_bibentry(bib) 62 ubib = p.get_unicode_bibdata() 63 self.assertEqual(ubib['author'][0], u"Kjær, Kurt H") 64 self.assertEqual(ubib['author'][3], u"Bjørk, Anders A") 65 66 67if __name__ == '__main__': 68 unittest.main() 69