/* * Jajuk * Copyright (C) The Jajuk Team * http://jajuk.info * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ package org.jajuk.services.dj; import ext.services.xml.XMLUtils; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.jajuk.JajukTestCase; import org.jajuk.TestHelpers; import org.jajuk.base.Album; import org.jajuk.base.Artist; import org.jajuk.base.Device; import org.jajuk.base.Directory; import org.jajuk.base.DirectoryManager; import org.jajuk.base.File; import org.jajuk.base.FileManager; import org.jajuk.base.Genre; import org.jajuk.base.Track; import org.jajuk.base.TrackManager; import org.jajuk.base.Type; import org.jajuk.base.Year; import org.jajuk.util.Const; import org.w3c.dom.Document; /** * . */ public class TestDigitalDJ extends JajukTestCase { @Override protected void specificSetUp() throws Exception { } /** * Test method for {@link org.jajuk.services.dj.DigitalDJ#hashCode()}. */ public final void testHashCode() { DigitalDJ dj = new AmbienceDigitalDJ("3"); dj.setName("ambience1"); DigitalDJ equ = new AmbienceDigitalDJ("3"); equ.setName("ambience1"); TestHelpers.HashCodeTest(dj, equ); } /** * Test method for. * * {@link org.jajuk.services.dj.DigitalDJ#DigitalDJ(java.lang.String)}. */ public final void testDigitalDJ() { DigitalDJ dj = new AmbienceDigitalDJ("3"); assertNotNull(dj); } /** * Test method for {@link org.jajuk.services.dj.DigitalDJ#toString()}. */ public final void testToString() { DigitalDJ dj = new AmbienceDigitalDJ("3"); dj.setName("ambience1"); TestHelpers.ToStringTest(dj); // also test null values dj = new AmbienceDigitalDJ(null); dj.setName(null); TestHelpers.ToStringTest(dj); } /** * Test method for. * * {@link org.jajuk.services.dj.DigitalDJ#compareTo(org.jajuk.services.dj.DigitalDJ)} * . */ public final void testCompareTo() { DigitalDJ dj = new AmbienceDigitalDJ("3"); dj.setName("ambience1"); DigitalDJ equ = new AmbienceDigitalDJ("3"); equ.setName("ambience1"); DigitalDJ notequ = new AmbienceDigitalDJ("3"); notequ.setName("other"); // only compares on name TestHelpers.CompareToTest(dj, equ, notequ); } /** * Test method for {@link org.jajuk.services.dj.DigitalDJ#toXML()}. */ public final void testToXML() { DigitalDJ dj = new AmbienceDigitalDJ("3"); dj.setName("ambience1"); // abstract in DigitalDJ anyway, so no need to test this in detail here... assertTrue(dj.toXML(), StringUtils.isNotBlank(dj.toXML())); } /** * Test method for. * * {@link org.jajuk.services.dj.DigitalDJ#toXMLGeneralParameters()}. */ public final void testToXMLGeneralParameters() { DigitalDJ dj = new AmbienceDigitalDJ("3"); dj.setName("ambience1"); assertTrue(dj.toXMLGeneralParameters(), StringUtils.isNotBlank(dj.toXMLGeneralParameters())); // test xml-validity, need to add closing tag to build complete xml String xml = dj.toXMLGeneralParameters() + "</" + Const.XML_DJ_DJ + ">"; Document document = XMLUtils.getDocument(xml); assertNotNull(document); } /** * Test method for. * * @throws Exception the exception * {@link org.jajuk.services.dj.DigitalDJ#filterFilesByRate(java.util.List)}. */ public final void testFilterFilesByRate() throws Exception { DigitalDJ dj = new AmbienceDigitalDJ("3"); dj.setName("ambience1"); List<File> files = new ArrayList<File>(); File file = getFile(1); file.getTrack().setProperty(Const.XML_TRACK_RATE, 1l); files.add(file); file = getFile(2); file.getTrack().setProperty(Const.XML_TRACK_RATE, 26l); files.add(file); file = getFile(3); file.getTrack().setProperty(Const.XML_TRACK_RATE, 51l); files.add(file); // without rating level set nothing happens to the list dj.filterFilesByRate(files); assertEquals(3, files.size()); // set rating level and see if tracks are removed dj.setRatingLevel(2); dj.filterFilesByRate(files); assertEquals(1, files.size()); } /** * Test filter files by max track. * * * @throws Exception the exception */ public final void testFilterFilesByMaxTrack() throws Exception { DigitalDJ dj = new AmbienceDigitalDJ("3"); dj.setName("ambience1"); List<File> files = new ArrayList<File>(); File file = getFile(1); file.getTrack().setProperty(Const.XML_TRACK_RATE, 1l); files.add(file); file = getFile(2); file.getTrack().setProperty(Const.XML_TRACK_RATE, 26l); files.add(file); file = getFile(3); file.getTrack().setProperty(Const.XML_TRACK_RATE, 51l); files.add(file); // with max-tracks -1 nothing is cut off dj.setMaxTracks(-1); dj.filterFilesByMaxTrack(files); assertEquals(3, files.size()); // nothing happens if max is higher dj.setMaxTracks(4); dj.filterFilesByMaxTrack(files); assertEquals(3, files.size()); // set max level and see if tracks are removed dj.setMaxTracks(2); dj.filterFilesByMaxTrack(files); assertEquals(2, files.size()); } /** * Gets the file. * * @param i * @return the file * @throws Exception the exception */ private File getFile(int i) throws Exception { Genre genre = TestHelpers.getGenre(); Album album = TestHelpers.getAlbum("name" + i, 0); album.setProperty(Const.XML_ALBUM_DISCOVERED_COVER, Const.COVER_NONE); // don't read covers for // this test Artist artist = TestHelpers.getArtist("name"); Year year = TestHelpers.getYear(2000); Type type = TestHelpers.getType(); Track track = TrackManager.getInstance().registerTrack("name", album, genre, artist, 120, year, 1, type, 1); Device device = TestHelpers.getDevice(); if (!device.isMounted()) { device.mount(true); } Directory dir = DirectoryManager.getInstance().registerDirectory(device); return FileManager.getInstance().registerFile("test.tst", dir, track, 120, 70); } /** * Test method for {@link org.jajuk.services.dj.DigitalDJ#getName()}. */ public final void testGetAndSetName() { DigitalDJ dj = new AmbienceDigitalDJ("3"); assertNull(dj.getName()); dj.setName("ambience1"); assertEquals("ambience1", dj.getName()); } /** * Test method for. * * {@link org.jajuk.services.dj.DigitalDJ#equals(java.lang.Object)}. */ public final void testEqualsObject() { DigitalDJ dj = new AmbienceDigitalDJ("3"); dj.setName("ambience1"); DigitalDJ equ = new AmbienceDigitalDJ("3"); equ.setName("ambience1"); DigitalDJ notequ = new AmbienceDigitalDJ("3"); notequ.setName("other"); // only compares on name TestHelpers.EqualsTest(dj, equ, notequ); } /** * Test method for. * * {@link org.jajuk.services.dj.DigitalDJ#setName(java.lang.String)}. */ public final void testSetName() { // tested above } /** * Test method for {@link org.jajuk.services.dj.DigitalDJ#getFadingDuration()} * . */ public final void testGetAndSetFadingDuration() { DigitalDJ dj = new AmbienceDigitalDJ("3"); dj.setName("ambience1"); assertEquals(0, dj.getFadingDuration()); dj.setFadingDuration(3); assertEquals(3, dj.getFadingDuration()); } /** * Test method for. * * {@link org.jajuk.services.dj.DigitalDJ#setFadingDuration(int)}. */ public final void testSetFadingDuration() { // tested above } /** * Test method for {@link org.jajuk.services.dj.DigitalDJ#getRatingLevel()}. */ public final void testGetAndSetRatingLevel() { DigitalDJ dj = new AmbienceDigitalDJ("3"); dj.setName("ambience1"); assertEquals(0, dj.getRatingLevel()); dj.setRatingLevel(3); assertEquals(3, dj.getRatingLevel()); } /** * Test method for {@link org.jajuk.services.dj.DigitalDJ#setRatingLevel(int)} * . */ public final void testSetRatingLevel() { // tested above } /** * Test method for {@link org.jajuk.services.dj.DigitalDJ#generatePlaylist()}. */ public final void testGeneratePlaylist() { DigitalDJ dj = new AmbienceDigitalDJ("3"); dj.setName("ambience1"); // abstract method, do not check result here dj.generatePlaylist(); } /** * Test method for {@link org.jajuk.services.dj.DigitalDJ#getID()}. */ public final void testGetID() { DigitalDJ dj = new AmbienceDigitalDJ("3"); dj.setName("ambience1"); assertEquals("3", dj.getID()); } /** * Test method for {@link org.jajuk.services.dj.DigitalDJ#isTrackUnicity()}. */ public final void testIsAndSetTrackUnicity() { DigitalDJ dj = new AmbienceDigitalDJ("3"); dj.setName("ambience1"); assertFalse(dj.isTrackUnicity()); dj.setTrackUnicity(true); assertTrue(dj.isTrackUnicity()); } /** * Test method for. * * {@link org.jajuk.services.dj.DigitalDJ#setTrackUnicity(boolean)}. */ public final void testSetTrackUnicity() { // tested above } /** * Test method for {@link org.jajuk.services.dj.DigitalDJ#getRatingLevel()}. */ public final void testGetAndSetMaxTracks() { DigitalDJ dj = new AmbienceDigitalDJ("3"); dj.setName("ambience1"); assertEquals(-1, dj.getMaxTracks()); dj.setMaxTracks(3); assertEquals(3, dj.getMaxTracks()); } /** * Test method for {@link org.jajuk.services.dj.DigitalDJ#setRatingLevel(int)} * . */ public final void testSetMaxTracks() { // tested above } }