Package com.github.hakko.musiccabinet.service.library

Source Code of com.github.hakko.musiccabinet.service.library.AudioTagServiceTest

package com.github.hakko.musiccabinet.service.library;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import org.jaudiotagger.tag.datatype.Artwork;
import org.joda.time.DateTime;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.github.hakko.musiccabinet.domain.model.library.File;
import com.github.hakko.musiccabinet.domain.model.library.MetaData;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
public class AudioTagServiceTest {

  @Autowired
  private AudioTagService audioTagService;
 
  @Test
  public void readsMP3Tags() throws Exception {
    java.io.File musicFile = new java.io.File(Thread.currentThread()
        .getContextClassLoader().getResource("library/boing.mp3").toURI());

    Assert.assertTrue(musicFile.exists());
    Assert.assertTrue(musicFile.canRead());
   
    File fileHandle = new File(musicFile.getParent(), musicFile.getName(),
        new DateTime(), 5717);
    audioTagService.updateMetadata(fileHandle);
   
    Assert.assertNotNull(fileHandle.getMetadata());
   
    validateTags(fileHandle.getMetadata());
  }

  /*
   * File id3v1+2.mp3 has different id3v1 and id3v2 tags. Assert v2 takes priority.
   */
  @Test
  public void prefersId3V2Tags() throws Exception {
    java.io.File musicFile = new java.io.File(Thread.currentThread()
        .getContextClassLoader().getResource("library/id3v1+2.mp3").toURI());
 
    Assert.assertTrue(musicFile.exists());
    Assert.assertTrue(musicFile.canRead());
   
    File fileHandle = new File(musicFile.getParent(), musicFile.getName(),
        new DateTime(), 5717);
    audioTagService.updateMetadata(fileHandle);
   
    Assert.assertEquals("V2 Title", fileHandle.getMetadata().getTitle());
    Assert.assertEquals("V2 Album", fileHandle.getMetadata().getAlbum());
    Assert.assertEquals("V2 Artist", fileHandle.getMetadata().getArtist());
  }

  @Test
  public void readsMp3V1TagAsISO88591() throws Exception {
    java.io.File musicFile = new java.io.File(Thread.currentThread()
        .getContextClassLoader().getResource("library/id3v1.mp3").toURI());
 
    Assert.assertTrue(musicFile.exists());
    Assert.assertTrue(musicFile.canRead());
   
    File fileHandle = new File(musicFile.getParent(), musicFile.getName(),
        new DateTime(), 5717);
    audioTagService.updateMetadata(fileHandle);
   
    Assert.assertEquals("Å", fileHandle.getMetadata().getTitle());
    Assert.assertEquals("Ä", fileHandle.getMetadata().getAlbum());
    Assert.assertEquals("Ö", fileHandle.getMetadata().getArtist());
  }

  @Test
  public void readsMp3V2TagAsUTF8() throws Exception {
    java.io.File musicFile = new java.io.File(Thread.currentThread()
        .getContextClassLoader().getResource("library/id3v2b.mp3").toURI());
 
    Assert.assertTrue(musicFile.exists());
    Assert.assertTrue(musicFile.canRead());
   
    File fileHandle = new File(musicFile.getParent(), musicFile.getName(),
        new DateTime(), 5717);
    audioTagService.updateMetadata(fileHandle);
   
    Assert.assertEquals("Title: Ǥ", fileHandle.getMetadata().getTitle());
    Assert.assertEquals("Album: ȡ", fileHandle.getMetadata().getAlbum());
    Assert.assertEquals("Artist: Ƕ", fileHandle.getMetadata().getArtist());
  }

  @Test
  public void identifiesAudioFiles() {
    Assert.assertTrue(audioTagService.isAudioFile("mp3"));
    Assert.assertTrue(audioTagService.isAudioFile("MP3"));

    Assert.assertFalse(audioTagService.isAudioFile("jpg"));
    Assert.assertFalse(audioTagService.isAudioFile("PNG"));
    Assert.assertFalse(audioTagService.isAudioFile(null));
  }
 
  @Test
  public void returnsEmbeddedArtwork() throws Exception {
    String embeddedArtworkFile = "library/media3/Artist/Embedded artwork/Embedded artwork.mp3";
    java.io.File musicFile = new java.io.File(Thread.currentThread()
        .getContextClassLoader().getResource(embeddedArtworkFile).toURI());

    Assert.assertTrue(musicFile.exists());
    Assert.assertTrue(musicFile.canRead());
   
    Artwork artwork = audioTagService.getArtwork(musicFile);
    Assert.assertNotNull(artwork);
  }
 
  private void validateTags(MetaData metaData) {
    assertEquals("Artist Name", metaData.getArtist());
    assertEquals("Album Artist", metaData.getAlbumArtist());
    assertEquals("Track Title", metaData.getTitle());
    assertEquals("Album Title", metaData.getAlbum());
    assertEquals("Genre", metaData.getGenre());
    assertEquals("Composer", metaData.getComposer());
   
    assertTrue(metaData.getYear() == (short) 2012);
    assertTrue(metaData.getTrackNr() == (short) 1);
    assertTrue(metaData.getTrackNrs() == (short) 2);
    assertTrue(metaData.getDiscNr() == (short) 3);
    assertTrue(metaData.getDiscNrs() == (short) 4);
  }

}
TOP

Related Classes of com.github.hakko.musiccabinet.service.library.AudioTagServiceTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.