class TestNextNum(unittest2.TestCase):

    def setUp(self):
        values = [(-1, 0.01), (0, 0.3), (1, 0.58), (2, 0.1), (3, 0.01)]
        self.random_generator = RandomGen(values)

    def assertListAlmostEqual(self, a, b):
        for a, b in zip(a, b):
            self.assertAlmostEqual(a, b)

    def test_create_cdf_bad_probabilities(self):
        values = [0.2]
        with self.assertRaises(InvalidProbabilityTotalException):
            create_cdf(values)

    def test_create_cdf(self):
        values = [0.01, 0.3, 0.58, 0.1, 0.01]
        self.assertListAlmostEqual(create_cdf(values), [0.01, 0.31, 0.89, 0.99, 1])

    @mock.patch('next_num.next_num.random_point', return_value=0.2)
    def test_next_num(self, _):
        self.assertEqual(0, self.random_generator.next_num())

    @mock.patch('next_num.next_num.random_point', return_value=0.34)
    def test_next_num2(self, _):
        self.assertEqual(1, self.random_generator.next_num())

    @mock.patch('next_num.next_num.random_point', return_value=0.001)
    def test_next_num3(self, _):
        self.assertEqual(-1, self.random_generator.next_num())
 def setUp(self):
     values = [(-1, 0.01), (0, 0.3), (1, 0.58), (2, 0.1), (3, 0.01)]
     self.random_generator = RandomGen(values)