Пример #1
0
def test_selenium_mimebundle(
    name: str,
    data: Dict[str, Any],
    mode: str,
    fmt: str,
    offline: bool,
    internet_ok: bool,
) -> None:
    if not (offline or internet_ok):
        pytest.xfail("Internet not available")
    saver = SeleniumSaver(data[mode], mode=mode, offline=offline)
    if mode == "vega" and fmt == "vega-lite":
        with pytest.raises(ValueError):
            saver.mimebundle(fmt)
        return
    mimetype, out = saver.mimebundle(fmt).popitem()
    assert mimetype == fmt_to_mimetype(fmt)
    if fmt == "png":
        assert isinstance(out, bytes)
        im = Image.open(io.BytesIO(out))
        assert im.format == "PNG"

        im_expected = Image.open(io.BytesIO(data[fmt]))
        assert abs(im.size[0] - im_expected.size[0]) < 5
        assert abs(im.size[1] - im_expected.size[1]) < 5
    elif fmt == "svg":
        assert out == data[fmt]
    else:
        assert out == data[fmt]
Пример #2
0
def test_extract_error() -> None:
    saver = SeleniumSaver({})
    with pytest.raises(JavascriptError) as err:
        saver._extract("png")
    assert "Invalid specification" in str(err.value)

    saver = SeleniumSaver({}, mode="vega")
    with pytest.raises(JavascriptError) as err:
        saver._extract("xxx")
    assert "Unrecognized format" in str(err.value)
Пример #3
0
def test_scale_factor(spec: JSONDict, fmt: str, kwds: Dict[str, Any]) -> None:
    saver1 = SeleniumSaver(spec)
    out1 = saver1.save(fmt=fmt)

    saver2 = SeleniumSaver(spec, **kwds)
    out2 = saver2.save(fmt=fmt)

    if fmt == "png":
        assert isinstance(out1, bytes)
        im1 = Image.open(io.BytesIO(out1))
        assert im1.format == "PNG"

        assert isinstance(out2, bytes)
        im2 = Image.open(io.BytesIO(out2))
        assert im2.format == "PNG"

        assert im2.size[0] == 2 * im1.size[0]
        assert im2.size[1] == 2 * im1.size[1]
    else:
        assert isinstance(out1, str)
        im1 = _SVGImage(out1)

        assert isinstance(out2, str)
        im2 = _SVGImage(out2)

        assert im2.width == 2 * im1.width
        assert im2.height == 2 * im1.height
Пример #4
0
def test_stop_and_start(name: str, data: Dict[str, Any]) -> None:
    saver = SeleniumSaver(data["vega-lite"])
    bundle1 = saver.mimebundle("png")

    saver._stop_serving()
    assert saver._provider is None

    bundle2 = saver.mimebundle("png")
    assert bundle1 == bundle2
Пример #5
0
def test_enabled() -> None:
    assert SeleniumSaver.enabled()