1515 * You should have received a copy of the GNU General Public License
1616 * along with this program. If not, see <https://www.gnu.org/licenses/>.
1717 */
18-
18+
1919package org.oxycblt.musikr.tag.parse
2020
21- import org.junit.runner.RunWith
22- import org.robolectric.RobolectricTestRunner
23- import org.robolectric.annotation.Config
24-
2521import org.junit.Assert.assertEquals
2622import org.junit.Assert.assertFalse
2723import org.junit.Assert.assertNull
2824import org.junit.Assert.assertTrue
2925import org.junit.Test
26+ import org.junit.runner.RunWith
3027import org.oxycblt.musikr.metadata.Metadata
3128import org.oxycblt.musikr.metadata.Properties
32- import org.oxycblt.musikr.tag.Date
29+ import org.robolectric.RobolectricTestRunner
30+ import org.robolectric.annotation.Config
3331
3432@RunWith(RobolectricTestRunner ::class )
3533@Config(sdk = [30 ])
@@ -50,11 +48,11 @@ class TagFieldsTest {
5048 assertEquals(" Xiph Title" , metadata.name())
5149
5250 // Test priority (xiph > mp4 > id3v2)
53- metadata = createTestMetadata(
54- id3v2Tags = mapOf ( " TIT2 " to listOf ( " ID3 Title " )),
55- mp4Tags = mapOf (" ©nam " to listOf (" MP4 Title" )),
56- xiphTags = mapOf (" TITLE " to listOf (" Xiph Title" ))
57- )
51+ metadata =
52+ createTestMetadata(
53+ id3v2Tags = mapOf (" TIT2 " to listOf (" ID3 Title" )),
54+ mp4Tags = mapOf (" ©nam " to listOf (" MP4 Title" )),
55+ xiphTags = mapOf ( " TITLE " to listOf ( " Xiph Title " )) )
5856 assertEquals(" Xiph Title" , metadata.name())
5957 }
6058
@@ -73,21 +71,15 @@ class TagFieldsTest {
7371 assertEquals(7 , metadata.track())
7472
7573 // Test Xiph format
76- metadata = createTestMetadata(
77- xiphTags = mapOf (
78- " TRACKNUMBER" to listOf (" 9" ),
79- " TOTALTRACKS" to listOf (" 15" )
80- )
81- )
74+ metadata =
75+ createTestMetadata(
76+ xiphTags = mapOf (" TRACKNUMBER" to listOf (" 9" ), " TOTALTRACKS" to listOf (" 15" )))
8277 assertEquals(9 , metadata.track())
8378
8479 // Test Xiph alternative total tracks
85- metadata = createTestMetadata(
86- xiphTags = mapOf (
87- " TRACKNUMBER" to listOf (" 8" ),
88- " TRACKTOTAL" to listOf (" 16" )
89- )
90- )
80+ metadata =
81+ createTestMetadata(
82+ xiphTags = mapOf (" TRACKNUMBER" to listOf (" 8" ), " TRACKTOTAL" to listOf (" 16" )))
9183 assertEquals(8 , metadata.track())
9284 }
9385
@@ -102,21 +94,15 @@ class TagFieldsTest {
10294 assertEquals(1 , metadata.disc())
10395
10496 // Test Xiph format
105- metadata = createTestMetadata(
106- xiphTags = mapOf (
107- " DISCNUMBER" to listOf (" 3" ),
108- " TOTALDISCS" to listOf (" 4" )
109- )
110- )
97+ metadata =
98+ createTestMetadata(
99+ xiphTags = mapOf (" DISCNUMBER" to listOf (" 3" ), " TOTALDISCS" to listOf (" 4" )))
111100 assertEquals(3 , metadata.disc())
112101
113102 // Test Xiph alternative total discs
114- metadata = createTestMetadata(
115- xiphTags = mapOf (
116- " DISCNUMBER" to listOf (" 2" ),
117- " DISCTOTAL" to listOf (" 5" )
118- )
119- )
103+ metadata =
104+ createTestMetadata(
105+ xiphTags = mapOf (" DISCNUMBER" to listOf (" 2" ), " DISCTOTAL" to listOf (" 5" )))
120106 assertEquals(2 , metadata.disc())
121107 }
122108
@@ -129,10 +115,10 @@ class TagFieldsTest {
129115 assertEquals(" Rarities" , metadata.subtitle())
130116
131117 // Test priority
132- metadata = createTestMetadata(
133- id3v2Tags = mapOf ( " TSST " to listOf ( " ID3 Subtitle " )),
134- xiphTags = mapOf (" DISCSUBTITLE " to listOf (" Xiph Subtitle" ))
135- )
118+ metadata =
119+ createTestMetadata(
120+ id3v2Tags = mapOf (" TSST " to listOf (" ID3 Subtitle" )),
121+ xiphTags = mapOf ( " DISCSUBTITLE " to listOf ( " Xiph Subtitle " )) )
136122 assertEquals(" Xiph Subtitle" , metadata.subtitle())
137123 }
138124
@@ -155,12 +141,10 @@ class TagFieldsTest {
155141 assertEquals(" 2021-12-25" , metadata.date().toString())
156142
157143 // Test date priority (ORIGINALDATE > DATE)
158- metadata = createTestMetadata(
159- xiphTags = mapOf (
160- " DATE" to listOf (" 2023-01-01" ),
161- " ORIGINALDATE" to listOf (" 2021-01-01" )
162- )
163- )
144+ metadata =
145+ createTestMetadata(
146+ xiphTags =
147+ mapOf (" DATE" to listOf (" 2023-01-01" ), " ORIGINALDATE" to listOf (" 2021-01-01" )))
164148 assertEquals(" 2021-01-01" , metadata.date().toString())
165149
166150 // Test MP4 date
@@ -171,13 +155,14 @@ class TagFieldsTest {
171155 @Test
172156 fun metadata_id3v23Date () {
173157 // Test ID3v2.3 date components
174- val metadata = createTestMetadata(
175- id3v2Tags = mapOf (
176- " TYER" to listOf (" 2019" ),
177- " TDAT" to listOf (" 0523" ), // May 23
178- " TIME" to listOf (" 2145" ) // 21:45
179- )
180- )
158+ val metadata =
159+ createTestMetadata(
160+ id3v2Tags =
161+ mapOf (
162+ " TYER" to listOf (" 2019" ),
163+ " TDAT" to listOf (" 0523" ), // May 23
164+ " TIME" to listOf (" 2145" ) // 21:45
165+ ))
181166 val date = metadata.date()
182167 assertEquals(2019 , date?.year)
183168 assertEquals(5 , date?.month)
@@ -188,13 +173,13 @@ class TagFieldsTest {
188173
189174 @Test
190175 fun metadata_albumInfo () {
191- val metadata = createTestMetadata(
192- id3v2Tags = mapOf (
193- " TALB " to listOf ( " Album Name " ),
194- " TSOA " to listOf ( " Sort Album Name " ),
195- " TXXX:RELEASETYPE " to listOf (" compilation " )
196- )
197- )
176+ val metadata =
177+ createTestMetadata (
178+ id3v2Tags =
179+ mapOf (
180+ " TALB " to listOf (" Album Name " ),
181+ " TSOA " to listOf ( " Sort Album Name " ),
182+ " TXXX:RELEASETYPE " to listOf ( " compilation " )) )
198183
199184 assertEquals(" Album Name" , metadata.albumName())
200185 assertEquals(" Sort Album Name" , metadata.albumSortName())
@@ -203,14 +188,14 @@ class TagFieldsTest {
203188
204189 @Test
205190 fun metadata_artistInfo () {
206- val metadata = createTestMetadata(
207- id3v2Tags = mapOf (
208- " TPE1 " to listOf ( " Artist 1 " ),
209- " TPE2 " to listOf ( " Album Artist 1 " ),
210- " TSOP " to listOf (" Artist 1 Sort " ),
211- " TSO2 " to listOf (" Album Artist 1 Sort " )
212- )
213- )
191+ val metadata =
192+ createTestMetadata (
193+ id3v2Tags =
194+ mapOf (
195+ " TPE1 " to listOf (" Artist 1" ),
196+ " TPE2 " to listOf (" Album Artist 1" ),
197+ " TSOP " to listOf ( " Artist 1 Sort " ),
198+ " TSO2 " to listOf ( " Album Artist 1 Sort " )) )
214199
215200 assertEquals(listOf (" Artist 1" ), metadata.artistNames())
216201 assertEquals(listOf (" Album Artist 1" ), metadata.albumArtistNames())
@@ -221,23 +206,24 @@ class TagFieldsTest {
221206 @Test
222207 fun metadata_musicBrainzIds () {
223208 // Test different formats and variants of MusicBrainz identifiers
224- val metadata = createTestMetadata(
225- xiphTags = mapOf (
226- " MUSICBRAINZ_RELEASETRACKID " to listOf ( " track-mb-id " ),
227- " MUSICBRAINZ_ALBUMID " to listOf ( " album-mb-id " )
228- )
229- )
209+ val metadata =
210+ createTestMetadata (
211+ xiphTags =
212+ mapOf (
213+ " MUSICBRAINZ_RELEASETRACKID " to listOf ( " track-mb-id " ),
214+ " MUSICBRAINZ_ALBUMID " to listOf ( " album-mb-id " )) )
230215
231216 assertEquals(" track-mb-id" , metadata.musicBrainzId())
232217 assertEquals(" album-mb-id" , metadata.albumMusicBrainzId())
233218
234219 // Test Apple iTunes MP4 variants
235- val metadata2 = createTestMetadata(
236- mp4Tags = mapOf (
237- " ----:COM.APPLE.ITUNES:MUSICBRAINZ RELEASE TRACK ID" to listOf (" track-mb-id-2" ),
238- " ----:COM.APPLE.ITUNES:MUSICBRAINZ ALBUM ID" to listOf (" album-mb-id-2" )
239- )
240- )
220+ val metadata2 =
221+ createTestMetadata(
222+ mp4Tags =
223+ mapOf (
224+ " ----:COM.APPLE.ITUNES:MUSICBRAINZ RELEASE TRACK ID" to
225+ listOf (" track-mb-id-2" ),
226+ " ----:COM.APPLE.ITUNES:MUSICBRAINZ ALBUM ID" to listOf (" album-mb-id-2" )))
241227
242228 assertEquals(" track-mb-id-2" , metadata2.musicBrainzId())
243229 assertEquals(" album-mb-id-2" , metadata2.albumMusicBrainzId())
@@ -246,76 +232,53 @@ class TagFieldsTest {
246232 @Test
247233 fun metadata_isCompilation () {
248234 // Test various compilation flags
249- var metadata = createTestMetadata(
250- id3v2Tags = mapOf (" TCMP" to listOf (" 1" ))
251- )
235+ var metadata = createTestMetadata(id3v2Tags = mapOf (" TCMP" to listOf (" 1" )))
252236 assertTrue(metadata.isCompilation())
253237
254- metadata = createTestMetadata(
255- id3v2Tags = mapOf (" TCMP" to listOf (" 0" ))
256- )
238+ metadata = createTestMetadata(id3v2Tags = mapOf (" TCMP" to listOf (" 0" )))
257239 assertFalse(metadata.isCompilation())
258240
259- metadata = createTestMetadata(
260- xiphTags = mapOf (" COMPILATION" to listOf (" 1" ))
261- )
241+ metadata = createTestMetadata(xiphTags = mapOf (" COMPILATION" to listOf (" 1" )))
262242 assertTrue(metadata.isCompilation())
263243
264- metadata = createTestMetadata(
265- mp4Tags = mapOf (" cpil" to listOf (" 1" ))
266- )
244+ metadata = createTestMetadata(mp4Tags = mapOf (" cpil" to listOf (" 1" )))
267245 assertTrue(metadata.isCompilation())
268246
269247 // Test invalid value
270- metadata = createTestMetadata(
271- id3v2Tags = mapOf (" TCMP" to listOf (" yes" ))
272- )
248+ metadata = createTestMetadata(id3v2Tags = mapOf (" TCMP" to listOf (" yes" )))
273249 assertFalse(metadata.isCompilation())
274250 }
275251
276252 @Test
277253 fun metadata_replayGain () {
278254 // Test ReplayGain track adjustment
279- var metadata = createTestMetadata(
280- xiphTags = mapOf (" REPLAYGAIN_TRACK_GAIN" to listOf (" -5.5 dB" ))
281- )
255+ var metadata =
256+ createTestMetadata(xiphTags = mapOf (" REPLAYGAIN_TRACK_GAIN" to listOf (" -5.5 dB" )))
282257 assertEquals(- 5.5f , metadata.replayGainTrackAdjustment())
283258
284259 // Test ReplayGain album adjustment
285- metadata = createTestMetadata(
286- xiphTags = mapOf (" REPLAYGAIN_ALBUM_GAIN" to listOf (" 3.2 dB" ))
287- )
260+ metadata = createTestMetadata(xiphTags = mapOf (" REPLAYGAIN_ALBUM_GAIN" to listOf (" 3.2 dB" )))
288261 assertEquals(3.2f , metadata.replayGainAlbumAdjustment())
289262
290263 // Test R128 track gain
291- metadata = createTestMetadata(
292- xiphTags = mapOf (" R128_TRACK_GAIN" to listOf (" -2560" ))
293- )
264+ metadata = createTestMetadata(xiphTags = mapOf (" R128_TRACK_GAIN" to listOf (" -2560" )))
294265 // R128 is converted to match ReplayGain scale (-2560/256 + 5 = -5.0)
295266 assertEquals(- 5.0f , metadata.replayGainTrackAdjustment())
296267
297268 // Test zero value
298- metadata = createTestMetadata(
299- xiphTags = mapOf (" REPLAYGAIN_TRACK_GAIN" to listOf (" 0.0 dB" ))
300- )
269+ metadata = createTestMetadata(xiphTags = mapOf (" REPLAYGAIN_TRACK_GAIN" to listOf (" 0.0 dB" )))
301270 assertNull(metadata.replayGainTrackAdjustment())
302271 }
303272
304273 @Test
305274 fun metadata_genreNames () {
306- var metadata = createTestMetadata(
307- id3v2Tags = mapOf (" TCON" to listOf (" Rock" , " Electronic" ))
308- )
275+ var metadata = createTestMetadata(id3v2Tags = mapOf (" TCON" to listOf (" Rock" , " Electronic" )))
309276 assertEquals(listOf (" Rock" , " Electronic" ), metadata.genreNames())
310277
311- metadata = createTestMetadata(
312- mp4Tags = mapOf (" ©gen" to listOf (" Hip Hop" , " Jazz" ))
313- )
278+ metadata = createTestMetadata(mp4Tags = mapOf (" ©gen" to listOf (" Hip Hop" , " Jazz" )))
314279 assertEquals(listOf (" Hip Hop" , " Jazz" ), metadata.genreNames())
315280
316- metadata = createTestMetadata(
317- xiphTags = mapOf (" GENRE" to listOf (" Classical" , " Ambient" ))
318- )
281+ metadata = createTestMetadata(xiphTags = mapOf (" GENRE" to listOf (" Classical" , " Ambient" )))
319282 assertEquals(listOf (" Classical" , " Ambient" ), metadata.genreNames())
320283 }
321284
@@ -332,4 +295,4 @@ class TagFieldsTest {
332295 val properties = Properties (mimeType, durationMs, bitrateKbps, sampleRateHz)
333296 return Metadata (id3v2Tags, xiphTags, mp4Tags, cover, properties)
334297 }
335- }
298+ }
0 commit comments