]> diplodocus.org Git - flac-archive/blob - t/filenames.t
c5c1ad212f987b17366486d418f1682eaf39a771
[flac-archive] / t / filenames.t
1 use v5.12;
2 use warnings;
3
4 use Test::More tests => 14;
5
6 use FindBin;
7
8 use lib "$FindBin::Bin/..";
9
10 require 'tags.pl';
11 epg::flac::archive::tags->import('track_tags_from_disc');
12 require 'fa-encode';
13 require 'fa-mp3cd';
14 require 'flac2mp3';
15
16 is epg::flac::archive::encode::filename(
17 3,
18 {
19 DISCNUMBER => [2],
20 TITLE => ['the title'],
21 }
22 ),
23 '02-03-the_title.flac',
24 'with discnumber';
25
26 is
27 epg::flac::archive::encode::filename(1, {TITLE => ['the title']}),
28 '01-the_title.flac',
29 'without discnumber';
30
31 my $album = {
32 ARTIST => ['Marillion'],
33 ALBUM => ["An Hour Before It's Dark"],
34 DATE => ['2022-03-04'],
35 };
36 my $tracks = [
37 {
38 TITLE => ['Care'],
39 PART => ['IV. Angels On Earth'],
40 PARTNUMBER => [4],
41 },
42 {
43 TITLE => ['(silence)'],
44 },
45 {
46 TITLE => ['Murder Machines'],
47 VERSION => ['12 inch remix'],
48 },
49 {
50 TITLE => ['testing both and with leading 0'],
51 PARTNUMBER => ['04'],
52 VERSION => ['live'],
53 },
54 {
55 TITLE => ['(silence)'],
56 },
57 {
58 TITLE => ['Murder Machines'],
59 VERSION => ['12 inch remix'],
60 },
61 ];
62
63 is epg::flac::archive::encode::filename(
64 1, {epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 1)},
65 ),
66 '01-Care-4.flac',
67 'PART goes into filename, PARTNUMBER ignored';
68
69 is epg::flac::archive::encode::filename(
70 2, {epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 2)},
71 ),
72 '02-silence.flac',
73 'parens in track title omitted';
74
75 is epg::flac::archive::encode::filename(
76 3, {epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 3)},
77 ),
78 '03-Murder_Machines-12_inch_remix.flac',
79 'VERSION goes into filename';
80
81 is epg::flac::archive::encode::filename(
82 4, {epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 4)},
83 ),
84 '04-testing_both_and_with_leading_0-live-04.flac',
85 'PARTNUMBER with leading 0 and VERSION';
86
87 #
88 # fa-mp3cd
89 #
90
91 is epg::flac::archive::mp3::cd::filename(
92 {
93 epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 1),
94 TRACKNUMBER => [1]
95 }
96 ),
97 '01_Care_4.mp3',
98 'fa-mp3cd PART goes into filename, PARTNUMBER ignored';
99
100 is epg::flac::archive::mp3::cd::filename(
101 {
102 epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 2),
103 TRACKNUMBER => [2]
104 }
105 ),
106 '02_silence.mp3',
107 'fa-mp3cd parens in track title omitted';
108
109 is epg::flac::archive::mp3::cd::filename(
110 {
111 epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 3),
112 TRACKNUMBER => [3]
113 }
114 ),
115 '03_Murder_Machines_12_inch_remix.mp3',
116 'fa-mp3cd VERSION goes into filename';
117
118 is epg::flac::archive::mp3::cd::filename(
119 {
120 epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 4),
121 TRACKNUMBER => [4]
122 }
123 ),
124 '04_testing_both_and_with_leading_0_live_04.mp3',
125 'fa-mp3cd PARTNUMBER with leading 0 and VERSION';
126
127 #
128 # flac2mp3
129 #
130
131 is epg::flac::archive::mp3::filename(
132 {
133 epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 1),
134 TRACKNUMBER => [1]
135 }
136 ),
137 'Marillion_An_Hour_Before_It-s_Dark_01_Care_4.mp3',
138 'flac2mp3 PART goes into filename, PARTNUMBER ignored';
139
140 is epg::flac::archive::mp3::filename(
141 {
142 epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 2),
143 TRACKNUMBER => [2]
144 }
145 ),
146 'Marillion_An_Hour_Before_It-s_Dark_02_silence.mp3',
147 'flac2mp3 parens in track title omitted';
148
149 is epg::flac::archive::mp3::filename(
150 {
151 epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 3),
152 TRACKNUMBER => [3]
153 }
154 ),
155 'Marillion_An_Hour_Before_It-s_Dark_03_Murder_Machines_12_inch_remix.mp3',
156 'flac2mp3 VERSION goes into filename';
157
158 is epg::flac::archive::mp3::filename(
159 {
160 epg::flac::archive::tags::track_tags_from_disc($album, $tracks, 4),
161 TRACKNUMBER => [4]
162 }
163 ),
164 'Marillion_An_Hour_Before_It-s_Dark_04_testing_both_and_with_leading_0_live_04.mp3',
165 'flac2mp3 PARTNUMBER with leading 0 and VERSION';