/*
* 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.views;
import java.awt.Component;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.util.Set;
import javax.swing.Icon;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.tree.TreePath;
import org.jajuk.JajukTestCase;
import org.jajuk.TestHelpers;
import org.jajuk.base.Album;
import org.jajuk.base.Artist;
import org.jajuk.base.Genre;
import org.jajuk.base.Track;
import org.jajuk.base.TrackManager;
import org.jajuk.base.Year;
import org.jajuk.events.JajukEvents;
import org.jajuk.ui.actions.ActionManager;
import org.jajuk.ui.views.TracksTreeView.TracksMouseAdapter;
import org.jajuk.util.Conf;
import org.jajuk.util.Const;
public class TestTracksTreeView extends JajukTestCase {
@Override
protected void specificSetUp() throws Exception {
try {
// initialize the actions
ActionManager.getInstance();
} catch (HeadlessException e) {
// this is thrown in automated tests on Hudson/Sonar
}
}
/**
* Test method for {@link org.jajuk.ui.views.TracksTreeView#initUI()}.
*/
public final void testInitUI() {
TracksTreeView view = new TracksTreeView();
tryInitUI(view);
}
/**
* Try init ui.
*
*
* @param view
*/
private void tryInitUI(TracksTreeView view) {
try {
view.initUI();
} catch (ExceptionInInitializerError e) {
// reported on headless settings
} catch (HeadlessException e) {
// reported on headless settings
} catch (NullPointerException e) {
// sometimes reported deep inside Swing components, I could not find out
// why...
}
}
/**
* Test method for {@link org.jajuk.ui.views.TracksTreeView#populateTree()}.
*/
public final void testPopulateTree() {
TracksTreeView view = new TracksTreeView();
tryInitUI(view);
try {
view.populateTree();
} catch (NullPointerException e) {
// reported on headless settings
}
// try with different settings
Conf.setProperty(Const.CONF_LOGICAL_TREE_SORT_ORDER, "0");
try {
view.populateTree();
} catch (NullPointerException e) {
// reported on headless settings
}
Conf.setProperty(Const.CONF_LOGICAL_TREE_SORT_ORDER, "1");
try {
view.populateTree();
} catch (NullPointerException e) {
// reported on headless settings
}
Conf.setProperty(Const.CONF_LOGICAL_TREE_SORT_ORDER, "2");
try {
view.populateTree();
} catch (NullPointerException e) {
// reported on headless settings
}
Conf.setProperty(Const.CONF_LOGICAL_TREE_SORT_ORDER, "3");
try {
view.populateTree();
} catch (NullPointerException e) {
// reported on headless settings
}
Conf.setProperty(Const.CONF_LOGICAL_TREE_SORT_ORDER, "4");
try {
view.populateTree();
} catch (NullPointerException e) {
// reported on headless settings
}
Conf.setProperty(Const.CONF_LOGICAL_TREE_SORT_ORDER, "5");
try {
view.populateTree();
} catch (NullPointerException e) {
// reported on headless settings
}
Conf.setProperty(Const.CONF_LOGICAL_TREE_SORT_ORDER, "6");
try {
view.populateTree();
} catch (NullPointerException e) {
// reported on headless settings
}
Conf.setProperty(Const.CONF_LOGICAL_TREE_SORT_ORDER, "7");
try {
view.populateTree();
} catch (NullPointerException e) {
// reported on headless settings
}
}
/**
* Test method for {@link org.jajuk.ui.views.TracksTreeView#expand()}.
*/
public final void testExpand() {
TracksTreeView view = new TracksTreeView();
try {
view.expand();
} catch (NullPointerException e) {
// reported on headless settings
}
}
/**
* Test method for {@link org.jajuk.ui.views.TracksTreeView#getDesc()}.
*/
public final void testGetDesc() {
TracksTreeView view = new TracksTreeView();
assertNotNull(view.getDesc());
}
/**
* Test method for {@link org.jajuk.ui.views.TracksTreeView#TracksTreeView()}.
*/
public final void testTracksTreeView() {
new TracksTreeView();
}
/**
* Test method for.
*
* {@link org.jajuk.ui.views.TracksTreeView#getRegistrationKeys()}.
*/
public final void testGetRegistrationKeys() {
TracksTreeView view = new TracksTreeView();
Set<JajukEvents> set = view.getRegistrationKeys();
assertNotNull(set);
assertTrue(set.contains(JajukEvents.FILE_LAUNCHED));
}
/**
* Test method for.
*
* {@link org.jajuk.ui.views.TracksTreeView#populateTreeByGenre()}.
*/
public final void testPopulateTreeByGenre() {
TracksTreeView view = new TracksTreeView();
try {
view.populateTreeByGenre();
} catch (NullPointerException e) {
// reported on headless settings
}
}
/**
* Test method for.
*
* {@link org.jajuk.ui.views.TracksTreeView#populateTreeByArtist()}.
*/
public final void testPopulateTreeByArtist() {
TracksTreeView view = new TracksTreeView();
try {
view.populateTreeByArtist();
} catch (NullPointerException e) {
// reported on headless settings
}
}
/**
* Test method for.
*
* {@link org.jajuk.ui.views.TracksTreeView#populateTreeByYear()}.
*/
public final void testPopulateTreeByYear() {
TracksTreeView view = new TracksTreeView();
try {
view.populateTreeByYear();
} catch (NullPointerException e) {
// reported on headless settings
}
}
/**
* Test method for.
*
* {@link org.jajuk.ui.views.TracksTreeView#populateTreeByAlbum()}.
*/
public final void testPopulateTreeByAlbum() {
TracksTreeView view = new TracksTreeView();
try {
view.populateTreeByAlbum();
} catch (NullPointerException e) {
// reported on headless settings
}
}
/**
* Test method for.
*
* {@link org.jajuk.ui.views.TracksTreeView#populateTreeByDiscovery()}.
*/
public final void testPopulateTreeByDiscovery() {
TracksTreeView view = new TracksTreeView();
try {
view.populateTreeByDiscovery();
} catch (NullPointerException e) {
// reported on headless settings
}
}
/**
* Test method for.
*
* {@link org.jajuk.ui.views.TracksTreeView#populateTreeByRate()}.
*/
public final void testPopulateTreeByRate() {
TracksTreeView view = new TracksTreeView();
try {
view.populateTreeByRate();
} catch (NullPointerException e) {
// reported on headless settings
}
}
/**
* Test method for.
*
* {@link org.jajuk.ui.views.TracksTreeView#populateTreeByHits()}.
*/
public final void testPopulateTreeByHits() {
TracksTreeView view = new TracksTreeView();
try {
view.populateTreeByHits();
} catch (NullPointerException e) {
// reported on headless settings
}
}
/**
* Test method for.
*
* {@link org.jajuk.ui.views.TracksTreeView#actionPerformed(java.awt.event.ActionEvent)}
* .
*/
public final void testActionPerformed() {
TracksTreeView view = new TracksTreeView();
view.actionPerformed(new ActionEvent(this, 1, ""));
}
/**
* Test tracks tree selection listener.
*
*/
public final void testTracksTreeSelectionListener() {
TracksTreeView view = new TracksTreeView();
TracksTreeView.TracksTreeSelectionListener task = view.new TracksTreeSelectionListener();
try {
task.valueChanged(new TreeSelectionEvent(this, new TreePath("test"), false, null, null));
} catch (NullPointerException e) {
// reported on headless settings
}
}
/**
* Test tracks mouse adapter.
*
*/
public final void testTracksMouseAdapter() {
TracksTreeView view = new TracksTreeView();
TracksMouseAdapter ad = view.new TracksMouseAdapter(null);
assertNotNull(ad);
MouseEvent event = new MouseEvent(new Component() {
private static final long serialVersionUID = 1L;
}, 1, 2l, 3, 2, 2, 3, true);
assertTrue(event.isPopupTrigger());
try {
ad.handlePopup(event);
} catch (NullPointerException e) {
// reported on headless settings
}
// popup trigger
try {
ad.mousePressed(event);
} catch (NullPointerException e) {
// reported on headless settings
}
// normal event with CTRL is handled here
event = new MouseEvent(new Component() {
private static final long serialVersionUID = 1L;
}, 1, 2l, InputEvent.CTRL_DOWN_MASK, 2, 2, 3, false);
try {
ad.mousePressed(event);
} catch (NullPointerException e) {
// reported on headless settings
}
event = new MouseEvent(new Component() {
private static final long serialVersionUID = 1L;
}, 1, 2l, 0, 2, 2, 3, true);
try {
ad.mouseReleased(event);
} catch (NullPointerException e) {
// reported on headless settings
}
}
/**
* Test genre node.
*
*/
public final void testGenreNode() {
GenreNode ad = new GenreNode(getGenre());
assertNotNull(ad);
TestHelpers.ToStringTest(ad);
assertNotNull(ad.getGenre());
assertEquals("name", ad.getGenre().getName());
}
/**
* Gets the genre.
*
* @return the genre
*/
private Genre getGenre() {
return TestHelpers.getGenre();
}
/**
* Test artist node.
*
*/
public final void testArtistNode() {
ArtistNode ad = new ArtistNode(getArtist());
assertNotNull(ad);
TestHelpers.ToStringTest(ad);
assertNotNull(ad.getArtist());
assertEquals("name", ad.getArtist().getName());
}
/**
* Gets the artist.
*
* @return the artist
*/
private Artist getArtist() {
return TestHelpers.getArtist("name");
}
/**
* Test year node.
*
*/
public final void testYearNode() {
YearNode ad = new YearNode(getYear());
assertNotNull(ad);
TestHelpers.ToStringTest(ad);
assertNotNull(ad.getYear());
assertEquals("2000", ad.getYear().getName());
}
/**
* Gets the year.
*
* @return the year
*/
private Year getYear() {
return TestHelpers.getYear(2000);
}
/**
* Test album node.
*
*/
public final void testAlbumNode() {
AlbumNode ad = new AlbumNode(getAlbum());
assertNotNull(ad);
TestHelpers.ToStringTest(ad);
assertNotNull(ad.getAlbum());
assertEquals("name", ad.getAlbum().getName());
}
/**
* Gets the album.
*
* @return the album
*/
private Album getAlbum() {
return TestHelpers.getAlbum("name", 234);
}
/**
* Test track node.
*
*/
public final void testTrackNode() {
TrackNode ad = new TrackNode(getTrack());
assertNotNull(ad);
TestHelpers.ToStringTest(ad);
assertNotNull(ad.getTrack());
assertEquals("name", ad.getTrack().getName());
}
/**
* Gets the track.
*
* @return the track
*/
private Track getTrack() {
return TrackManager.getInstance().registerTrack("name", getAlbum(), getGenre(), getArtist(),
123, getYear(), 1, TestHelpers.getType(), 1);
}
/**
* Test discovery date node.
*
*/
public final void testDiscoveryDateNode() {
DiscoveryDateNode ad = new DiscoveryDateNode(null);
assertNotNull(ad);
}
/**
* Test tracks tree cell renderer.
*
*/
public final void testTracksTreeCellRenderer() {
TracksTreeCellRenderer ad = new TracksTreeCellRenderer();
assertNotNull(ad);
Icon icon = ad.getIcon();
// make sure we have a different icon after each call
assertNotNull(ad.getTreeCellRendererComponent(new JTree(), new GenreNode(getGenre()), true,
true, true, 1, true));
assertFalse(ad.getIcon().equals(icon));
icon = ad.getIcon();
assertNotNull(ad.getTreeCellRendererComponent(new JTree(), new ArtistNode(getArtist()), true,
true, true, 1, true));
assertFalse(icon.equals(ad.getIcon()));
icon = ad.getIcon();
assertNotNull(ad.getTreeCellRendererComponent(new JTree(), new YearNode(getYear()), true, true,
true, 1, true));
assertFalse(icon.equals(ad.getIcon()));
icon = ad.getIcon();
assertNotNull(ad.getTreeCellRendererComponent(new JTree(), new AlbumNode(getAlbum()), true,
true, true, 1, true));
assertFalse(icon.equals(ad.getIcon()));
icon = ad.getIcon();
assertNotNull(ad.getTreeCellRendererComponent(new JTree(), new TrackNode(getTrack()), true,
true, true, 1, true));
assertFalse(icon.equals(ad.getIcon()));
icon = ad.getIcon();
assertNotNull(ad.getTreeCellRendererComponent(new JTree(), new DiscoveryDateNode("str"), true,
true, true, 1, true));
assertFalse(icon.equals(ad.getIcon()));
icon = ad.getIcon();
assertNotNull(ad.getTreeCellRendererComponent(new JTree(), "unknown object", true, true, true,
1, true));
assertFalse(icon.equals(ad.getIcon()));
icon = ad.getIcon();
}
/**
* Test tracks tree expansion listener.
*
*/
public final void testTracksTreeExpansionListener() {
TracksTreeExpansionListener ad = new TracksTreeExpansionListener();
assertNotNull(ad);
{
Genre genre = getGenre();
assertNull(genre.getProperties().get(Const.XML_EXPANDED));
ad.treeExpanded(new TreeExpansionEvent("dummy", new TreePath(new GenreNode(genre))));
assertEquals(true, genre.getProperties().get(Const.XML_EXPANDED));
ad.treeCollapsed(new TreeExpansionEvent("dummy", new TreePath(new GenreNode(genre))));
assertNull(genre.getProperties().get(Const.XML_EXPANDED));
}
{
Artist genre = getArtist();
assertNull(genre.getProperties().get(Const.XML_EXPANDED));
ad.treeExpanded(new TreeExpansionEvent("dummy", new TreePath(new ArtistNode(genre))));
assertEquals(true, genre.getProperties().get(Const.XML_EXPANDED));
ad.treeCollapsed(new TreeExpansionEvent("dummy", new TreePath(new ArtistNode(genre))));
assertNull(genre.getProperties().get(Const.XML_EXPANDED));
}
{
Album genre = getAlbum();
assertNull(genre.getProperties().get(Const.XML_EXPANDED));
ad.treeExpanded(new TreeExpansionEvent("dummy", new TreePath(new AlbumNode(genre))));
assertEquals(true, genre.getProperties().get(Const.XML_EXPANDED));
ad.treeCollapsed(new TreeExpansionEvent("dummy", new TreePath(new AlbumNode(genre))));
assertNull(genre.getProperties().get(Const.XML_EXPANDED));
}
{
Year genre = getYear();
assertNull(genre.getProperties().get(Const.XML_EXPANDED));
ad.treeExpanded(new TreeExpansionEvent("dummy", new TreePath(new YearNode(genre))));
assertEquals(true, genre.getProperties().get(Const.XML_EXPANDED));
ad.treeCollapsed(new TreeExpansionEvent("dummy", new TreePath(new YearNode(genre))));
assertNull(genre.getProperties().get(Const.XML_EXPANDED));
}
}
}