def test_context_managers(self): """Test the context manager support of the functions.""" # rtol and atol for func in ( cfdm.atol, cfdm.rtol, ): old = func() new = old * 2 with func(new): self.assertEqual(func(), new) self.assertEqual(func(new * 2), new) self.assertEqual(func(), new * 2) self.assertEqual(func(), old) # log_level func = cfdm.log_level org = func("DETAIL") old = func() new = "DEBUG" with func(new): self.assertEqual(func(), new) self.assertEqual(func(), old) func(org) del org._func with self.assertRaises(AttributeError): with org: pass # Full configuration func = cfdm.configuration org = func(rtol=10, atol=20, log_level="DETAIL") old = func() new = dict(rtol=10 * 2, atol=20 * 2, log_level="DEBUG") with func(**new): self.assertEqual(func(), new) self.assertEqual(func(), old) func(**org) org = func(rtol=cfdm.Constant(10), atol=20, log_level="DETAIL") old = func() new = dict(rtol=cfdm.Constant(10 * 2), atol=20 * 2, log_level="DEBUG") with func(**new): self.assertEqual(func(), new) self.assertEqual(func(), old) func(**org)
def test_Constant(self): """Test the Constant class.""" c = cfdm.Constant(20) d = cfdm.Constant(10) e = cfdm.Constant(999) self.assertIsInstance(hash(c), int) self.assertIsInstance(repr(c), str) self.assertEqual(float(c), 20.0) self.assertEqual(int(c), 20) self.assertEqual(str(c), "20") # Binary operations self.assertEqual(c, 20) self.assertEqual(20, c) self.assertEqual(c, c) self.assertEqual(c, copy.deepcopy(c)) self.assertEqual(c, numpy.array(20)) self.assertNotEqual(c, 999) self.assertNotEqual(999, c) self.assertNotEqual(c, d) self.assertNotEqual(c, numpy.array(999)) self.assertNotEqual(numpy.array(999), c) self.assertLess(c, 999) self.assertLessEqual(c, 999) self.assertGreater(c, 10) self.assertGreaterEqual(c, 10) self.assertGreater(999, c) self.assertGreaterEqual(999, c) self.assertLess(10, c) self.assertLessEqual(10, c) self.assertLess(c, e) self.assertLessEqual(c, e) self.assertGreater(c, d) self.assertGreaterEqual(c, d) self.assertEqual(c + 10, 30) self.assertEqual(c - 10, 10) self.assertEqual(c / 10, 2) self.assertEqual(c * 10, 200) self.assertEqual(c // 10, 2) self.assertEqual(c + d, 30) self.assertEqual(c - d, 10) self.assertEqual(c / d, 2) self.assertEqual(c * d, 200) self.assertEqual(c // d, 2) self.assertEqual(20 + d, 30) self.assertEqual(20 - d, 10) self.assertEqual(20 / d, 2) self.assertEqual(20 * d, 200) self.assertEqual(20 // d, 2) c = cfdm.Constant(20) c -= 10 self.assertEqual(c, 10) c += 10 self.assertEqual(c, 20) c *= 10 self.assertEqual(c, 200) c /= 10 self.assertEqual(c, 20) c //= 10 self.assertEqual(c, 2) # Unary operations c = cfdm.Constant(-20) self.assertEqual(-c, 20) self.assertEqual(abs(c), 20) self.assertEqual(+c, -20) # Copy c = cfdm.atol().copy() del c._func self.assertEqual(c, c.copy()) # Bool self.assertTrue(cfdm.Constant(1)) self.assertTrue(cfdm.Constant(True)) self.assertFalse(cfdm.Constant(0)) self.assertFalse(cfdm.Constant(False))