def test_script_device(): dev = cairo.ScriptDevice(io.BytesIO()) assert dev assert issubclass(cairo.ScriptDevice, cairo.Device) assert isinstance(dev, cairo.ScriptDevice) with pytest.raises(TypeError): cairo.ScriptDevice(None)
def test_script_device_to_path(): fd, fname = tempfile.mkstemp() os.close(fd) try: cairo.ScriptDevice(fname).finish() finally: os.unlink(fname)
def test_script_device_device_ref(): f = io.BytesIO() dev = cairo.ScriptDevice(f) surface = cairo.ScriptSurface(dev, cairo.Content.COLOR_ALPHA, 42, 10) del dev for i in range(10): surface.get_device()
def test_cmp_hash(): f = io.BytesIO() dev = cairo.ScriptDevice(f) surface = cairo.ScriptSurface(dev, cairo.Content.COLOR_ALPHA, 42, 10) other = surface.get_device() assert dev == other assert not dev != other assert hash(dev) == hash(other)
def test_script_device_write_comment(): f = io.BytesIO() dev = cairo.ScriptDevice(f) dev.write_comment("pycairo foo") dev.write_comment(u"pycairo bar") dev.flush() assert b"pycairo foo" in f.getvalue() assert b"pycairo bar" in f.getvalue()
def test_context_manager(): f = io.BytesIO() with cairo.ScriptDevice(f) as dev: dev.acquire() dev.release() with pytest.raises(cairo.Error) as excinfo: dev.acquire() assert excinfo.value.status == cairo.Status.DEVICE_FINISHED
def test_script_surface(): f = io.BytesIO() dev = cairo.ScriptDevice(f) surface = cairo.ScriptSurface(dev, cairo.Content.COLOR_ALPHA, 42, 10) assert isinstance(surface, cairo.ScriptSurface) cairo.Context(surface).paint() dev.flush() assert b"42" in f.getvalue() assert b"paint" in f.getvalue()
def test_script_device_write_comment(): f = io.BytesIO() dev = cairo.ScriptDevice(f) dev.write_comment("pycairo foo") dev.write_comment(u"pycairo bar") dev.flush() assert b"pycairo foo" in f.getvalue() assert b"pycairo bar" in f.getvalue() with pytest.raises(TypeError): dev.write_comment(object())
def test_script_device_mode(): assert hasattr(cairo, "ScriptMode") assert cairo.ScriptMode.ASCII != cairo.ScriptMode.BINARY dev = cairo.ScriptDevice(io.BytesIO()) mode = dev.get_mode() assert isinstance(mode, cairo.ScriptMode) assert mode == cairo.ScriptMode.ASCII dev.set_mode(cairo.ScriptMode.BINARY) assert dev.get_mode() == cairo.ScriptMode.BINARY
def test_script_surface_create_for_target(): # paint the script proxy f = io.BytesIO() dev = cairo.ScriptDevice(f) surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 10, 10) script = cairo.ScriptSurface.create_for_target(dev, surface) assert isinstance(script, cairo.ScriptSurface) ctx = cairo.Context(script) ctx.set_source_rgb(0.25, 0.5, 1.0) ctx.paint() assert b"paint" in f.getvalue() surface.flush() image_data = bytes(surface.get_data()) # check if the result is the same surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 10, 10) ctx = cairo.Context(surface) ctx.set_source_rgb(0.25, 0.5, 1.0) ctx.paint() surface.flush() assert bytes(surface.get_data()) == image_data
def test_from_recording_surface(): s = cairo.RecordingSurface(cairo.CONTENT_COLOR, None) ctx = cairo.Context(s) ctx.paint() f = io.BytesIO() dev = cairo.ScriptDevice(f) dev.from_recording_surface(s) dev.flush() assert b"paint" in f.getvalue() # already finished dev.finish() with pytest.raises(cairo.Error): dev.from_recording_surface(s) # only recording surfaces allowed image = cairo.ImageSurface(cairo.FORMAT_ARGB32, 10, 10) with pytest.raises(TypeError): dev.from_recording_surface(image) # No None allowed with pytest.raises(TypeError): dev.from_recording_surface(None)
def test_device_acquire(): f = io.BytesIO() dev = cairo.ScriptDevice(f) dev.acquire() dev.release()