def test_balance(self): acc = fakeAccount() nEv = duckbill.newEvent assert acc.balance() == 0 acc.events << nEv("charge", posted="1/1/2001", amount=5) assert acc.balance() == 5 assert acc.balance(Date("12/31/2000")) == 0 assert acc.balance(Date("1/1/2001")) == 0 assert acc.balance(Date("1/2/2001")) == 5
def test_whenLastStatementPosted(self): """ This should find the statement with the latest 'posted' time. """ acc = fakeAccount() acc.opened = Date("1/1/2001") assert acc.whenLastStatementPosted() == Date("1/1/2001") assert len(acc.events) == 0 acc.events << duckbill.newEvent("statement", posted="2/1/2001") acc.events << duckbill.newEvent("statement", posted="5/1/2001") acc.events << duckbill.newEvent("statement", posted="3/1/2001") acc.events << duckbill.newEvent("statement", posted="1/1/2001") assert acc.whenLastStatementPosted() == Date("5/1/2001")
def test_eventsBetween(self): acc = fakeAccount() then = Date("1/1/2001") now = Date("5/1/2001") # not really :) # start with nothing. assert len(acc.eventsBetween(then, now)) == 0 # include the front date: acc.events << duckbill.newEvent("payment", posted="1/1/2001") assert len(acc.eventsBetween(then, now)) == 1, "start" # exclude the end date: acc.events << duckbill.newEvent("note", posted="5/1/2001") assert len(acc.eventsBetween(then, now)) == 1, "end" # include the middle: acc.events << duckbill.newEvent("charge", posted="2/1/2001") acc.events << duckbill.newEvent("credit", posted="4/1/2001") l = len(acc.eventsBetween(then, now)) assert l == 3, \ "middle should have 3 events, actually has %d" % l