def setUp(self): self.t = Template() self.tree = Template() a, b, c, d, e, f, g = self.get_some_facts() self.tree.add_fact(*a) self.tree.add_fact(*b, parent=a) self.tree.add_fact(*c, parent=a) self.tree.add_fact(*d, parent=a) self.tree.add_fact(*e, parent=c) self.tree.add_fact(*f, parent=c) self.tree.add_fact(*g)
import datetime class Company(object): cik = '0000843006' url = 'http://issuerdirect.com/' ticker = 'isdr' c1 = make_context(datetime.date(2009, 12, 31)) u1 = Unit('USD', 'iso4217:USD') u2 = Unit('Shares', 'xbrli:shares') f1 = Fact(label='AssetsCurrent', namespace='isdr') f2 = Fact(label='OtherAssetsCurrent', namespace='isdr') f3 = Fact(with_calc=[(f1, 1), (f2, 1)], label='Assets', namespace='isdr') t = Template() t.add_context(c1) t.add_fact(f1, u1, parent=(f3, u1)) t.add_fact(f2, u1, parent=(f3, u1)) t.add_fact(f3, u1) c = Chart(with_template=t, title='DocumentSomethingOrOther') c[(f1, u1), c1] = 323555 c[(f2, u1), c1] = 19201 c[(f3, u1), c1] = 465005 f = Filing(with_charts=[c], with_company=Company) s = Serializer(f) print s.serialize('Presentation', formatter=lxml_to_text)
class TemplateTest(TestCase): def setUp(self): self.t = Template() self.tree = Template() a, b, c, d, e, f, g = self.get_some_facts() self.tree.add_fact(*a) self.tree.add_fact(*b, parent=a) self.tree.add_fact(*c, parent=a) self.tree.add_fact(*d, parent=a) self.tree.add_fact(*e, parent=c) self.tree.add_fact(*f, parent=c) self.tree.add_fact(*g) def get_some_facts(self, cache={}): if len(cache): return (item for _, item in sorted(cache.items())) cache['a'] = m('facta', Fact), m('unita', Unit) cache['b'] = m('factb', Fact), m('unitb', Unit) cache['c'] = m('factc', Fact), m('unitc', Unit) cache['d'] = m('factd', Fact), m('unitd', Unit) cache['e'] = m('facte', Fact), m('unite', Unit) cache['f'] = m('factf', Fact), m('unitf', Unit) cache['g'] = m('factg', Fact), m('unitg', Unit) return self.get_some_facts() def test_context_methods(self): context = m('context', Context) context2 = m('context2', Context) self.assertEqual(self.t.contexts, []) self.t.add_context(context) self.assertEqual(self.t.contexts, [context]) self.t.del_context(context) self.assertEqual(self.t.contexts, []) self.t.insert_context(0, context) self.t.insert_context(0, context2) self.assertEqual(self.t.contexts, [context2, context]) self.t.del_context(0) self.assertEqual(self.t.contexts, [context]) def test_fact_methods(self): fact, unit = m('fact', Fact), m('unit', Unit) self.assertEqual(self.t.facts, []) self.assertEqual(self.t.units, []) self.t.add_fact(fact, unit) self.assertEqual(self.t.facts, [fact]) self.assertEqual(self.t.units, [unit]) self.t.del_fact(fact, unit) self.assertEqual(self.t.facts, []) self.assertEqual(self.t.units, []) def test_find_parent(self): a = m('facta', Fact), m('unita', Unit) b = m('factb', Fact), m('unitb', Unit) self.t.add_fact(*a) self.t.add_fact(*b, parent=a) self.assertEqual(a, self.t.find_parent(b)) self.assertEqual(None, self.t.find_parent(a)) def test_tree_operations(self): # Bunch of fact/unit combos a, b, c, d, e, f, g = self.get_some_facts() self.assertEqual({ None: [a, g], a: [b, c, d], c: [e, f] }, self.tree.tree) self.tree.del_fact(*c) self.assertEqual({None: [a, g], a: [b, d, e, f]}, self.tree.tree) self.tree.set_parent(*e, parent=None, idx=1) self.assertEqual({None: [a, e, g], a: [b, d, f]}, self.tree.tree) def test_walk_tree(self): # Bunch of fact/unit combos a, b, c, d, e, f, g = self.get_some_facts() self.assertEqual( set([ (None, a), (None, g), (a, b), (a, c), (a, d), (c, e), (c, f), ]), set(self.tree.walk_tree())) def test_ordered_yield(self): a, b, c, d, e, f, g = self.get_some_facts() self.assertEqual(list(self.tree.ordered_yield()), [a, b, c, e, f, d, g]) def test_get_index(self): a, b, c, d, e, f, g = self.get_some_facts() self.assertEqual(self.tree.get_index(d), 5) def test_insert_fact(self): a, b, c, d, e, f, g = self.get_some_facts() h = m('facth', Fact), m('unith', Unit) self.tree.insert_fact(1, *h) self.assertEqual(list(self.tree.ordered_yield()), [a, b, c, e, f, d, h, g])