import unittest import probability.Distribution class UniformDistributionTest(unittest.TestCase): def testBoundsOrdered(self): """ The constructor for Uniform() takes two numbers, 'a' and 'b' which provide the upper and lower bounds for the distribution. The constructor should place the lesser of the two in self.min, and the greater in self.max. """ ud = probability.Distribution.Uniform(0,0) self.assertTrue(ud.min == 0) self.assertTrue(ud.max == 0) ud = probability.Distribution.Uniform(0,10) self.assertTrue(ud.min == 0) self.assertTrue(ud.max == 10) ud = probability.Distribution.Uniform(0.558, 0.23) self.assertTrue(ud.min == 0.23) self.assertTrue(ud.max == 0.558) def testSampledValuesWithinBounds(self): """ Sample the distribution a few times, and make sure the values we get are within the (min,max) we supplied. """ ud = probability.Distribution.Uniform(0.558, 0.23) for x in range(0,1000): s = ud.sample() self.assertTrue(s >= ud.min) self.assertTrue(s <= ud.max) def testKnownCdfValues(self): """ The CDF of a uniform distribution is easy to calculate. Check a few known values. """ ud = probability.Distribution.Uniform(0, 1) delta = 0.1 for i in range(0,11): x = i*delta self.assertEqual(x, ud.cdf(x)) def suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(UniformDistributionTest)) return suite