-
Notifications
You must be signed in to change notification settings - Fork 3
/
test_fields.py
105 lines (94 loc) · 3.38 KB
/
test_fields.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
"""Test submodule “rename.py”."""
from __future__ import annotations
import os
import re
from pathlib import Path
from mscxyz import utils
from mscxyz.fields import FieldsManager
class TestClassFieldsManager:
def test_property_names(self, fields: FieldsManager) -> None:
assert fields.names == (
"title",
"subtitle",
"composer",
"lyricist",
"vbox_title",
"vbox_subtitle",
"vbox_composer",
"vbox_lyricist",
"metatag_arranger",
"metatag_audio_com_url",
"metatag_composer",
"metatag_copyright",
"metatag_creation_date",
"metatag_lyricist",
"metatag_movement_number",
"metatag_movement_title",
"metatag_msc_version",
"metatag_platform",
"metatag_poet",
"metatag_source",
"metatag_source_revision_id",
"metatag_subtitle",
"metatag_translator",
"metatag_work_number",
"metatag_work_title",
"version",
"version_major",
"program_version",
"program_revision",
"path",
"backup_file",
"json_file",
"dirname",
"filename",
"basename",
"extension",
)
def test_method_export_json(self, fields: FieldsManager) -> None:
result_path: Path = fields.export_json()
assert result_path.exists()
json: str = utils.read_file(result_path)
assert '"composer": "Composer"' in json
assert '"basename": "score"' in json
def test_method_export_to_dict(self, fields: FieldsManager) -> None:
result = fields.export_to_dict()
for key in result:
value = result[key]
if isinstance(value, str) and value.startswith(os.path.sep):
value = re.sub(f"^{os.path.sep}.*{os.path.sep}", "/../..", value)
result[key] = value
if "dirname" in result:
result["dirname"] = "dir"
assert result == {
"title": "Title",
"composer": "Composer",
"vbox_title": "Title",
"vbox_composer": "Composer",
"metatag_composer": "Composer",
"metatag_msc_version": "4.20",
"metatag_platform": "Linux",
"metatag_work_title": "Title",
"version": 4.20,
"version_major": 4,
"program_version": "4.2.0",
"program_revision": "eb8d33c",
"path": "/../..score.mscz",
"backup_file": "/../..score_bak.mscz",
"json_file": "/../..score.json",
"dirname": "dir",
"basename": "score",
"extension": "mscz",
"filename": "score.mscz",
}
def test_method_get(self, fields: FieldsManager) -> None:
assert fields.get("title") == "Title"
def test_method_set(self, fields: FieldsManager) -> None:
new = "New Title"
fields.set("title", new)
assert fields.get("title") == new
def test_distribute(self, fields: FieldsManager) -> None:
fields.set("title", "We are the champions - Queen")
fields.distribute("title,composer", "$title - $composer")
assert fields.get("title") == "We are the champions"
assert fields.get("composer") == "Queen"