Skip to content

Commit 469569f

Browse files
committed
Added new pagesizes tests.
1 parent b8042eb commit 469569f

File tree

4 files changed

+162
-41
lines changed

4 files changed

+162
-41
lines changed

.isort.cfg

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[settings]
22
line_length = 115
3-
indent = Tab
4-
multi_line_output = 3
3+
indent = " "
4+
multi_line_output = 8
55
import_heading_stdlib = stdlib
66
import_heading_thirdparty = 3rd party
77
import_heading_firstparty = this package
@@ -16,6 +16,7 @@ known_third_party =
1616
colorama
1717
coverage
1818
coverage_pyver_pragma
19+
faker
1920
github
2021
pydash
2122
pytest

tests/requirements.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
coverage>=5.1
2-
coverage_pyver_pragma>=0.0.1
1+
coverage >=5.1
2+
coverage_pyver_pragma >=0.0.2
33
faker
4-
pytest>=6.0.0rc1
5-
pytest-cov>=2.8.1
6-
pytest-randomly>=3.3.1
7-
pytest-rerunfailures>=9.0
8-
pytz>=2019.1
4+
pytest >=6.0.0rc1
5+
pytest-cov >=2.8.1
6+
pytest-randomly >=3.3.1
7+
pytest-rerunfailures >=9.0
8+
pytz >=2019.1

tests/test_pagesizes.py

