73 lines
2.4 KiB
Python
73 lines
2.4 KiB
Python
import pytest
|
|
from svg.path import parser
|
|
|
|
PATHS = [
|
|
(
|
|
"M 100 100 L 300 100 L 200 300 z",
|
|
[("M", "100 100"), ("L", "300 100"), ("L", "200 300"), ("z", "")],
|
|
[("M", 100 + 100j), ("L", 300 + 100j), ("L", 200 + 300j), ("z",)],
|
|
),
|
|
(
|
|
"M 5 1 v 7.344 A 3.574 3.574 0 003.5 8 3.515 3.515 0 000 11.5 C 0 13.421 1.579 15 3.5 15 "
|
|
"A 3.517 3.517 0 007 11.531 v -7.53 h 6 v 4.343 A 3.574 3.574 0 0011.5 8 3.515 3.515 0 008 11.5 "
|
|
"c 0 1.921 1.579 3.5 3.5 3.5 1.9 0 3.465 -1.546 3.5 -3.437 V 1 z",
|
|
[
|
|
("M", "5 1"),
|
|
("v", "7.344"),
|
|
("A", "3.574 3.574 0 003.5 8 3.515 3.515 0 000 11.5"),
|
|
("C", "0 13.421 1.579 15 3.5 15"),
|
|
("A", "3.517 3.517 0 007 11.531"),
|
|
("v", "-7.53"),
|
|
("h", "6"),
|
|
("v", "4.343"),
|
|
("A", "3.574 3.574 0 0011.5 8 3.515 3.515 0 008 11.5"),
|
|
("c", "0 1.921 1.579 3.5 3.5 3.5 1.9 0 3.465 -1.546 3.5 -3.437"),
|
|
("V", "1"),
|
|
("z", ""),
|
|
],
|
|
[
|
|
("M", 5 + 1j),
|
|
("v", 7.344),
|
|
("A", 3.574, 3.574, 0, False, False, 3.5 + 8j),
|
|
("A", 3.515, 3.515, 0, False, False, 0 + 11.5j),
|
|
("C", 0 + 13.421j, 1.579 + 15j, 3.5 + 15j),
|
|
("A", 3.517, 3.517, 0, False, False, 7 + 11.531j),
|
|
("v", -7.53),
|
|
("h", 6),
|
|
("v", 4.343),
|
|
("A", 3.574, 3.574, 0, False, False, 11.5 + 8j),
|
|
("A", 3.515, 3.515, 0, False, False, 8 + 11.5j),
|
|
("c", 0 + 1.921j, 1.579 + 3.5j, 3.5 + 3.5j),
|
|
("c", 1.9 + 0j, 3.465 - 1.546j, 3.5 - 3.437j),
|
|
("V", 1),
|
|
("z",),
|
|
],
|
|
),
|
|
(
|
|
"M 600,350 L 650,325 A 25,25 -30 0,1 700,300 L 750,275",
|
|
[
|
|
("M", "600,350"),
|
|
("L", "650,325"),
|
|
("A", "25,25 -30 0,1 700,300"),
|
|
("L", "750,275"),
|
|
],
|
|
[
|
|
("M", 600 + 350j),
|
|
("L", 650 + 325j),
|
|
("A", 25, 25, -30, False, True, 700 + 300j),
|
|
("L", 750 + 275j),
|
|
],
|
|
),
|
|
]
|
|
|
|
|
|
@pytest.mark.parametrize("path, commands, tokens", PATHS)
|
|
def test_commandifier(path, commands, tokens):
|
|
assert list(parser._commandify_path(path)) == commands
|
|
assert list(parser._tokenize_path(path)) == tokens
|
|
|
|
|
|
@pytest.mark.parametrize("path, commands, tokens", PATHS)
|
|
def test_parser(path, commands, tokens):
|
|
path = parser.parse_path(path)
|