예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
    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
예제 #4
0
    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
예제 #5
0
    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
예제 #6
0
    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
예제 #7
0
    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
예제 #8
0
    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
예제 #9
0
    def test_add_legacy_nocalculate(self, mock):
        le = SLedger(0)
        t = STransaction(mockuser(0), 0)
        le.add(t)

        assert mock.call_count == 0
예제 #10
0
    def test_add_legacy_callscalculate(self, mock):
        le = SLedger(0)
        t = STransaction(mockuser(0), 0)
        le.add(t)

        mock.assert_called_once_with()
예제 #11
0
 def test_recalculate_empty(self):
     le = SLedger(0)
     assert le.recalculate() == 0.12