def test_equal(): v1 = Color() v2 = Color() assert v1 == v2 vrgba = Color(1, 2, 3, 4) vrgb = Color(1, 2, 3) assert not vrgb == vrgba # Force use of __eq__
def test_initialize(arg): if isinstance(arg, dict): v1 = Color(**arg) v2 = Color(**arg) else: v1 = Color(*arg) v2 = Color(*arg) assert v1 == v2
def test_methods(field, ret_type, params): v = Color() # Don't test methods' validity but bindings one assert hasattr(v, field) method = getattr(v, field) assert callable(method) ret = method(*params) assert type(ret) == ret_type
def test_properties_ro(args): v = Color(4.2) field, ret_type = args assert hasattr(v, field) field_val = getattr(v, field) assert type(field_val) == ret_type with pytest.raises(AttributeError): setattr(v, field, 0.5)
def test_properties_rw(field, ret_type): v = Color() assert hasattr(v, field) field_val = getattr(v, field) assert type(field_val) == ret_type if ret_type is float: vals = (0, 10, 10.0, 42.5) else: vals = (0, 10, 0xFF) for val in vals: setattr(v, field, val) field_val = getattr(v, field) assert field_val == val
def test_base(): v = Color() assert type(v) == Color
def test_bad_instantiate(arg): with pytest.raises(TypeError): Color(*arg)
def test_repr(): v = Color() assert repr(v) == "<Color(r=0.0, g=0.0, b=0.0, a=1.0)>"
def test_bad_equal(arg): basis = Color(1, 2, 3, 4) assert basis != arg
def test_bad_properties(args): v = Color() field, bad_value = args with pytest.raises(TypeError): setattr(v, field, bad_value)
else: v1 = Color(*arg) v2 = Color(*arg) assert v1 == v2 def test_equal(): v1 = Color() v2 = Color() assert v1 == v2 vrgba = Color(1, 2, 3, 4) vrgb = Color(1, 2, 3) assert not vrgb == vrgba # Force use of __eq__ @pytest.mark.parametrize("arg", [None, 0, "foo", Color(1, 2, 3, 5)]) def test_bad_equal(arg): basis = Color(1, 2, 3, 4) assert basis != arg def test_repr(): v = Color() assert repr(v) == "<Color(r=0.0, g=0.0, b=0.0, a=1.0)>" @pytest.mark.parametrize("arg", [(None, ), (1, None), (1, 2, None), ("dummy", ), (NODE, ), (Vector2(), )]) def test_bad_instantiate(arg): with pytest.raises(TypeError): Color(*arg)
def generate_value(self): # Use integer instead of float to avoid floating point imprecision in comparisons return Color(self.random.randint(0, 100))