def test_scalar_max_months(self): (state1, mons1) = dcs.dist_enum_and_mons(self.num, self.distribution, self.prng, max_months=1) (state2, mons2) = dcs.dist_enum_and_mons(self.num, self.distribution, self.prng, max_months=3) np.testing.assert_array_equal(set(state1), {1, 2, 3, 4}) np.testing.assert_array_equal(set(state2), {1, 2, 3, 4}) np.testing.assert_array_equal(set(mons1), {1}) np.testing.assert_array_equal(set(mons2), {1, 2, 3})
def test_different_start_num(self): (state1, mons1) = dcs.dist_enum_and_mons(self.num, self.distribution, self.prng, max_months=self.max_months) (state2, mons2) = dcs.dist_enum_and_mons(self.num, self.distribution, self.prng, max_months=self.max_months, start_num=101) np.testing.assert_array_equal(set(state1), {1, 2, 3, 4}) np.testing.assert_array_equal(set(state2), {101, 102, 103, 104}) np.testing.assert_array_equal(set(mons1), {1}) np.testing.assert_array_equal(set(mons2), {1})
def test_calling(self): (state, mons) = dcs.dist_enum_and_mons(self.num, self.distribution, self.prng, max_months=self.max_months) breakout = np.histogram(state, bins = [0.5, 1.5, 2.5, 3.5, 4.5])[0] breakout_per = breakout / self.num for ix in range(len(self.distribution)): self.assertTrue(np.abs(breakout_per[ix] - self.distribution[ix]) <= self.per_lim) self.assertTrue(np.all(mons <= self.max_months[state-1]) and np.all(mons >= 1))
def test_zero_num(self): self.num = 0 (state, mons) = dcs.dist_enum_and_mons(self.num, self.distribution, self.prng, max_months=self.max_months) self.assertTrue(len(state) == 0) self.assertTrue(len(mons) == 0)
def test_single_num(self): self.num = 1 (state, mons) = dcs.dist_enum_and_mons(self.num, self.distribution, self.prng, max_months=self.max_months) self.assertIn(state[0], {1, 2, 3, 4}) self.assertTrue(mons[0] <= max(self.max_months))
def test_max_months_is_none(self): (state, mons) = dcs.dist_enum_and_mons(self.num, self.distribution, self.prng) np.testing.assert_array_equal(set(state), {1, 2, 3, 4}) self.assertTrue(mons is None)
def test_all_in_one_bin(self): for i in range(4): temp = np.zeros(4) temp[i] = 1 (tb_state, _) = dcs.dist_enum_and_mons(self.num, temp, self.prng, max_months=self.max_months) self.assertTrue(np.all(tb_state == i+1))