/*
* Digital Audio Access Protocol (DAAP) Library
* Copyright (C) 2004-2010 Roger Kapsi
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.ardverk.daap.tests;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.ardverk.daap.Database;
import org.ardverk.daap.Library;
import org.ardverk.daap.Playlist;
import org.ardverk.daap.Song;
import org.ardverk.daap.Transaction;
import org.ardverk.daap.Txn;
import org.ardverk.daap.chunks.impl.SongDataKind;
import org.ardverk.daap.chunks.impl.SongEqPreset;
import org.ardverk.daap.chunks.impl.SongFormat;
import org.ardverk.daap.chunks.impl.SongGenre;
import org.ardverk.daap.chunks.impl.SongUserRating;
public class SongTest extends TestCase {
public static TestSuite suite() {
return new TestSuite(SongTest.class);
}
private Library library;
private Database database;
private Playlist playlist;
protected void setUp() throws Exception {
super.setUp();
}
public void testAttributes() {
performTest(null);
}
public void testTxnAttributes() {
performTest(new DummyTransaction());
}
private void performTest(Transaction txn) {
Song song = new Song("Song");
assertEquals(song.getName(), "Song");
song.setAlbum(txn, "Album");
System.out.println("TEST: " + song.getAlbum() + ": " + txn);
assertEquals(song.getAlbum(), "Album");
song.setArtist(txn, "Artist");
assertEquals(song.getArtist(), "Artist");
song.setBeatsPerMinute(txn, 123);
assertEquals(song.getBeatsPerMinute(), 123);
song.setBitrate(txn, 192);
assertEquals(song.getBitrate(), 192);
song.setComment(txn, "Comment");
assertEquals(song.getComment(), "Comment");
song.setCompilation(txn, true);
assertEquals(song.isCompilation(), true);
song.setCompilation(txn, false);
assertEquals(song.isCompilation(), false);
song.setComposer(txn, "Composer");
assertEquals(song.getComposer(), "Composer");
song.setDataKind(txn, SongDataKind.DAAP_STREAM);
assertEquals(song.getDataKind(), SongDataKind.DAAP_STREAM);
song.setDataUrl(txn, "http://www.somewhere.ee");
assertEquals(song.getDataUrl(), "http://www.somewhere.ee");
song.setDateAdded(txn, 9999999);
assertEquals(song.getDateAdded(), 9999999);
song.setDateModified(txn, 6666666);
assertEquals(song.getDateModified(), 6666666);
song.setDescription(txn, "Description");
assertEquals(song.getDescription(), "Description");
song.setDisabled(txn, true);
assertEquals(song.isDisabled(), true);
song.setDisabled(txn, false);
assertEquals(song.isDisabled(), false);
song.setDiscCount(txn, 100);
assertEquals(song.getDiscCount(), 100);
song.setDiscNumber(txn, 99);
assertEquals(song.getDiscNumber(), 99);
song.setEqPreset(txn, SongEqPreset.LATIN);
assertEquals(song.getEqPreset(), SongEqPreset.LATIN);
song.setFormat(txn, SongFormat.M4A);
assertEquals(song.getFormat(), SongFormat.M4A);
song.setGenre(txn, SongGenre.NEW_AGE);
assertEquals(song.getGenre(), SongGenre.NEW_AGE);
song.setGrouping(txn, "Grouping");
assertEquals(song.getGrouping(), "Grouping");
song.setRelativeVolume(txn, 50);
assertEquals(song.getRelativeVolume(), 50);
song.setSampleRate(txn, 44100);
assertEquals(song.getSampleRate(), 44100);
song.setSize(txn, 6 * 1024 * 1024);
assertEquals(song.getSize(), 6 * 1024 * 1024);
song.setStartTime(txn, 3333333);
assertEquals(song.getStartTime(), 3333333);
song.setStopTime(txn, 4444444);
assertEquals(song.getStopTime(), 4444444);
song.setTime(txn, 5555555);
assertEquals(song.getTime(), 5555555);
song.setTrackCount(txn, 88);
assertEquals(song.getTrackCount(), 88);
song.setTrackNumber(txn, 87);
assertEquals(song.getTrackNumber(), 87);
song.setUserRating(txn, SongUserRating.FOUR);
assertEquals(song.getUserRating(), SongUserRating.FOUR);
song.setYear(txn, 2004);
assertEquals(song.getYear(), 2004);
song.setITMSArtistId(txn, 123);
assertEquals(song.getITMSArtistId(), 123);
song.setITMSComposerId(txn, 333);
assertEquals(song.getITMSComposerId(), 333);
song.setITMSGenreId(txn, 444);
assertEquals(song.getITMSGenreId(), 444);
song.setITMSPlaylistId(txn, 888);
assertEquals(song.getITMSPlaylistId(), 888);
song.setITMSSongId(txn, 666);
assertEquals(song.getITMSSongId(), 666);
song.setITMSStorefrontId(txn, 111);
assertEquals(song.getITMSStrorefrontId(), 111);
song.setCodecType(txn, 741);
assertEquals(song.getCodecType(), 741);
song.setCodecSubtype(txn, 369);
assertEquals(song.getCodecSubtype(), 369);
song.setNormVolume(txn, 58442);
assertEquals(song.getNormVolume(), 58442);
song.setPodcast(txn, true);
assertEquals(song.isPodcast(), true);
song.setDescription(txn, "Description");
assertEquals(song.getDescription(), "Description");
song.setContentRating(txn, 210);
assertEquals(song.getContentRating(), 210);
song.setContentDescription(txn, "ContentDescription");
assertEquals(song.getContentDescription(), "ContentDescription");
song.setKeywords(txn, "Keywords");
assertEquals(song.getKeywords(), "Keywords");
song.setLongDescription(txn, "LongDescription");
assertEquals(song.getLongDescription(), "LongDescription");
song.setHasVideo(txn, true);
assertEquals(song.hasVideo(), true);
song.setHasVideo(txn, false);
assertEquals(song.hasVideo(), false);
}
private class DummyTransaction extends Transaction {
public DummyTransaction() {
super(null);
}
protected synchronized void addTxn(Object obj, Txn txn) {
txn.commit(this);
}
protected void close() {
}
public synchronized void commit() {
}
public synchronized boolean isOpen() {
return true;
}
public synchronized void rollback() {
}
}
}