1 from unittest import TestCase
2 from bluechips.tests import *
3 from bluechips import model
4 from bluechips.model import meta
5 from webhelpers.number import standard_deviation as std_dev
7 class TestSplitRandom(TestCase):
13 def tearDownClass(cls):
22 def test_splitTotal(self):
23 for e in meta.Session.query(model.Expenditure):
24 self.assertEqual(sum(s.share for s in e.splits), e.amount)
26 def test_splitDistribution(self):
27 user_count = meta.Session.query(model.User).count()
28 for e in meta.Session.query(model.Expenditure):
29 even_total = (e.amount / user_count) * user_count
30 difference = abs(even_total - e.amount)
31 self.assert_(std_dev(list(int(s.share) for s in e.splits)) <= difference, \
32 "Expenditure doesn't appear to be evenly distributed")