import unittest from datetime import datetime as dt from odml import Property, Section, Document longago = dt.strptime('2013-08-11 09:48:49', "%Y-%m-%d %H:%M:%S") recently = dt.strptime('2014-02-25 14:42:13', "%Y-%m-%d %H:%M:%S") class TestValidation(unittest.TestCase): def setUp(self): """ doc --
--
\ --
--
""" doc = Document("author") foo = Section("foo", "footype") doc.append(foo) foo.append(Property("strprop", "somestring")) foo.append(Property("txtprop", "some\ntext")) subfoo = Section("subfoo", "footype") foo.append(subfoo) subfoo.append(Property("strprop", "somestring")) subfoo.append(Property("txtprop", "some\ntext")) bar = Section("bar", "bartype") foo.append(bar) bar.append(Property("strprop", "otherstring")) bar.append(Property("txtprop", "other\ntext")) subbar = Section("subbar", "bartype") bar.append(subbar) subbar.append(Property("strprop", "otherstring")) subbar.append(Property("txtprop", "other\ntext")) self.doc = doc def test_itersections(self): sec_all = self.doc.itersections() assert(len([s for s in sec_all]) == 4) filter_func = lambda x: getattr(x, 'name') == "foo" sec_filt = self.doc.itersections(filter_func=filter_func) assert(len([s for s in sec_filt]) == 1) filter_func = lambda x: getattr(x, 'type').find("bar") > -1 sec_filt = self.doc.itersections(filter_func=filter_func) assert(len([s for s in sec_filt]) == 2) sec_filt = self.doc.itersections(max_depth=2) assert(len([s for s in sec_filt]) == 3) sec_filt = self.doc.itersections(max_depth=1) assert(len([s for s in sec_filt]) == 1) sec_filt = self.doc.itersections(max_depth=0) assert(len([s for s in sec_filt]) == 0) def test_iterproperties(self): prop_all = self.doc.iterproperties() assert(len([p for p in prop_all]) == 8) filter_func = lambda x: getattr(x, 'name').find("strprop") > -1 prop_filt = self.doc.iterproperties(filter_func=filter_func) assert(len([p for p in prop_filt]) == 4) prop_filt = self.doc.iterproperties(filter_func=filter_func, max_depth=2) assert(len([p for p in prop_filt]) == 3) prop_filt = self.doc.iterproperties(filter_func=filter_func, max_depth=1) assert(len([p for p in prop_filt]) == 1) def test_itervalues(self): val_all = self.doc.itervalues() assert(len([v for v in val_all]) == 8) filter_func = lambda x: str(getattr(x, 'data')).find("text") > -1 val_filt = self.doc.itervalues(filter_func=filter_func) assert(len([v for v in val_filt]) == 4) val_filt = self.doc.itervalues(filter_func=filter_func, max_depth=2) assert(len([v for v in val_filt]) == 3) val_filt = self.doc.itervalues(filter_func=filter_func, max_depth=1) assert(len([v for v in val_filt]) == 1) if __name__ == '__main__': unittest.main()