1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
import cairo
import pytest
def test_error_check_status():
check_status = cairo.Error._check_status
with pytest.raises(cairo.Error) as e:
check_status(cairo.Status.DEVICE_FINISHED)
assert e.value.status == cairo.Status.DEVICE_FINISHED
assert str(e.value) == "the target device has been finished"
assert repr(e.value) == ("Error('the target device has been finished', "
"cairo.Status.DEVICE_FINISHED)")
with pytest.raises(cairo.Error) as e:
check_status(cairo.Status.NO_MEMORY)
assert e.value.status == cairo.Status.NO_MEMORY
with pytest.raises(MemoryError) as e:
check_status(cairo.Status.NO_MEMORY)
assert type(e.value).__name__ == "cairo.MemoryError"
with pytest.raises(cairo.Error) as e:
check_status(cairo.Status.READ_ERROR)
with pytest.raises(IOError) as e:
check_status(cairo.Status.READ_ERROR)
assert e.value.status == cairo.Status.READ_ERROR
with pytest.raises(cairo.Error) as e:
check_status(cairo.Status.WRITE_ERROR)
with pytest.raises(IOError) as e:
check_status(cairo.Status.WRITE_ERROR)
assert e.value.status == cairo.Status.WRITE_ERROR
assert type(e.value).__name__ == "cairo.IOError"
err = e.value
err.status = cairo.Status.DEVICE_FINISHED
assert err.status == cairo.Status.DEVICE_FINISHED
with pytest.raises((TypeError, AttributeError)):
del err.status
str(cairo.Error())
def test_error_context():
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 100, 100)
ctx = cairo.Context(surface)
with pytest.raises(cairo.Error) as excinfo:
ctx.restore()
error = excinfo.value
assert error.status == cairo.STATUS_INVALID_RESTORE
assert error.status == cairo.Status.INVALID_RESTORE
assert isinstance(error.status, cairo.Status)
assert str(error)
def test_error():
with pytest.raises(cairo.Error) as excinfo:
raise cairo.Error
assert excinfo.value.status is None
with pytest.raises(cairo.Error) as excinfo:
raise cairo.Error("foo")
assert excinfo.value.status is None
assert excinfo.value.args[0] == "foo"
with pytest.raises(cairo.Error) as excinfo:
raise cairo.Error("foo", 42)
assert excinfo.value.status == 42
class Foo(cairo.Error):
pass
Foo("foo", 42)
def test_error_alias():
assert cairo.Error is cairo.CairoError
|