/* * Copyright (c) 2008, SQL Power Group Inc. * * This file is part of SQL Power Library. * * SQL Power Library 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 3 of the License, or * (at your option) any later version. * * SQL Power Library 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, see <http://www.gnu.org/licenses/>. */ package ca.sqlpower.sql; import javax.swing.undo.UndoManager; import junit.framework.TestCase; public class PlDotIniListenersTest extends TestCase { DataSourceCollection<SPDataSource> pld = new PlDotIni(); JDBCDataSource dbcs = new JDBCDataSource(pld); @Override protected void setUp() throws Exception { dbcs.setDisplayName("Goofus"); } /* * Test method for 'ca.sqlpower.architect.PlDotIni.addDataSource(SPDataSource)' * Test it without any listeners. */ public void testAddDataSource() { assertEquals(0, pld.getConnections().size()); pld.addDataSource(dbcs); assertEquals(1, pld.getConnections().size()); try { pld.addDataSource(dbcs); // should fail! fail("Didn't fail to add a second copy!"); } catch (IllegalArgumentException e) { System.out.println("Caught expected " + e); } } /* * Test method for 'ca.sqlpower.architect.PlDotIni.mergeDataSource(SPDataSource)' */ public void testMergeDataSource() { pld.addDataSource(dbcs); dbcs.getParentType().setJdbcDriver("mock.Driver"); pld.mergeDataSource(dbcs); } /* * Test method for 'ca.sqlpower.architect.PlDotIni.removeDataSource(SPDataSource)' */ public void testRemoveDataSource() { assertEquals(0, pld.getConnections().size()); pld.addDataSource(dbcs); assertEquals(1, pld.getConnections().size()); assertSame(dbcs, pld.getConnections().get(0)); pld.removeDataSource(dbcs); assertEquals(0, pld.getConnections().size()); } DatabaseListChangeEvent addNotified; DatabaseListChangeEvent removeNotified; DatabaseListChangeListener liszt = new DatabaseListChangeListener() { public void databaseAdded(DatabaseListChangeEvent e) { addNotified = e; } public void databaseRemoved(DatabaseListChangeEvent e) { removeNotified = e; } }; /* * Test method for 'ca.sqlpower.architect.PlDotIni.addListener(DatabaseListChangeListener)' */ public void testAddListener() { pld.addDatabaseListChangeListener(liszt); assertNull(addNotified); pld.addDataSource(dbcs); assertNotNull(addNotified); System.out.println(addNotified); } /* * Test method for 'ca.sqlpower.architect.PlDotIni.removeListener(DatabaseListChangeListener)' */ public void testRemoveListener() { } public void testUndoAddDSType() { UndoManager manager = new UndoManager(); pld.addUndoableEditListener(manager); JDBCDataSourceType type = new JDBCDataSourceType(); pld.addDataSourceType(type); assertTrue(manager.canUndo()); assertEquals(1, pld.getDataSourceTypes().size()); manager.undo(); assertTrue(manager.canRedo()); assertTrue(pld.getDataSourceTypes().isEmpty()); } public void testUndoRemoveDSType() { UndoManager manager = new UndoManager(); JDBCDataSourceType type = new JDBCDataSourceType(); pld.addDataSourceType(type); pld.addUndoableEditListener(manager); assertFalse(manager.canUndo()); assertEquals(1, pld.getDataSourceTypes().size()); pld.removeDataSourceType(type); assertTrue(manager.canUndo()); assertTrue(pld.getDataSourceTypes().isEmpty()); manager.undo(); assertEquals(1, pld.getDataSourceTypes().size()); assertTrue(manager.canRedo()); assertEquals(type, pld.getDataSourceTypes().get(0)); } }