/* * 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 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.GenreManager; import org.jajuk.base.Track; import org.jajuk.base.TrackManager; import org.jajuk.base.Type; import org.jajuk.base.Year; import org.jajuk.services.startup.StartupCollectionService; import org.jajuk.util.Const; /** * . */ public class TestAmbienceDigitalDJ extends JajukTestCase { /** * Test method for {@link org.jajuk.services.dj.AmbienceDigitalDJ#toXML()}. */ public final void testToXML() { AmbienceDigitalDJ dj = new AmbienceDigitalDJ("3"); assertTrue(StringUtils.isNotBlank(dj.toXML())); // try to parse the resulting XML XMLUtils.getDocument(dj.toXML()); // set an Ambience GenreManager.getInstance().registerGenre("mystyle"); dj.setAmbience(new Ambience("5", "ambience", new String[] { "mystyle" })); // try to parse the resulting XML XMLUtils.getDocument(dj.toXML()); } /** * Test method for. * * @throws Exception the exception * {@link org.jajuk.services.dj.AmbienceDigitalDJ#generatePlaylist()}. */ public final void testGeneratePlaylist() throws Exception { StartupCollectionService.registerItemManagers(); AmbienceDigitalDJ dj = new AmbienceDigitalDJ("4"); // empty without Ambience set assertEquals(0, dj.generatePlaylist().size()); // set an Ambience Genre genre = GenreManager.getInstance().registerGenre("mystyle"); dj.setAmbience(new Ambience("5", "ambience", new String[] { "mystyle" })); getFile(6, genre); // assert a few conditions to find out why this test fails sometimes when // run in combination with others assertFalse(dj.isTrackUnicity()); assertTrue(FileManager.getInstance().getGlobalShufflePlaylist().size() > 0); assertTrue(dj .getAmbience() .getGenres() .contains(FileManager.getInstance().getGlobalShufflePlaylist().get(0).getTrack().getGenre())); assertEquals(Const.MIN_TRACKS_NUMBER_WITHOUT_UNICITY, dj.generatePlaylist().size()); // once again with "unicity" dj.setTrackUnicity(true); assertEquals(1, dj.generatePlaylist().size()); } /** * Gets the file. * * @param i * @param genre * @return the file * @throws Exception the exception */ private File getFile(int i, Genre genre) throws Exception { Album album = TestHelpers.getAlbum("myalbum", 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); // IPlayerImpl imp = new MockPlayer(); // Class<IPlayerImpl> cl = (Class<IPlayerImpl>) imp.getClass(); Type type = TestHelpers.getType(); Track track = TrackManager.getInstance().registerTrack("name", album, genre, artist, 120, year, 1, type, 1); Device device = TestHelpers.getDevice(); device.mount(true); Directory dir = DirectoryManager.getInstance().registerDirectory(device); return FileManager.getInstance().registerFile(Integer.valueOf(i).toString(), "test.tst", dir, track, 120, 70); } /** * Test method for. * * {@link org.jajuk.services.dj.AmbienceDigitalDJ#AmbienceDigitalDJ(java.lang.String)} * . */ public final void testAmbienceDigitalDJ() { new AmbienceDigitalDJ("9"); } /** * Test method for. * * {@link org.jajuk.services.dj.AmbienceDigitalDJ#getAmbience()}. */ public final void testGetAndSetAmbience() { AmbienceDigitalDJ dj = new AmbienceDigitalDJ("4"); // empty without Ambience set assertNull(dj.getAmbience()); // set an Ambience GenreManager.getInstance().registerGenre("mystyle"); dj.setAmbience(new Ambience("5", "ambience", new String[] { "mystyle" })); assertNotNull(dj.getAmbience()); } /** * Test method for. * * {@link org.jajuk.services.dj.AmbienceDigitalDJ#setAmbience(org.jajuk.services.dj.Ambience)} * . */ public final void testSetAmbience() { // tested above } }