|
6 | 6 |
|
7 | 7 | """ |
8 | 8 |
|
| 9 | +# stdlib |
| 10 | +from math import isclose |
| 11 | + |
9 | 12 | # 3rd party |
10 | 13 | import pytest |
11 | 14 |
|
12 | 15 | # 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 | + |
14 | 85 |
|
| 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() |
15 | 93 |
|
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(): |
22 | 96 | assert BaseSize(10, 5) == (10, 5) |
23 | 97 | assert BaseSize(10, 5).landscape() == (10, 5) |
24 | 98 | assert BaseSize(10, 5).portrait() == (5, 10) |
25 | 99 |
|
26 | 100 |
|
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 |
33 | 164 |
|
34 | 165 |
|
35 | 166 | @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), |
49 | 170 | ] |
50 | 171 | ) |
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 |
0 commit comments