/*
* Rapid Beans Framework: ApplicationTest.java
*
* Copyright Martin Bluemel, 2008
*
* Nov 27, 2005
*/
package org.rapidbeans.presentation;
import java.io.File;
import java.util.Collection;
import java.util.Iterator;
import java.util.Locale;
import java.util.Properties;
import javax.swing.JMenuItem;
import junit.framework.TestCase;
import org.rapidbeans.core.common.RapidBeansLocale;
import org.rapidbeans.core.type.TypeRapidBean;
import org.rapidbeans.datasource.Document;
import org.rapidbeans.presentation.config.ApplicationGuiType;
import org.rapidbeans.presentation.config.ConfigApplication;
import org.rapidbeans.presentation.config.swing.ConfigApplicationSwing;
import org.rapidbeans.presentation.settings.swing.ApplicationLnfTypeSwing;
import org.rapidbeans.presentation.swing.MenuItemSwing;
import org.rapidbeans.presentation.swing.PresentationSwingTestHelper;
import org.rapidbeans.service.Action;
/**
* Unit tests for class Length.
*
* @author Martin Bluemel
*/
public final class ApplicationTest extends TestCase {
/**
* Test method for constructor Application()'.
*/
public void testBBClient() {
TestClient app = new TestClient();
assertNotNull(app);
assertEquals(0, app.getLocales().size());
}
/**
* Test method for initialization of default values'.
*/
public void testBBClientPropsDefault() {
TestClient app = new TestClient();
assertNotNull(app);
ConfigApplication config = new ConfigApplication();
app.setConfiguration(config);
assertEquals("Application", app.getConfiguration().getName());
assertEquals(ApplicationGuiType.swing, app.getConfiguration().getGuitype());
}
/**
* Test load an Application configuration.
*/
public void testLoadInstance() {
ApplicationManager.start(null, "../org.rapidbeans/testdata/rapidclubadmin/config/Application.xml",
new TestClient() {
@Override
public Properties getOptions() {
return new Properties();
}
public boolean getTestMode() {
return true;
}
});
TestClient app = (TestClient) ApplicationManager.getApplication();
assertEquals("Test", app.getConfiguration().getName());
assertSame(ApplicationGuiType.swing, app.getConfiguration().getGuitype());
assertSame(ApplicationLnfTypeSwing.getInstance("metal"),
((ConfigApplicationSwing) app.getConfiguration()).getLookandfeel());
Collection<RapidBeansLocale> locales = app.getLocales();
assertEquals(1, locales.size());
Iterator<RapidBeansLocale> iter1 = locales.iterator();
RapidBeansLocale locale = iter1.next();
assertEquals("en", locale.getName());
assertEquals(Locale.ENGLISH, locale.getLocale());
assertEquals("File", locale.getStringGui("mainwindow.menubar.file.label"));
assertEquals("en", app.getCurrentLocale().getName());
locale = app.getCurrentLocale();
assertEquals("en", locale.getName());
MainWindow mainWindow = app.getMainwindow();
assertEquals(800, mainWindow.getWidth());
assertEquals(500, mainWindow.getHeight());
// does not work for the rapid beans framework test
// assertEquals("Application Test Application", ((JFrame)
// mainWindow.getWidget()).getTitle());
Menubar menubar = mainWindow.getMenubar();
Collection<Submenu> menus = menubar.getMenus();
assertEquals(3, menus.size());
Iterator<Submenu> iter = menus.iterator();
Submenu menu = iter.next();
assertEquals("file", menu.getName());
assertEquals("File", ((JMenuItem) menu.getWidget()).getText());
Iterator<MenuEntry> iter2 = menu.getMenuentrys().iterator();
iter2.next(); // load
iter2.next(); // save
MenuItem itemQuit = (MenuItem) iter2.next();
assertEquals("quit", itemQuit.getName());
Action action = itemQuit.getAction();
assertEquals("org.rapidbeans.service.ActionQuit", action.getClassname());
menu = iter.next();
assertEquals("edit", menu.getName());
menu = iter.next();
assertEquals("test", menu.getName());
Iterator<MenuEntry> iter3 = menu.getMenuentrys().iterator();
iter3.next();
Submenu submenu2 = (Submenu) iter3.next();
assertEquals("test2", submenu2.getName());
Iterator<MenuEntry> iter4 = submenu2.getMenuentrys().iterator();
iter4.next();
Submenu submenu22 = (Submenu) iter4.next();
assertEquals("test22", submenu22.getName());
Iterator<MenuEntry> iter5 = submenu22.getMenuentrys().iterator();
MenuItem item221 = (MenuItem) iter5.next();
assertTrue(item221 instanceof MenuItemSwing);
assertEquals("test221", item221.getName());
MenuItemSwing item222 = (MenuItemSwing) iter5.next();
assertEquals("test222", item222.getName());
// does not work for the rapid beans framework test
// assertEquals("Test 222", ((JMenuItem)
// item222.getWidget()).getText());
}
/**
* Test method for setType() normal.
*/
public void testSetType() {
TestClient app = new TestClient();
ConfigApplication config = new ConfigApplication();
app.setConfiguration(config);
app.getConfiguration().setName("Hugo");
assertEquals("Hugo", app.getConfiguration().getName());
}
/**
* Test loading the same document twice
*/
public void testViewDocumentSameTwice() {
try {
Application client = PresentationSwingTestHelper.getTestClient();
assertNotNull(client);
Document doc1 = new Document(TypeRapidBean.forName(ConfigApplication.class.getName()), new File(
"../org.rapidbeans/testdata/rapidclubadmin/config/Application.xml"));
assertTrue(doc1.getName().endsWith("/org.rapidbeans/testdata/rapidclubadmin/config/Application.xml"));
DocumentView view1 = client.openDocumentView(doc1, null, null);
Document doc2 = new Document(TypeRapidBean.forName(ConfigApplication.class.getName()), new File(
"../org.rapidbeans/testdata/rapidclubadmin/config/Application.xml"));
DocumentView view2 = client.openDocumentView(doc2, null, null);
assertSame(view1, view2);
} finally {
PresentationSwingTestHelper.releaseTestClient();
}
}
/**
* Test loading two documents with same filenames from different folders
*/
public void testViewDocumentFromFileTwoDifferentSameFilename() {
try {
Application client = PresentationSwingTestHelper.getTestClient();
assertNotNull(client);
Document doc1 = new Document(TypeRapidBean.forName(ConfigApplication.class.getName()), new File(
"../org.rapidbeans/testdata/rapidclubadmin/config/Application.xml"));
assertTrue(doc1.getName().endsWith("/org.rapidbeans/testdata/rapidclubadmin/config/Application.xml"));
client.openDocumentView(doc1, null, null);
Document doc2 = new Document(TypeRapidBean.forName(ConfigApplication.class.getName()), new File(
"../org.rapidbeans/testdata/rapidclubadmin/config/subfolder/Application.xml"));
assertTrue(doc2.getName().endsWith(
"/org.rapidbeans/testdata/rapidclubadmin/config/subfolder/Application.xml"));
client.openDocumentView(doc2, null, null);
} finally {
PresentationSwingTestHelper.releaseTestClient();
}
}
}