def test_negative_K(self): a = -1.0 b = 1.0 K = -1.0 # -- Should raise an OverflowError because the value -1.0 cannot be converted to unsigned int. with self.assertRaises(OverflowError): sh.Partition(a, b, K)
def test_refining_the_empty_partition(self): a = 1.0 b = -1.0 K = 3 p = sh.Partition(a, b, K) self.assertEqual(len(p.x), 0) p.refine() self.assertEqual(len(p.x), 0)
def test_refining_a_singleton(self): a = 1.0 b = 1.0 K = 0 p = sh.Partition(a, b, K) # print(p) self.assertEqual(len(p.x), 1) p.refine() self.assertEqual(len(p.x), 1)
def test_coarsening_a_two_point_partition(self): a = -1.0 b = 1.0 K = 0 p = sh.Partition(a, b, K) # print(p) self.assertEqual(len(p.x), 2) p.coarsen() self.assertEqual(len(p.x), 2)
def test_number_of_points_of_refinement(self): a = -abs(random.random()) b = abs(random.random()) K = abs(random.randint(0, 15)) p = sh.Partition(a, b, K) self.assertEqual(p.K, K) self.assertEqual(p.N, 2**K) p.refine() self.assertEqual(p.K, K + 1) self.assertEqual(p.N, 2**(K + 1))
def test_zero_K(self): a = -abs(random.random()) b = abs(random.random()) K = 0.0 p = sh.Partition(a, b, K) # print(f'\n\n{p}\n\n') # print(p.x[0] - a) self.assertEqual(len(p.x), 2) self.assertLessEqual(abs(p.x[0] - a), 1e-12) self.assertLessEqual(abs(p.x[1] - b), 1e-12)
def test_successive_refinement_and_coarsening(self): a = -abs(random.random()) b = abs(random.random()) K = abs(random.randint(0, 15)) p = sh.Partition(a, b, K) x_old = [_ for _ in p.x] self.assertEqual(2**K + 1, len(p.x)) p.refine() self.assertEqual(2**(K + 1) + 1, len(p.x)) p.coarsen() self.assertEqual(2**K + 1, len(p.x)) x_new = [_ for _ in p.x] for old, new in zip(x_old, x_new): self.assertEqual(old, new)
def test_unbounded_interval_02(self): a = -abs(random.random()) b = np.inf K = abs(random.randint(0, 15)) with self.assertRaises(NotImplementedError, msg=f'[{a}, {b}]'): p = sh.Partition(a, b, K)
def test_b_less_than_a(self): a = 0.0 b = -1.0 K = 1.0 P = sh.Partition(a, b, K) self.assertEqual(len(P.x), 0)
def test_equal_end_points(self): a = 0.0 b = 0.0 K = 1.0 P = sh.Partition(a, b, K) self.assertEqual(len(P.x), 1)
def test_default_constructor(self): p = sh.Partition() # print(f'\n\n{p}\n\n') self.assertEqual(len(p.x), 0)
def test_unbounded_interval_06(self): a = np.inf b = -np.inf K = abs(random.randint(0, 15)) p = sh.Partition(a, b, K) self.assertEqual(len(p.x), 0, msg=f'[{a}, {b}]')