Skip to content

Commit 8f396b8

Browse files
committed
add full set of DesignAxisModel tests
1 parent ae28b52 commit 8f396b8

File tree

2 files changed

+112
-21
lines changed

2 files changed

+112
-21
lines changed

tests/test_models.py

Lines changed: 0 additions & 21 deletions
This file was deleted.

tests/test_models_designaxis.py

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
from pathlib import Path
2+
3+
from PyQt5.QtWidgets import QTableView
4+
5+
from slice.models import DesignAxisModel, FontModel
6+
7+
8+
def get_font_model():
9+
return FontModel(Path("tests/assets/fonts/Recursive-VF.subset.ttf").resolve())
10+
11+
12+
def test_font_model():
13+
fm = FontModel("testpath")
14+
assert fm.fontpath == "testpath"
15+
16+
17+
def test_designaxis_model_default(qtbot, qtmodeltester):
18+
tableview = QTableView()
19+
model = DesignAxisModel()
20+
tableview.setModel(model)
21+
qtbot.addWidget(tableview)
22+
# check model with default instantiation
23+
qtmodeltester.check(model)
24+
25+
26+
def test_designaxis_model_filled(qtbot, qtmodeltester):
27+
tableview = QTableView()
28+
model = DesignAxisModel()
29+
tableview.setModel(model)
30+
qtbot.addWidget(tableview)
31+
model.load_font(get_font_model())
32+
33+
# test with qtmodeltester
34+
qtmodeltester.check(model)
35+
36+
# confirm that font data loaded appropriately
37+
assert model._h_header == ["(Min, Max) [Default]", "Instance Values"]
38+
assert model.ordered_axis_tags == ["MONO", "CASL", "wght", "slnt", "CRSV"]
39+
assert model._v_header == ["MONO", "CASL", "wght", "slnt", "CRSV"]
40+
assert model.fvar_axes == {
41+
"MONO": [0.0, 0.0, 1.0],
42+
"CASL": [0.0, 0.0, 1.0],
43+
"wght": [300.0, 300.0, 1000.0],
44+
"slnt": [-15.0, 0.0, 0.0],
45+
"CRSV": [0.0, 0.5, 1.0],
46+
}
47+
assert model._data == [
48+
["(0.0, 1.0) [0.0]", ""],
49+
["(0.0, 1.0) [0.0]", ""],
50+
["(300.0, 1000.0) [300.0]", ""],
51+
["(-15.0, 0.0) [0.0]", ""],
52+
["(0.0, 1.0) [0.5]", ""],
53+
]
54+
55+
56+
def test_designaxis_model_get_instance_data(qtbot):
57+
tableview = QTableView()
58+
model = DesignAxisModel()
59+
tableview.setModel(model)
60+
qtbot.addWidget(tableview)
61+
model.load_font(get_font_model())
62+
63+
# without user entered definitions, we should get default
64+
# axis values
65+
assert model.get_instance_data() == {
66+
"MONO": 0.0,
67+
"CASL": 0.0,
68+
"wght": 300.0,
69+
"slnt": 0.0,
70+
"CRSV": 0.5,
71+
}
72+
73+
# simulate update of model data with user input
74+
# and check again to confirm that it is present
75+
model._data[0][1] = "1.0"
76+
model._data[1][1] = "1.0"
77+
model._data[2][1] = "1000.0"
78+
model._data[3][1] = "-15.0"
79+
model._data[4][1] = "1.0"
80+
model.layoutChanged.emit()
81+
82+
assert model.get_instance_data() == {
83+
"MONO": 1.0,
84+
"CASL": 1.0,
85+
"wght": 1000.0,
86+
"slnt": -15.0,
87+
"CRSV": 1.0,
88+
}
89+
90+
91+
def test_designaxis_model_get_number_of_axes(qtbot):
92+
tableview = QTableView()
93+
model = DesignAxisModel()
94+
tableview.setModel(model)
95+
qtbot.addWidget(tableview)
96+
model.load_font(get_font_model())
97+
98+
assert model.get_number_of_axes() == 5
99+
100+
101+
def test_designaxis_model_get_default_axis_value(qtbot):
102+
tableview = QTableView()
103+
model = DesignAxisModel()
104+
tableview.setModel(model)
105+
qtbot.addWidget(tableview)
106+
model.load_font(get_font_model())
107+
108+
assert model.get_default_axis_value("MONO") == 0.0
109+
assert model.get_default_axis_value("CASL") == 0.0
110+
assert model.get_default_axis_value("wght") == 300.0
111+
assert model.get_default_axis_value("slnt") == 0.0
112+
assert model.get_default_axis_value("CRSV") == 0.5

0 commit comments

Comments
 (0)