package org.limewire.ui.swing.components; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.event.CellEditorListener; import javax.swing.event.ChangeEvent; import junit.framework.TestCase; /** * JUnit test case for HyperlinkCellEditorRenderer. */ public class HyperlinkCellEditorRendererTest extends TestCase { /** Instance of class being tested. */ private HyperlinkCellEditorRenderer editorRenderer; /** * Constructs a test case for the specified method name. */ public HyperlinkCellEditorRendererTest(String name) { super(name); } @Override protected void setUp() throws Exception { super.setUp(); editorRenderer = new HyperlinkCellEditorRenderer(); } @Override protected void tearDown() throws Exception { editorRenderer = null; super.tearDown(); } /** Tests constructor to accept an Action. */ public void testHyperlinkCellEditorRendererAction() { // Create test action. String name = "test"; Action action = new AbstractAction(name) { @Override public void actionPerformed(ActionEvent e) { putValue(Action.SHORT_DESCRIPTION, "done"); } }; // Create editor/renderer using action. editorRenderer = new HyperlinkCellEditorRenderer(action); // Verify editor/renderer text. String expectedReturn = name; String actualReturn = editorRenderer.getText(); assertEquals("renderer text", expectedReturn, actualReturn); // Perform action and verify. editorRenderer.doClick(); expectedReturn = "done"; actualReturn = (String) action.getValue(Action.SHORT_DESCRIPTION); assertEquals("actionPerformed", expectedReturn, actualReturn); } /** Tests method to cancel cell editing. */ public void testCancelCellEditing() { // Add cell editor listener. TestEditorListener listener = new TestEditorListener(); editorRenderer.addCellEditorListener(listener); // Cancel editing and verify. editorRenderer.cancelCellEditing(); assertTrue("cancelCellEditing", listener.isCancelled()); } /** Tests method to stop cell editing. */ public void testStopCellEditing() { // Add cell editor listener. TestEditorListener listener = new TestEditorListener(); editorRenderer.addCellEditorListener(listener); // Stop editing and verify. The current implementation always cancels // editing even when editing is stopped. editorRenderer.stopCellEditing(); assertTrue("stopCellEditing", listener.isCancelled()); } /** Tests method to get editable indicator. */ public void testIsCellEditable() { // Verify cell is always editable. assertTrue("cell editable", editorRenderer.isCellEditable(null)); } /** * Test implementation of CellEditorListener. */ private static class TestEditorListener implements CellEditorListener { private boolean cancelled = false; private boolean stopped = false; @Override public void editingCanceled(ChangeEvent e) { cancelled = true; } @Override public void editingStopped(ChangeEvent e) { stopped = true; } public boolean isCancelled() { return cancelled; } public boolean isStopped() { return stopped; } } }