1from io import BytesIO
2
3import pytest
4
5from .. import manifestexpected
6
7
8@pytest.mark.parametrize("fuzzy, expected", [
9    (b"ref.html:1;200", [("ref.html", ((1, 1), (200, 200)))]),
10    (b"ref.html:0-1;100-200", [("ref.html", ((0, 1), (100, 200)))]),
11    (b"0-1;100-200", [(None, ((0, 1), (100, 200)))]),
12    (b"maxDifference=1;totalPixels=200", [(None, ((1, 1), (200, 200)))]),
13    (b"totalPixels=200;maxDifference=1", [(None, ((1, 1), (200, 200)))]),
14    (b"totalPixels=200;1", [(None, ((1, 1), (200, 200)))]),
15    (b"maxDifference=1;200", [(None, ((1, 1), (200, 200)))]),
16    (b"test.html==ref.html:maxDifference=1;totalPixels=200",
17     [((u"test.html", u"ref.html", "=="), ((1, 1), (200, 200)))]),
18    (b"test.html!=ref.html:maxDifference=1;totalPixels=200",
19     [((u"test.html", u"ref.html", "!="), ((1, 1), (200, 200)))]),
20    (b"[test.html!=ref.html:maxDifference=1;totalPixels=200, test.html==ref1.html:maxDifference=5-10;100]",
21     [((u"test.html", u"ref.html", "!="), ((1, 1), (200, 200))),
22      ((u"test.html", u"ref1.html", "=="), ((5,10), (100, 100)))]),
23])
24def test_fuzzy(fuzzy, expected):
25    data = b"""
26[test.html]
27  fuzzy: %s""" % fuzzy
28    f = BytesIO(data)
29    manifest = manifestexpected.static.compile(f,
30                                               {},
31                                               data_cls_getter=manifestexpected.data_cls_getter,
32                                               test_path="test/test.html",
33                                               url_base="/")
34    assert manifest.get_test("/test/test.html").fuzzy == expected
35