def until(csv_lines, dtend, dtstart=None): def result_key(ti): return (ti.date, ti.name) return sorted((TransactionItem(*x) for si in schedule_parser_gen(csv_lines) for x in si.until(dtend, dtstart=dtstart)), key=result_key) gen = schedule_parser_gen(csv_lines) gen = (si.until(dtend, dtstart=dtstart) for si in gen) gen = itertools.chain(*gen) gen = (TransactionItem(*x) for x in gen) return sorted(gen, key=result_key)
def test_comment(self): fixture = [u"# This is a comment", u" # This is one as well", u"", u" ", u"Name1, 20.10, 04/13/2010, # Comment"] result = list(budget.schedule_parser_gen(fixture)) expect = [budget.ScheduleItem(u"Name1", 20.10, datetime(2010,4,13), u"")] self.assertEqual(expect, result)
def test_valid_line(self): fixture = [u"Name1, 20.10, 04/13/2010, ", u"Name2, 21.01, 04/14/2010, 2w",] result = list(budget.schedule_parser_gen(fixture)) expect = [budget.ScheduleItem(u"Name1", 20.10, datetime(2010,4,13), u""), budget.ScheduleItem(u"Name2", 21.01, datetime(2010,4,14), u"2w"),] result = map(lambda x,y: cmp(x,y) == 0, result, expect) self.assertTrue(all(result), result)