/* * 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.ui.actions; import java.util.List; import org.jajuk.JajukTestCase; import org.jajuk.TestHelpers; import org.jajuk.base.Album; import org.jajuk.base.AlbumArtist; import org.jajuk.base.AlbumArtistManager; import org.jajuk.base.Artist; import org.jajuk.base.Directory; 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.util.Const; /** * Test find dups action. */ public class TestFindDuplicateTracksAction extends JajukTestCase { Type type; Artist artist; Album album; Genre genre; org.jajuk.base.Year year; FindDuplicateTracksAction action; Directory dir; AlbumArtist albumArtist; @Override public void specificSetUp() throws Exception { // Populate tracks and files dir = TestHelpers.getDirectory(); dir.getDevice().mount(false); type = TestHelpers.getType(); artist = TestHelpers.getArtist(); album = TestHelpers.getAlbum(); genre = TestHelpers.getGenre(); year = TestHelpers.getYear(); action = new FindDuplicateTracksAction(); albumArtist = AlbumArtistManager.getInstance().registerAlbumArtist(Const.UNKNOWN_ARTIST); } /** * Test method for. * * {@link org.jajuk.ui.actions.FindDuplicateTracksAction#perform(java.awt.event.ActionEvent)} * . * Test 1 : none dups */ public void testPopulateDups1() { Track track11 = TrackManager.getInstance().registerTrack("track11", album, genre, artist, 10l, year, 1l, type, 1l); track11.setAlbumArtist(albumArtist); FileManager.getInstance().registerFile("file11", dir, track11, 10, 128); Track track12 = TrackManager.getInstance().registerTrack("track12", album, genre, artist, 10l, year, 1l, type, 1l); track12.setAlbumArtist(albumArtist); FileManager.getInstance().registerFile("file12", dir, track12, 10, 128); Track track21 = TrackManager.getInstance().registerTrack("track21", album, genre, artist, 10l, year, 1l, type, 1l); track21.setAlbumArtist(albumArtist); FileManager.getInstance().registerFile("file21", dir, track21, 10, 218); Track track22 = TrackManager.getInstance().registerTrack("track22", album, genre, artist, 10l, year, 1l, type, 1l); track22.setAlbumArtist(albumArtist); FileManager.getInstance().registerFile("file22", dir, track22, 10, 128); action.populateDups(); List<List<File>> dups = action.duplicateTracksList; assertTrue(dups.size() == 0); } /** * Test method for. * * {@link org.jajuk.ui.actions.FindDuplicateTracksAction#perform(java.awt.event.ActionEvent)} * . * Test 2 : multi-files track : filex1 and filex2 are in the same track */ public void testPopulateDups2() { Track track11 = TrackManager.getInstance().registerTrack("track11", album, genre, artist, 10l, year, 1l, type, 1l); track11.setAlbumArtist(albumArtist); FileManager.getInstance().registerFile("file11", dir, track11, 10, 128); FileManager.getInstance().registerFile("file12", dir, track11, 10, 128); Track track21 = TrackManager.getInstance().registerTrack("track21", album, genre, artist, 10l, year, 1l, type, 1l); track21.setAlbumArtist(albumArtist); FileManager.getInstance().registerFile("file21", dir, track21, 10, 218); FileManager.getInstance().registerFile("file22", dir, track21, 10, 128); action.populateDups(); List<List<File>> dups = action.duplicateTracksList; assertTrue(dups.size() == 2); List<File> dup0 = dups.get(0); assertTrue(dup0.size() == 2); List<File> dup1 = dups.get(1); assertTrue(dup1.size() == 2); } /** * Test method for. * * {@link org.jajuk.ui.actions.FindDuplicateTracksAction#perform(java.awt.event.ActionEvent)} * . * Test 3 : single dup : track11 and track12 have fuzzy match */ public void testPopulateDups3() { Track track11 = TrackManager.getInstance().registerTrack("track", album, genre, artist, 10l, year, 1l, type, 1l); track11.setAlbumArtist(albumArtist); FileManager.getInstance().registerFile("file11", dir, track11, 10, 128); Track track12 = TrackManager.getInstance().registerTrack("trAck", album, genre, artist, 10l, year, 1l, type, 1l); track12.setAlbumArtist(albumArtist); FileManager.getInstance().registerFile("file12", dir, track12, 10, 128); action.populateDups(); List<List<File>> dups = action.duplicateTracksList; assertTrue(dups.size() == 1); List<File> dup0 = dups.get(0); assertTrue(dup0.size() == 2); } /** * Test method for. * * {@link org.jajuk.ui.actions.FindDuplicateTracksAction#perform(java.awt.event.ActionEvent)} * . * Test 4 : mix : file11/file12 have the same track : track1, * file21/file22 have the same track : track2, * track1 =~ track2 */ public void testPopulateDups4() { Track track1 = TrackManager.getInstance().registerTrack("track", album, genre, artist, 10l, year, 1l, type, 1l); track1.setAlbumArtist(albumArtist); FileManager.getInstance().registerFile("file11", dir, track1, 10, 128); FileManager.getInstance().registerFile("file12", dir, track1, 10, 128); Track track2 = TrackManager.getInstance().registerTrack("trAck", album, genre, artist, 10l, year, 1l, type, 1l); track2.setAlbumArtist(albumArtist); FileManager.getInstance().registerFile("file21", dir, track2, 10, 128); FileManager.getInstance().registerFile("file22", dir, track2, 10, 128); action.populateDups(); List<List<File>> dups = action.duplicateTracksList; assertTrue(dups.size() == 1); List<File> dup0 = dups.get(0); assertTrue(dup0.size() == 4); } /** * Test method for. * * {@link org.jajuk.ui.actions.FindDuplicateTracksAction#perform(java.awt.event.ActionEvent)} * . * Test 5 : file11/file12 have the same track : track1, * file21/file22 have different tracks ; track21 and track 21, * track1 =~ track21 != track22 */ public void testPopulateDups5() { Track track1 = TrackManager.getInstance().registerTrack("track", album, genre, artist, 10l, year, 1l, type, 1l); track1.setAlbumArtist(albumArtist); FileManager.getInstance().registerFile("file11", dir, track1, 10, 128); FileManager.getInstance().registerFile("file12", dir, track1, 10, 128); Track track21 = TrackManager.getInstance().registerTrack("trAck", album, genre, artist, 10l, year, 1l, type, 1l); track21.setAlbumArtist(albumArtist); FileManager.getInstance().registerFile("file21", dir, track21, 10, 128); Track track22 = TrackManager.getInstance().registerTrack("trAck2", album, genre, artist, 10l, year, 1l, type, 1l); track22.setAlbumArtist(albumArtist); FileManager.getInstance().registerFile("file22", dir, track22, 10, 128); action.populateDups(); List<List<File>> dups = action.duplicateTracksList; assertTrue(dups.size() == 1); List<File> dup0 = dups.get(0); assertTrue(dup0.size() == 3); } }