Skip to content

Commit 691b537

Browse files
committed
Add tests for TagVars & TagVar
1 parent 7de52db commit 691b537

1 file changed

Lines changed: 106 additions & 0 deletions

File tree

test/test_util_tags.py

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,121 @@
2222
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
2323

2424

25+
import unittest.mock as mock
26+
2527
from test.picardtestcase import PicardTestCase
2628

2729
from picard.util.tags import (
30+
TagVar,
31+
TagVars,
2832
display_tag_name,
2933
parse_comment_tag,
3034
parse_subtag,
3135
)
3236

3337

38+
class TagVarsTest(PicardTestCase):
39+
40+
def setUp(self):
41+
self.tagvar_only_sd = TagVar('only_sd', shortdesc='only_sd_shortdesc')
42+
self.tagvar_sd_ld = TagVar('sd_ld', shortdesc='sd_ld_shortdesc', longdesc='sd_ld_longdesc')
43+
self.tagvar_hidden = TagVar('hidden', is_hidden=True)
44+
self.tagvar_notag = TagVar('notag', is_tag=False)
45+
self.tagvar_nodesc = TagVar('nodesc')
46+
47+
def test_tagvars_len(self):
48+
tagvars = TagVars(
49+
self.tagvar_only_sd,
50+
self.tagvar_sd_ld,
51+
)
52+
self.assertEqual(len(tagvars), 2)
53+
54+
def test_tagvars_append(self):
55+
tagvars = TagVars()
56+
tagvar = TagVar('extra')
57+
tagvars.append(tagvar)
58+
self.assertEqual(tagvars[-1], tagvar)
59+
60+
def test_tagvars_pop(self):
61+
tagvars = TagVars(
62+
self.tagvar_only_sd,
63+
self.tagvar_sd_ld,
64+
)
65+
self.assertEqual(self.tagvar_sd_ld, tagvars.pop(1))
66+
self.assertEqual(self.tagvar_only_sd, tagvars.pop())
67+
self.assertEqual(len(tagvars), 0)
68+
69+
def test_tagvars_extend(self):
70+
tagvars = TagVars(self.tagvar_only_sd)
71+
tagvars.extend(TagVars(self.tagvar_sd_ld))
72+
self.assertEqual(self.tagvar_only_sd, tagvars[0])
73+
self.assertEqual(self.tagvar_sd_ld, tagvars[1])
74+
self.assertEqual(len(tagvars), 2)
75+
76+
def test_tagvars_del(self):
77+
tagvars = TagVars(self.tagvar_only_sd)
78+
self.assertEqual(len(tagvars), 1)
79+
del tagvars[0]
80+
self.assertEqual(len(tagvars), 0)
81+
82+
def test_tagvars_dupe(self):
83+
tagvars = TagVars(self.tagvar_only_sd)
84+
with self.assertRaises(ValueError):
85+
tagvars.append(self.tagvar_only_sd)
86+
87+
def test_tagvars_names(self):
88+
tagvars = TagVars(
89+
self.tagvar_only_sd,
90+
self.tagvar_sd_ld,
91+
self.tagvar_hidden,
92+
self.tagvar_notag,
93+
)
94+
names = tuple(tagvars.names())
95+
self.assertEqual(names, ('only_sd', 'sd_ld', '~hidden', 'notag'))
96+
97+
def test_tagvars_names_selector(self):
98+
tagvars = TagVars(
99+
self.tagvar_only_sd,
100+
self.tagvar_sd_ld,
101+
self.tagvar_hidden,
102+
self.tagvar_notag,
103+
)
104+
names = tuple(tagvars.names(selector=lambda tv: tv.is_tag))
105+
self.assertEqual(names, ('only_sd', 'sd_ld', '~hidden'))
106+
107+
names = tuple(tagvars.names(selector=lambda tv: tv.is_tag and not tv.is_hidden))
108+
self.assertEqual(names, ('only_sd', 'sd_ld'))
109+
110+
def test_tagvars_desc(self):
111+
tagvars = TagVars(
112+
self.tagvar_nodesc,
113+
self.tagvar_only_sd,
114+
self.tagvar_sd_ld,
115+
)
116+
shortdescs = [tv.shortdesc for tv in tagvars]
117+
self.assertEqual(shortdescs, ['nodesc', 'only_sd_shortdesc', 'sd_ld_shortdesc'])
118+
longdescs = [tv.longdesc for tv in tagvars]
119+
self.assertEqual(longdescs, ['nodesc', 'only_sd_shortdesc', 'sd_ld_longdesc'])
120+
121+
def test_tagvars_display_name(self):
122+
tagvars = TagVars(
123+
self.tagvar_nodesc,
124+
self.tagvar_only_sd,
125+
self.tagvar_sd_ld,
126+
)
127+
self.assertEqual(tagvars.display_name('unknown'), 'unknown')
128+
self.assertEqual(tagvars.display_name('nodesc'), 'nodesc')
129+
self.assertEqual(tagvars.display_name('nodesc:'), 'nodesc')
130+
self.assertEqual(tagvars.display_name('nodesc:xxx'), 'nodesc [xxx]')
131+
132+
self.assertEqual(tagvars.display_name('only_sd'), 'only_sd_shortdesc')
133+
self.assertEqual(tagvars.display_name('only_sd:'), 'only_sd_shortdesc')
134+
self.assertEqual(tagvars.display_name('only_sd:xxx'), 'only_sd_shortdesc [xxx]')
135+
136+
with mock.patch("picard.util.tags._", return_value='translated'):
137+
self.assertEqual(tagvars.display_name('only_sd'), 'translated')
138+
139+
34140
class UtilTagsTest(PicardTestCase):
35141
def test_display_tag_name(self):
36142
self.assertEqual('Artist', display_tag_name('artist'))

0 commit comments

Comments
 (0)