def test_strictbool_with_custom_base(): """Test :func:`moretools.strictbool` class creator with a custom intermediate :class:`moretools.StrictBool`-derived ``base=`` class argument. """ with pytest.raises(TypeError): strictbool('Bool', base=bool) class Bool(StrictBool): pass boolclass = strictbool('Bool', base=Bool) assert boolclass is not Bool assert issubclass(boolclass, Bool)
def test_strictbool(true_values, false_values): """Test :func:`moretools.strictbool` class creator. """ boolclass = strictbool('Bool', true=true_values, false=false_values) assert boolclass.__name__ == 'Bool' assert boolclass is not StrictBool assert issubclass(boolclass, StrictBool) assert type(boolclass) is not StrictBoolMeta assert issubclass(type(boolclass), StrictBoolMeta) assert boolclass.true == type(boolclass).true == true_values assert boolclass.false == type(boolclass).false == false_values
def test_strictbool_without_true_false(true_values, false_values): """Test :func:`moretools.strictbool` class creator without passing ``true=`` and ``false=`` value lists. """ boolclass = strictbool('Bool') assert boolclass.true is type(boolclass).true is None assert boolclass.false is type(boolclass).false is None assert boolclass(True) is True assert boolclass(False) is False for value in true_values + false_values: with pytest.raises(ValueError): boolclass(value)