def test_numeric_type_validates_and_casts_decimal(self): ten_dec = Decimal(10) ten_int = 10 ten_float = 10.0 ten_long = int(10) # long and int are same in python3 ten_var_dec = NumericType( ten_dec) # this should not throw an exception ten_var_int = NumericType(ten_int) ten_var_float = NumericType(ten_float) ten_var_long = NumericType(ten_long) self.assertTrue(isinstance(ten_var_dec.value, Decimal)) self.assertTrue(isinstance(ten_var_int.value, Decimal)) self.assertTrue(isinstance(ten_var_float.value, Decimal)) self.assertTrue(isinstance(ten_var_long.value, Decimal))
def test_numeric_equal_to(self): self.assertTrue(NumericType(10).equal_to(10)) self.assertTrue(NumericType(10).equal_to(10.0)) self.assertTrue(NumericType(10).equal_to(10.000001)) self.assertTrue(NumericType(10.000001).equal_to(10)) self.assertTrue(NumericType(Decimal('10.0')).equal_to(10)) self.assertTrue(NumericType(10).equal_to(Decimal('10.0'))) self.assertFalse(NumericType(10).equal_to(10.00001)) self.assertFalse(NumericType(10).equal_to(11))
def test_numeric_not_equal_to(self): self.assertFalse(NumericType(10).not_equal_to(10)) self.assertFalse(NumericType(10).not_equal_to(10.0)) self.assertFalse(NumericType(10).not_equal_to(10 + self.EPSILON)) self.assertFalse(NumericType(10 + self.EPSILON).not_equal_to(10)) self.assertFalse(NumericType(Decimal('10.0')).not_equal_to(10)) self.assertFalse(NumericType(10).not_equal_to(Decimal('10.0'))) self.assertTrue(NumericType(10).not_equal_to(10.00001)) self.assertTrue(NumericType(10).not_equal_to(11))
def test_numeric_difference_less_than(self): self.assertTrue(NumericType((1, 3)).difference_less_than(3)) self.assertFalse(NumericType((1, 3)).difference_less_than(-2)) self.assertFalse(NumericType((3, 1)).difference_less_than(1)) self.assertTrue(NumericType((1.1, 3.2)).difference_less_than(-2)) self.assertTrue( NumericType((3.00001, 3.00003)).difference_less_than(0.00003)) self.assertTrue(NumericType((5, 10)).difference_less_than(-4.99)) with self.assertRaises(AssertionError): self.assertTrue(NumericType(10).difference_less_than(10))
def test_numeric_difference_greater_than(self): self.assertTrue(NumericType((3, 1)).difference_greater_than(1)) self.assertFalse(NumericType((3, 1)).difference_greater_than(2)) self.assertFalse(NumericType((1, 3)).difference_greater_than(2)) self.assertTrue(NumericType((3.2, 1.1)).difference_greater_than(1.1)) self.assertTrue( NumericType((3.00003, 3.00001)).difference_greater_than(0.00001)) self.assertTrue(NumericType((10, 5)).difference_greater_than(3.000002)) with self.assertRaises(AssertionError): self.assertTrue(NumericType(10).difference_greater_than(10))
def test_numeric_less_than_or_equal_to(self): self.assertTrue(NumericType(1).less_than_or_equal_to(10)) self.assertFalse(NumericType(11).less_than_or_equal_to(10)) self.assertTrue(NumericType(10).less_than_or_equal_to(10.1)) self.assertTrue(NumericType(10).less_than_or_equal_to(10.000001)) self.assertTrue(NumericType(10).less_than_or_equal_to(10.000002)) self.assertTrue(NumericType(10).less_than_or_equal_to(10))
def test_numeric_difference_less_than_percent(self): self.assertTrue(NumericType((10, 5)).difference_less_than_percent(101)) self.assertFalse(NumericType((10, 5)).difference_less_than_percent(99)) self.assertFalse( NumericType((10, 5)).difference_less_than_percent(100)) self.assertTrue(NumericType((5, 10)).difference_less_than_percent(-49)) self.assertTrue(NumericType((5, 5)).difference_less_than_percent(1)) with self.assertRaises(AssertionError): self.assertTrue(NumericType(10).difference_less_than(10))
def test_other_value_not_numeric(self): error_string = "10 is not a valid numeric type" with self.assertRaisesRegexp(AssertionError, error_string): NumericType(10).equal_to("10")
def test_instantiate(self): err_string = "foo is not a valid numeric type" with self.assertRaisesRegexp(AssertionError, err_string): NumericType("foo")
def test_numeric_greater_than(self): self.assertTrue(NumericType(10).greater_than(1)) self.assertFalse(NumericType(10).greater_than(11)) self.assertTrue(NumericType(10.1).greater_than(10)) self.assertFalse(NumericType(10.000001).greater_than(10)) self.assertTrue(NumericType(10.000002).greater_than(10))