]> gitweb.michael.orlitzky.com - dead/census-tools.git/blobdiff - src/Tests/Unit/UniformDistributionTest.py
Added the (Uniform)DistributionTest modules.
[dead/census-tools.git] / src / Tests / Unit / UniformDistributionTest.py
diff --git a/src/Tests/Unit/UniformDistributionTest.py b/src/Tests/Unit/UniformDistributionTest.py
new file mode 100644 (file)
index 0000000..d69d643
--- /dev/null
@@ -0,0 +1,55 @@
+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