def test_int_floor_div_in_range(self): low, high, val = (0, 10, 8) y = 2 IntSubrange = subrange(int, low, high) x = IntSubrange(val) z = x // y assert z == val // y assert type(z) == IntSubrange
def test_int_mul_out_of_range_raises(self, data): low, high, val = data.draw(int_lhv()) y = data.draw( st.integers().filter(lambda x: val * x < low or high < val * x)) IntSubrange = subrange(int, low, high) x = IntSubrange(val) with pytest.raises(Exception): x * y
def test_int_mul_in_range(self, data): low, high, val = data.draw(int_lhv()) y = data.draw( st.integers().filter(lambda x: val * x in range(low, high))) IntSubrange = subrange(int, low, high) x = IntSubrange(val) z = x * y assert z == val * y assert type(z) == IntSubrange
def test_str_add_out_of_range_raises(self, data): low, high, val = data.draw(str_lhv()) # filters lots of examples, hence health check suppression t = data.draw( st.characters().filter(lambda s: val + s < low or high < val + s)) StrSubrange = subrange(str, low, high) s = StrSubrange(val) with pytest.raises(Exception): s + t
def test_str_add(self, data): low, high, val = data.draw(str_lhv()) t = data.draw(st.characters()) StrSubrange = subrange(str, low, high) s = StrSubrange(val) if val + t < low or high < val + t: with pytest.raises(Exception): s + t else: z = s + t assert z == val + t assert type(z) == StrSubrange
# or just use actual bool types a_bool = True another_bool = False class Weekday(Enum): MONDAY = 0 TUESDAY = 1 WEDNESDAY = 2 THURSDAY = 3 FRIDAY = 4 SATURDAY = 5 SUNDAY = 6 Letter = subrange(str, "A", "Z") Digit = subrange(int, 0, 9) class Officer(Enum): LIEUTENANT = 0 CAPTAIN = 1 MAJOR = 2 LIEUTENANT_COLONEL = 3 COLONEL = 4 BRIGADIER = 5 MAJOR_GENERAL = 6 LIEUTENANT_GENERAL = 7 GENERAL = 8
def test_int_out_of_range_raises(self, lhv): low, high, val = lhv IntSubrange = subrange(int, low, high) with pytest.raises(ValueError): IntSubrange(val)
def test_int_in_range(self, lhv): low, high, val = lhv IntSubrange = subrange(int, low, high) x = IntSubrange(val) assert x == val
def test_str_out_of_range_raises(self, lhv): low, high, val = lhv StrSubrange = subrange(str, low, high) with pytest.raises(ValueError): StrSubrange(val)
def test_str_in_range(self, lhv): low, high, val = lhv StrSubrange = subrange(str, low, high) c = StrSubrange(val) assert c == val