/* * 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.base; import java.util.Date; import org.jajuk.JajukTestCase; /** * TODO : most of this test class should rewritten as the case we test * here is not actually possible : * Album album = new Album("1", "name", 2); * Album equal = new Album("1", "name", 2); * Album notequal = new Album("1", "name", 2); * is an impossible state as two albums with the same name must * be the same album (endorsed by the AlbumManager) * * We should also drop the direct items instantiations but use managers instead. */ public class TestAlbumComparator extends JajukTestCase { @Override protected void specificSetUp() throws Exception { } /** * Test method for {@link org.jajuk.base.AlbumComparator#AlbumComparator(int)} * . */ public final void testAlbumComparator() { new AlbumComparator(0); } /* * 0 .. genre 1 .. artist 2 .. album 3 .. year 4 .. discovery date 5 .. rate 6 * .. hits */ /** * Test method for. * * {@link org.jajuk.base.AlbumComparator#compare(org.jajuk.base.Album, org.jajuk.base.Album)} * . */ public final void testCompareGenre() { AlbumComparator compare = new AlbumComparator(0); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("1", "name", 2); // just differ in Genre album.getTracksCache().add(getTrack(album)); equal.getTracksCache().add(getTrack(album)); notequal.getTracksCache().add( new Track("2", "name2", album, new Genre("7", "name7"), new Artist("4", "name4"), 10, new Year("5", "name5"), 1, new Type("6", "name6", "ext", null, null), 3)); assertEquals(0, compare.compare(album, equal)); assertTrue(0 < compare.compare(album, notequal) || 0 > compare.compare(album, notequal)); } /** * Test compare genre2. * */ public final void testCompareGenre2() { AlbumComparator compare = new AlbumComparator(0); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("1", "name", 2); // just differ in Genre, this time we have the physical same genre Genre genre = new Genre("8", "name8"); album.getTracksCache().add(getTrack(album, genre, new Year("5", "name5"))); equal.getTracksCache().add(getTrack(album, genre, new Year("5", "name5"))); notequal.getTracksCache().add( new Track("2", "name2", album, new Genre("7", "name7"), new Artist("4", "name4"), 10, new Year("5", "name5"), 1, new Type("6", "name6", "ext", null, null), 3)); assertEquals(0, compare.compare(album, equal)); assertTrue(0 < compare.compare(album, notequal) || 0 > compare.compare(album, notequal)); } /** * Test compare genre4 album artist different. * */ public final void testCompareGenre4AlbumArtistDifferent() { AlbumComparator compare = new AlbumComparator(0); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("1", "name", 2); // just differ in Genre, this time we have the physical same genre Genre genre = new Genre("8", "name8"); album.getTracksCache().add(getTrack(album, genre, new Year("5", "name5"))); equal.getTracksCache().add(getTrack(album, genre, new Year("5", "name5"))); notequal.getTracksCache().add( new Track("2", "name2", album, new Genre("7", "name7"), new Artist("4", "name4"), 10, new Year("5", "name5"), 1, new Type("6", "name6", "ext", null, null), 3)); assertEquals(0, compare.compare(album, equal)); assertTrue(0 < compare.compare(album, notequal) || 0 > compare.compare(album, notequal)); } /** * Test compare genre3 same year. * */ public final void testCompareGenre3SameYear() { AlbumComparator compare = new AlbumComparator(0); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("1", "name", 2); // just differ in Genre, this time we have the physical same genre Genre genre = new Genre("8", "name8"); Year year = new Year("5", "name5"); album.getTracksCache().add(getTrack(album, genre, year)); equal.getTracksCache().add(getTrack(album, genre, year)); notequal.getTracksCache().add( new Track("2", "name2", album, new Genre("7", "name7"), new Artist("4", "name4"), 10, new Year("5", "name5"), 1, new Type("6", "name6", "ext", null, null), 3)); assertEquals(0, compare.compare(album, equal)); assertTrue(0 < compare.compare(album, notequal) || 0 > compare.compare(album, notequal)); } /** * Test compare artist. * */ public final void testCompareArtist() { AlbumComparator compare = new AlbumComparator(1); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("1", "name", 2); // just differ in Artist album.getTracksCache().add(getTrack(album)); equal.getTracksCache().add(getTrack(equal)); notequal.getTracksCache().add(getTrack(notequal, new Artist("5", "name5"))); /* * notequal.getTracksCache().add( new Track("2", "name2", album, new * Genre("3", "name3"), new Artist("7", "name7"), 10, new Year("5", * "name5"), 1, new Type("6", "name6", "ext", null, null), 3)); */ assertEquals(0, compare.compare(album, equal)); assertTrue(0 < compare.compare(album, notequal) || 0 > compare.compare(album, notequal)); } /** * Test compare artist same year. * */ public final void testCompareArtistSameYear() { AlbumComparator compare = new AlbumComparator(1); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("1", "name", 2); // just differ in Artist Genre genre = new Genre("8", "name8"); Year year = new Year("5", "name5"); album.getTracksCache().add(getTrack(album, genre, year)); equal.getTracksCache().add(getTrack(equal, genre, year)); notequal.getTracksCache().add(getTrack(notequal, new Artist("5", "name5"))); /* * notequal.getTracksCache().add( new Track("2", "name2", album, new * Genre("3", "name3"), new Artist("7", "name7"), 10, new Year("5", * "name5"), 1, new Type("6", "name6", "ext", null, null), 3)); */ assertEquals(0, compare.compare(album, equal)); assertTrue(0 < compare.compare(album, notequal) || 0 > compare.compare(album, notequal)); } /** * Test compare album. * */ public final void testCompareAlbum() { AlbumComparator compare = new AlbumComparator(2); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("2", "name2", 2); assertEquals(0, compare.compare(album, equal)); assertTrue(0 < compare.compare(album, notequal) || 0 > compare.compare(album, notequal)); } /** * Test compare year. * */ public final void testCompareYear() { AlbumComparator compare = new AlbumComparator(3); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("1", "name", 2); // just differ in Year album.getTracksCache().add(getTrack(album)); equal.getTracksCache().add(getTrack(album)); notequal.getTracksCache().add( new Track("2", "name2", album, new Genre("3", "name3"), new Artist("4", "name4"), 10, new Year("7", "name7"), 1, new Type("6", "name6", "ext", null, null), 3)); assertEquals(0, compare.compare(album, equal)); assertTrue(0 < compare.compare(album, notequal) || 0 > compare.compare(album, notequal)); } /** * Test compare year same year. * */ public final void testCompareYearSameYear() { AlbumComparator compare = new AlbumComparator(3); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("1", "name", 2); // just differ in Year Genre genre = new Genre("8", "name8"); Year year = new Year("5", "name5"); album.getTracksCache().add(getTrack(album, genre, year)); equal.getTracksCache().add(getTrack(album, genre, year)); notequal.getTracksCache().add( new Track("2", "name2", album, new Genre("3", "name3"), new Artist("4", "name4"), 10, new Year("7", "name7"), 1, new Type("6", "name6", "ext", null, null), 3)); assertEquals(0, compare.compare(album, equal)); assertTrue(0 < compare.compare(album, notequal) || 0 > compare.compare(album, notequal)); } /** * Test compare year same year diff artist. * */ public final void testCompareYearSameYearDiffArtist() { AlbumComparator compare = new AlbumComparator(3); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("1", "name", 2); // just differ in Year Genre genre = new Genre("8", "name8"); Year year = new Year("5", "name5"); album.getTracksCache().add(getTrack(album, genre, year)); equal.getTracksCache().add(getTrack(album, genre, year)); notequal.getTracksCache().add( new Track("2", "name2", album, new Genre("3", "name3"), new Artist("5", "name5"), 10, new Year("7", "name7"), 1, new Type("6", "name6", "ext", null, null), 3)); assertEquals(0, compare.compare(album, equal)); assertTrue(0 < compare.compare(album, notequal) || 0 > compare.compare(album, notequal)); } /** * Test compare discovery date. * */ public final void testCompareDiscoveryDate() { AlbumComparator compare = new AlbumComparator(4); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("1", "name", 2); Date date1 = new Date(); Date date2 = new Date(12345); // needs to be different to date1 // just differ in DiscoverDate album.getTracksCache().add(getTrack(album)); album.getTracksCache().get(0).setDiscoveryDate(date1); equal.getTracksCache().add(getTrack(album)); equal.getTracksCache().get(0).setDiscoveryDate(date1); notequal.getTracksCache().add(getTrack(album)); notequal.getTracksCache().get(0).setDiscoveryDate(date2); assertEquals(0, compare.compare(album, equal)); assertTrue(0 < compare.compare(album, notequal) || 0 > compare.compare(album, notequal)); } /** * Test compare rate. * */ public final void testCompareRate() { AlbumComparator compare = new AlbumComparator(5); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("1", "name", 2); // just differ in Rate album.getTracksCache().add(getTrack(album)); album.getTracksCache().get(0).setRate(3); equal.getTracksCache().add(getTrack(album)); equal.getTracksCache().get(0).setRate(3); notequal.getTracksCache().add(getTrack(album)); notequal.getTracksCache().get(0).setRate(4); assertEquals(0, compare.compare(album, equal)); assertTrue(0 > compare.compare(album, notequal)); } /** * Test compare rate gt. * */ public final void testCompareRateGT() { AlbumComparator compare = new AlbumComparator(5); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("1", "name", 2); // just differ in Rate album.getTracksCache().add(getTrack(album)); album.getTracksCache().get(0).setRate(4); equal.getTracksCache().add(getTrack(album)); equal.getTracksCache().get(0).setRate(4); notequal.getTracksCache().add(getTrack(album)); notequal.getTracksCache().get(0).setRate(3); assertEquals(0, compare.compare(album, equal)); assertTrue(0 < compare.compare(album, notequal)); } /** * Test compare hits. * */ public final void testCompareHits() { AlbumComparator compare = new AlbumComparator(6); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("1", "name", 2); // just differ in Hits album.getTracksCache().add(getTrack(album)); album.getTracksCache().get(0).setHits(3); equal.getTracksCache().add(getTrack(album)); equal.getTracksCache().get(0).setHits(3); notequal.getTracksCache().add(getTrack(album)); notequal.getTracksCache().get(0).setHits(4); assertEquals(0, compare.compare(album, equal)); assertTrue(0 > compare.compare(album, notequal)); } /** * Test compare hits gt. * */ public final void testCompareHitsGT() { AlbumComparator compare = new AlbumComparator(6); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("1", "name", 2); // just differ in Hits album.getTracksCache().add(getTrack(album)); album.getTracksCache().get(0).setHits(4); equal.getTracksCache().add(getTrack(album)); equal.getTracksCache().get(0).setHits(4); notequal.getTracksCache().add(getTrack(album)); notequal.getTracksCache().get(0).setHits(3); assertEquals(0, compare.compare(album, equal)); assertTrue(0 < compare.compare(album, notequal)); } /** * Gets the track. * * @param album * @return the track */ private Track getTrack(Album album) { return new Track("2", "name2", album, new Genre("3", "name3"), new Artist("4", "name4"), 10, new Year("5", "name5"), 1, new Type("6", "name6", "ext", null, null), 3); } /** * Gets the track. * * @param album * @param artist * @return the track */ private Track getTrack(Album album, Artist artist) { return new Track("2", "name2", album, new Genre("3", "name3"), artist, 10, new Year("5", "name5"), 1, new Type("6", "name6", "ext", null, null), 3); } /** * Gets the track. * * @param album * @param genre * @param year * @return the track */ private Track getTrack(Album album, Genre genre, Year year) { return new Track("2", "name2", album, genre, new Artist("4", "name4"), 10, year, 1, new Type( "6", "name6", "ext", null, null), 3); } /** * Test compare no track. * */ public final void testCompareNoTrack() { AlbumComparator compare = new AlbumComparator(0); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("2", "name2", 2); // without actual tracks, anything compares... assertEquals(0, compare.compare(album, equal)); assertEquals(0, compare.compare(album, notequal)); } /** * Test compare criteria outside. * */ public final void testCompareCriteriaOutside() { AlbumComparator compare = new AlbumComparator(99); Album album = new Album("1", "name", 2); Album equal = new Album("1", "name", 2); Album notequal = new Album("2", "name2", 2); // add the same type of track in all albums to not stop comparison early album.getTracksCache().add(getTrack(album)); equal.getTracksCache().add(getTrack(equal)); notequal.getTracksCache().add(getTrack(notequal)); // with invalid "criteria", anything compares assertEquals(0, compare.compare(album, equal)); assertEquals(0, compare.compare(album, notequal)); } }