/*******************************************************************************
* Copyright (c) 2007, 2014 compeople AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* compeople AG - initial API and implementation
*******************************************************************************/
package org.eclipse.riena.navigation.ui.swt.views;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.riena.core.test.RienaTestCase;
import org.eclipse.riena.core.test.collect.UITestCase;
import org.eclipse.riena.core.wire.Wire;
import org.eclipse.riena.navigation.IModuleGroupNode;
import org.eclipse.riena.navigation.IModuleNode;
import org.eclipse.riena.navigation.model.ModuleGroupNode;
import org.eclipse.riena.navigation.model.ModuleNode;
import org.eclipse.riena.navigation.ui.controllers.ModuleController;
import org.eclipse.riena.navigation.ui.controllers.ModuleGroupController;
/**
* Testcase for NavigationViewFactory
*/
@UITestCase
public class NavigationViewFactoryTest extends RienaTestCase {
public void testNormalWithoutInjectionBehaviour() {
final NavigationViewFactory viewFactory = new NavigationViewFactory();
final ModuleView moduleView = viewFactory.createModuleView(new Shell());
assertNotNull(moduleView);
assertTrue(moduleView.getClass() == ModuleView.class);
final ModuleGroupView moduleGroupView = viewFactory.createModuleGroupView(new Shell());
assertNotNull(moduleGroupView);
assertTrue(moduleGroupView.getClass() == ModuleGroupView.class);
}
public void testNormalWithInjectionBehaviour() {
final NavigationViewFactory viewFactory = new NavigationViewFactory();
Wire.instance(viewFactory).andStart(getContext());
final ModuleView moduleView = viewFactory.createModuleView(new Shell());
assertNotNull(moduleView);
assertTrue(moduleView.getClass() == ModuleView.class);
final ModuleGroupView moduleGroupView = viewFactory.createModuleGroupView(new Shell());
assertNotNull(moduleGroupView);
assertTrue(moduleGroupView.getClass() == ModuleGroupView.class);
}
public void testConfiguredNavigationViewFactory() {
final NavigationViewFactory viewFactory = new NavigationViewFactory();
addPluginXml(this.getClass(), "pluginXmlNavigationViewFactory.xml");
try {
Wire.instance(viewFactory).andStart(getContext());
final ModuleView moduleView = viewFactory.createModuleView(new Shell());
assertNotNull(moduleView);
assertTrue(moduleView.getClass() == TestModuleView.class);
final ModuleController moduleController = viewFactory.createModuleController(new ModuleNode());
assertNotNull(moduleController);
assertTrue(moduleController.getClass() == SWTModuleController.class);
final ModuleGroupView moduleGroupView = viewFactory.createModuleGroupView(new Shell());
assertNotNull(moduleGroupView);
assertTrue(moduleGroupView.getClass() == TestModuleGroupView.class);
final ModuleGroupController moduleGroupController = viewFactory
.createModuleGroupController(new ModuleGroupNode());
assertNotNull(moduleGroupController);
assertTrue(moduleGroupController.getClass() == ModuleGroupController.class);
} finally {
removeExtension("org.eclipse.riena.test.navigationModuleView");
removeExtension("org.eclipse.riena.test.navigationModuleGroupView");
}
}
public void testConfiguredNavigationViewFactorySecond() {
final NavigationViewFactory viewFactory = new NavigationViewFactory();
addPluginXml(this.getClass(), "pluginXmlNavigationViewFactoryWithController.xml");
try {
Wire.instance(viewFactory).andStart(getContext());
final ModuleView moduleView = viewFactory.createModuleView(new Shell());
assertNotNull(moduleView);
assertTrue(moduleView.getClass() == TestModuleView.class);
final ModuleController moduleController = viewFactory.createModuleController(new ModuleNode());
assertNotNull(moduleController);
assertTrue(moduleController.getClass() == TestModuleController.class);
final ModuleGroupView moduleGroupView = viewFactory.createModuleGroupView(new Shell());
assertNotNull(moduleGroupView);
assertTrue(moduleGroupView.getClass() == TestModuleGroupView.class);
final ModuleGroupController moduleGroupController = viewFactory
.createModuleGroupController(new ModuleGroupNode());
assertNotNull(moduleGroupController);
assertTrue(moduleGroupController.getClass() == TestModuleGroupController.class);
} finally {
removeExtension("org.eclipse.riena.test.navigationModuleView");
removeExtension("org.eclipse.riena.test.navigationModuleGroupView");
}
}
/**
* Tests the method {@code createModuleController(IModuleNode)}.
* <p>
* Tests all three ways of the module controller creation.
*/
public void testCreateModuleController() {
final NavigationViewFactory viewFactory = new NavigationViewFactory();
final ModuleNode moduleNode0 = new ModuleNode();
ModuleController moduleController = viewFactory.createModuleController(moduleNode0);
assertNotNull(moduleController);
assertTrue(moduleController.getClass() == SWTModuleController.class);
assertSame(moduleController.getNavigationNode(), moduleNode0);
final ModuleNode moduleNode1 = new ModuleNode();
final MyModuleController myController = new MyModuleController(moduleNode1);
moduleNode1.setNavigationNodeController(myController);
moduleController = viewFactory.createModuleController(moduleNode1);
assertNotNull(moduleController);
assertSame(myController, moduleController);
assertSame(moduleController.getNavigationNode(), moduleNode1);
addPluginXml(this.getClass(), "pluginXmlNavigationViewFactoryWithController.xml");
try {
Wire.instance(viewFactory).andStart(getContext());
final ModuleNode moduleNode2 = new ModuleNode();
moduleController = viewFactory.createModuleController(moduleNode2);
assertNotNull(moduleController);
assertTrue(moduleController.getClass() == TestModuleController.class);
assertSame(moduleController.getNavigationNode(), moduleNode2);
} finally {
removeExtension("org.eclipse.riena.test.navigationModuleView");
removeExtension("org.eclipse.riena.test.navigationModuleGroupView");
}
}
/**
* Tests the method {@code createModuleGroupController(IModuleNode)}.
* <p>
* Tests all three ways of the module group controller creation.
*/
public void testCreateModuleGroupController() {
final NavigationViewFactory viewFactory = new NavigationViewFactory();
final ModuleGroupNode moduleGroupNode0 = new ModuleGroupNode();
ModuleGroupController moduleGroupController = viewFactory.createModuleGroupController(moduleGroupNode0);
assertNotNull(moduleGroupController);
assertTrue(moduleGroupController.getClass() == ModuleGroupController.class);
assertSame(moduleGroupController.getNavigationNode(), moduleGroupNode0);
final ModuleGroupNode moduleGroupNode1 = new ModuleGroupNode();
final MyModuleGroupController myController = new MyModuleGroupController(moduleGroupNode1);
moduleGroupNode1.setNavigationNodeController(myController);
moduleGroupController = viewFactory.createModuleGroupController(moduleGroupNode1);
assertNotNull(moduleGroupController);
assertSame(myController, moduleGroupController);
assertSame(moduleGroupController.getNavigationNode(), moduleGroupNode1);
addPluginXml(this.getClass(), "pluginXmlNavigationViewFactoryWithController.xml");
try {
Wire.instance(viewFactory).andStart(getContext());
final ModuleGroupNode moduleGroupNode2 = new ModuleGroupNode();
moduleGroupController = viewFactory.createModuleGroupController(moduleGroupNode2);
assertNotNull(moduleGroupController);
assertTrue(moduleGroupController.getClass() == TestModuleGroupController.class);
assertSame(moduleGroupController.getNavigationNode(), moduleGroupNode2);
} finally {
removeExtension("org.eclipse.riena.test.navigationModuleView");
removeExtension("org.eclipse.riena.test.navigationModuleGroupView");
}
}
private class MyModuleController extends ModuleController {
public MyModuleController(final IModuleNode navigationNode) {
super(navigationNode);
}
}
private class MyModuleGroupController extends ModuleGroupController {
public MyModuleGroupController(final IModuleGroupNode navigationNode) {
super(navigationNode);
}
}
}