def test_new(self): av = 1 bv = 1 a = Payload(av) self.assertEqual(a.value, av) b = Payload(bv) self.assertEqual(b.value, bv)
def test_minus(self): av = 1 bv = 1 a = Payload(av) b = Payload(bv) a_sub_1 = a - 1 self.assertEqual(a_sub_1.value, av - 1) a_sub_b = a - b self.assertEqual(a_sub_b.value, av - bv)
def test_union_2x_1d2d(self): """Test union 2-way for 1d/2d fibers""" ans = Fiber([0, 2, 4, 6], [('AB', 1, Fiber([0, 2, 3], [2, 4, 5])), ('AB', 3, Fiber([0, 1, 2], [3, 4, 6])), ('AB', 5, Fiber([0, 1, 2, 3], [1, 2, 3, 4])), ('A', 7, Fiber([], []))]) a_m = self.input["a1_m"] b_m = self.input["b2_m"] z_m1 = a_m | b_m z_m2 = Fiber.union(a_m, b_m) for test, z_m in enumerate([z_m1, z_m2]): with self.subTest(test=test): # Check for right answer self.assertEqual(z_m, ans) # Check that payloads are of correct type self.assertIsInstance(z_m[0].payload.value[1], Payload) self.assertIsInstance(z_m[0].payload.value[2], Fiber) self.assertIsInstance(z_m[2].payload.value[1], Payload) self.assertIsInstance(z_m[3].payload.value[2], Fiber) # Check that default was set properly z_m_default = z_m.getDefault() self.assertEqual(z_m_default, Payload(('', 0, Fiber))) self.assertIsInstance(z_m_default, Payload) # Check final shape is correct (note it is 1-D) z_m_shape = z_m.getShape() self.assertEqual(z_m_shape, [7])
def test_plus(self): av = 1 bv = 1 a = Payload(av) b = Payload(bv) a_plus_1 = a + 1 self.assertEqual(a_plus_1.value, av + 1) a_plus_b = a + b self.assertEqual(a_plus_b.value, av + bv) a += 1 self.assertEqual(a.value, av + 1) a += b self.assertEqual(a.value, av + 1 + bv)
def test_multiply(self): av = 1 bv = 2 a = Payload(av) b = Payload(bv) a_mul_2 = a * 2 self.assertEqual(a_mul_2.value, av * 2) two_mul_a = 2 * a self.assertEqual(two_mul_a.value, 2 * av) a_mul_b = a * b self.assertEqual(a_mul_b.value, av * bv) a *= 2 self.assertEqual(a.value, av * 2) a *= b self.assertEqual(a.value, av * 2 * b)
def test_equality(self): cv = 8 dv = 8 ev = 1 c = Payload(cv) d = Payload(dv) e = Payload(ev) self.assertTrue(c == d) self.assertFalse(c == e) self.assertFalse(c != d) self.assertTrue(c != e) self.assertTrue(c == 8) self.assertFalse(c == 1) self.assertFalse(c != 8) self.assertTrue(c != 1) self.assertTrue(8 == c) self.assertFalse(1 == c) self.assertFalse(8 != c) self.assertTrue(1 != c)
def test_multiply(self): cp1 = CoordPayload(5, 4) cp2 = CoordPayload(6, 5) payload_ref = Payload(20) self.assertEqual(cp1 * 5, payload_ref) self.assertEqual(cp1 * cp2, payload_ref) self.assertEqual(5 * cp1, payload_ref) cp1 *= cp2 self.assertEqual(cp1, payload_ref) cp2 *= 4 self.assertEqual(cp2, payload_ref)
def test_sub(self): cp1 = CoordPayload(5, 12) cp2 = CoordPayload(6, 10) payload_ref = Payload(2) self.assertEqual(cp1 - 10, payload_ref) self.assertEqual(cp1 - cp2, payload_ref) self.assertEqual(14 - cp1, payload_ref) cp1 -= cp2 self.assertEqual(cp1, payload_ref) cp2 -= 8 self.assertEqual(cp2, payload_ref)
def test_add(self): cp1 = CoordPayload(5, 11) cp2 = CoordPayload(6, 12) payload_ref = Payload(23) self.assertEqual(cp1 + 12, payload_ref) self.assertEqual(cp1 + cp2, payload_ref) self.assertEqual(12 + cp1, payload_ref) cp1 += cp2 self.assertEqual(cp1, payload_ref) cp2 += 11 self.assertEqual(cp2, payload_ref)
def test_mul_payload(self): """Test __mul__ payload""" f_in = Fiber.fromUncompressed([1, 2, 3, 0, 0, 6]) f_ref = Fiber([0, 1, 2, 5], [2, 4, 6, 12]) two = Payload(2) with self.subTest("f_in * 2"): f_out = f_in * two self.assertEqual(f_ref, f_out) with self.subTest("2*f_in"): f_out = two * f_in self.assertEqual(f_ref, f_out) with self.subTest("f_in *=2"): # f_in gets clobbered! f_in *= two self.assertEqual(f_ref, f_in)
def test_add_payload(self): """Test __add__ payload""" f_in = Fiber.fromUncompressed([1, 2, 3, 0, 0, 6]) f_ref = Fiber.fromUncompressed([3, 4, 5, 2, 2, 8]) two = Payload(2) with self.subTest("f_in + 2"): f_out = f_in + two self.assertEqual(f_ref, f_out) with self.subTest("2 + f_in"): f_out = two + f_in self.assertEqual(f_ref, f_out) with self.subTest("f_in += 2"): # f_in gets clobbered! f_in += two self.assertEqual(f_ref, f_in)
def test_union_2x_1d(self): """Test union 2-way for 1d fibers""" ans = Fiber([0, 2, 3, 4, 6], [('AB', Payload(1), Payload(2)), ('AB', Payload(3), Payload(4)), ('B', Payload(0), Payload(5)), ('A', Payload(5), Payload(0)), ('A', Payload(7), Payload(0))]) a_m = self.input["a1_m"] b_m = self.input["b1_m"] z_m1 = a_m | b_m z_m2 = Fiber.union(a_m, b_m) for test, z_m in enumerate([z_m1, z_m2]): with self.subTest(test=test): # Check for right answer self.assertEqual(z_m, ans) # Check that payloads are of correct type self.assertIsInstance(z_m[0].payload.value[1], Payload) self.assertIsInstance(z_m[2].payload.value[1], Payload) self.assertIsInstance(z_m[3].payload.value[2], Payload) # Check that default was set properly z_m_default = z_m.getDefault() self.assertEqual(z_m_default, Payload(('', 0, 0))) self.assertIsInstance(z_m_default, Payload) # Check final shape is correct z_m_shape = z_m.getShape() self.assertEqual(z_m_shape, [7])
print(f"b = CoordPayload(6, 2) -> {b}") print("") z = a + b print(f"a+b -> {z}") z = a + 1 print(f"a+1 -> {z}") z = 1 + a print(f"1+a -> {z}") print("") p = Payload(4) print(f"p = Payload(4) -> {p}") z = a + p print(f"a+p -> {z}") z = p + a print(f"p+a -> {z}") print("") a += b print(f"a+=b -> {a}") a = CoordPayload(5, 4) a += 2