Lines changed: 150 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,50 +6,169 @@
66
77
"""
88

9+
# stdlib
10+
from math import isclose
11+
912
# 3rd party
1013
import pytest
1114

1215
# this package
13-
from domdf_python_tools.pagesizes import A4, BaseSize, inch, mm, parse_measurement, sizes
16+
from domdf_python_tools.pagesizes import (
17+
A0,
18+
A1,
19+
A2,
20+
A3,
21+
A4,
22+
A5,
23+
A6,
24+
BaseSize,
25+
PageSize,
26+
Size_cm,
27+
Size_inch,
28+
Size_mm,
29+
Size_pica,
30+
Size_um,
31+
cm,
32+
convert_from,
33+
inch,
34+
mm,
35+
parse_measurement,
36+
pc,
37+
pt,
38+
sizes,
39+
um
40+
)
41+
42+
43+
@pytest.mark.parametrize(
44+
"obj, expects",
45+
[
46+
(
47+
Size_inch(12, 34),
48+
"Size_inch(width=<Unit '12.000 inch': 864.000pt>, height=<Unit '34.000 inch': 2448.000pt>)"
49+
),
50+
(
51+
Size_cm(12, 34),
52+
"Size_cm(width=<Unit '12.000 cm': 340.157pt>, height=<Unit '34.000 cm': 963.780pt>)"
53+
),
54+
(
55+
Size_mm(12, 34),
56+
"Size_mm(width=<Unit '12.000 mm': 34.016pt>, height=<Unit '34.000 mm': 96.378pt>)"
57+
),
58+
(
59+
Size_um(12, 34),
60+
"Size_um(width=<Unit '12.000 µm': 0.034pt>, height=<Unit '34.000 µm': 0.096pt>)"
61+
),
62+
(
63+
Size_pica(12, 34),
64+
"Size_pica(width=<Unit '12.000 pc': 144.000pt>, height=<Unit '34.000 pc': 408.000pt>)"
65+
),
66+
]
67+
)
68+
def test_repr(obj, expects):
69+
assert repr(obj) == expects
70+
71+
72+
@pytest.mark.parametrize(
73+
"obj, expects",
74+
[
75+
(Size_mm(12, 34), "Size_mm(width=12, height=34)"),
76+
(Size_cm(12, 34), "Size_cm(width=12, height=34)"),
77+
(Size_mm(12, 34), "Size_mm(width=12, height=34)"),
78+
(Size_um(12, 34), "Size_um(width=12, height=34)"),
79+
(Size_pica(12, 34), "Size_pica(width=12, height=34)"),
80+
]
81+
)
82+
def test_str(obj, expects):
83+
assert str(obj) == expects
84+
1485

86+
@pytest.mark.parametrize("size", [A6, A5, A4, A3, A2, A1, A0])
87+
def test_orientation(size):
88+
assert size.is_portrait()
89+
assert size.portrait().is_portrait()
90+
assert size.landscape().portrait().is_portrait()
91+
assert size.landscape().portrait() == size
92+
assert size.landscape().is_landscape()
1593

16-
def test_orientation():
17-
assert A4.is_portrait()
18-
assert A4.portrait().is_portrait()
19-
assert A4.landscape().portrait().is_portrait()
20-
assert A4.landscape().portrait() == A4
21-
assert A4.landscape().is_landscape()
94+
95+
def test_base_size():
2296
assert BaseSize(10, 5) == (10, 5)
2397
assert BaseSize(10, 5).landscape() == (10, 5)
2498
assert BaseSize(10, 5).portrait() == (5, 10)
2599

26100

27-
def test_parse_measurement():
28-
assert parse_measurement("12mm") == 12 * mm
29-
assert parse_measurement("12 mm") == 12 * mm
30-
assert parse_measurement("12.34 mm") == 12.34 * mm
31-
assert parse_measurement("5inch") == 5 * inch
32-
assert parse_measurement("5in") == 5 * inch
101+
def test_is_square():
102+
assert BaseSize(10, 10).is_square()
103+
assert BaseSize(5, 5).is_square()
104+
assert Size_mm(5, 5).is_square()
105+
assert Size_um(5, 5).is_square()
106+
assert Size_inch(5, 5).is_square()
107+
108+
109+
@pytest.mark.parametrize("unit", [pt, inch, cm, mm, um, pc])
110+
def test_convert_size(unit):
111+
size = PageSize(12, 34, unit)
112+
unit_str = unit.name
113+
if unit_str == "µm":
114+
unit_str = "um"
115+
assert isclose(getattr(size, unit_str)[0], 12, abs_tol=1e-8)
116+
assert isclose(getattr(size, unit_str)[1], 34, abs_tol=1e-8)
117+
118+
119+
#
120+
# def test_parse_measurement():
121+
# assert parse_measurement("12mm") == (12 * mm).as_pt()
122+
# assert parse_measurement("12 mm") == (12 * mm).as_pt()
123+
# assert parse_measurement("12.34 mm") == (12.34 * mm).as_pt()
124+
# assert parse_measurement("5inch") == (5 * inch).as_pt()
125+
# assert parse_measurement("5in") == (5 * inch).as_pt()
126+
#
127+
#
128+
# @pytest.mark.parametrize(
129+
# "size, expected",
130+
# [
131+
# (sizes.A0, (841, 1189)),
132+
# (sizes.A1, (594, 841)),
133+
# (sizes.A2, (420, 594)),
134+
# (sizes.A3, (297, 420)),
135+
# (sizes.A4, (210, 297)),
136+
# (sizes.A5, (148, 210)),
137+
# (sizes.A6, (105, 148)),
138+
# (sizes.A7, (74, 105)),
139+
# (sizes.A8, (52, 74)),
140+
# (sizes.A9, (37, 52)),
141+
# (sizes.A10, (26, 37)),
142+
# ]
143+
# )
144+
# def test_sizes(size, expected):
145+
# assert size.mm == expected
146+
#
147+
#
148+
# # TODO: tests for Unit
149+
#
150+
def test_convert_from():
151+
assert convert_from(1, pt) == 1
152+
assert convert_from(1, inch) == 72
153+
assert convert_from(1, cm) == 28.3464566929
154+
assert convert_from(1, mm) == 2.83464566929
155+
assert convert_from(1, um) == 0.00283464566929
156+
assert convert_from(1, pc) == 12
157+
158+
assert convert_from(5, pt) == 1 * 5
159+
assert convert_from(5, inch) == 72 * 5
160+
assert convert_from(5, cm) == 28.3464566929 * 5
161+
assert convert_from(5, mm) == 2.83464566929 * 5
162+
assert convert_from(5, um) == 0.00283464566929 * 5
163+
assert convert_from(5, pc) == 12 * 5
33164

34165

35166
@pytest.mark.parametrize(
36-
"size, expected",
37-
[
38-
(sizes.A0, (841, 1189)),
39-
(sizes.A1, (594, 841)),
40-
(sizes.A2, (420, 594)),
41-
(sizes.A3, (297, 420)),
42-
(sizes.A4, (210, 297)),
43-
(sizes.A5, (148, 210)),
44-
(sizes.A6, (105, 148)),
45-
(sizes.A7, (74, 105)),
46-
(sizes.A8, (52, 74)),
47-
(sizes.A9, (37, 52)),
48-
(sizes.A10, (26, 37)),
167+
"size, expected, class_", [
168+
((12, 34), PageSize(12, 34), PageSize),
169+
((12, 34), Size_mm(12, 34), Size_mm),
49170
]
50171
)
51-
def test_sizes(size, expected):
52-
assert size.mm == expected
53-
54-
55-
# TODO: tests for Unit
172+
def test_from_size(size, expected, class_):
173+
print(class_.from_size(size))
174+
assert class_.from_size(size) == expected

tox.ini

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,8 @@ namespace_packages = True
192192
193193
194194
[coverage:run]
195-
plugins = coverage_pyver_pragma
195+
plugins =
196+
coverage_pyver_pragma
196197
197198
198199
[check-wheel-contents]

0 commit comments

Comments
 (0)