def test_add_transaction_last(self): le = SLedger(0) t0 = STransaction(mockuser(0), 0) t1 = STransaction(mockuser(1), 0) le.add(t0) le.add(t1) assert le.last == t1
def test_recalculate_real(self): def u(i): return mockuser(i, score=(.25, .25)) le = SLedger(0) for x in range(10): le.add(STransaction(u(x), 0)) score = le.recalculate() print(score) assert score - 0.9998785824 < 1e-6
def test_add_transaction_links(self): le = SLedger(0) t0 = STransaction(mockuser(0), 0) t1 = STransaction(mockuser(1), 0) le.add(t0) le.add(t1) assert t1.left == t0 assert t0.right == t1 assert t1.right is None assert t0.left is None
def test_recalculate_propagates(self): def u(i, s): return mockuser(i, s) le = SLedger(0) t0 = STransaction(u(0, (3 / 4, 3 / 4)), 1) t1 = STransaction(u(1, (1 / 4, 1 / 4)), 1) le.add(t0) le.add(t1) le.recalculate() assert le.score - .12 < 1e-10
def test_recalculate_middle(self): le = SLedger(0) t0 = STransaction(mockuser(0), 0) t1 = STransaction(mockuser(1), 0) t2 = STransaction(mockuser(2), 0) le.add(t0) le.add(t1) le.add(t2) le.changed = [1] le.recalculate() assert STransaction.calculate.call_count == 2
def test_update_first_change(self): le = SLedger(0) t0 = STransaction(mockuser(0), 0) t1 = STransaction(mockuser(1), 0) t2 = STransaction(mockuser(2), 0) t1.notify = MagicMock() le.add(t0) le.add(t1) le.add(t2) le.clear_changes() le.update(1) print(le.changed) assert le.first_change == t1
def test_change(self): le = SLedger(0) t0 = STransaction(mockuser(0), 0) t1 = STransaction(mockuser(1), 0) le.add(t0) le.add(t1) le.clear_changes() le._change(0) assert le.first_change == t0
def test_recalculate_beginning(self): le = SLedger(0) t0 = STransaction(mockuser(0), 0) t1 = STransaction(mockuser(1), 0) t2 = STransaction(mockuser(2), 0) le.add(t0) le.add(t1) le.add(t2) le.recalculate() assert STransaction.calculate.call_count == 3
def test_add_legacy_nocalculate(self, mock): le = SLedger(0) t = STransaction(mockuser(0), 0) le.add(t) assert mock.call_count == 0
def test_add_legacy_callscalculate(self, mock): le = SLedger(0) t = STransaction(mockuser(0), 0) le.add(t) mock.assert_called_once_with()
def test_recalculate_empty(self): le = SLedger(0) assert le.recalculate() == 0.12