/******************************************************************************* * Copyright (c) 2002-2006 Innoopract Informationssysteme GmbH. * 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: * Innoopract Informationssysteme GmbH - initial API and implementation ******************************************************************************/ package com.w4t; import junit.framework.TestCase; /** unit tests for WebRadioButton. */ public class WebRadioButton_Test extends TestCase { public WebRadioButton_Test( final String name ) { super( name ); } protected void setUp() throws Exception { W4TFixture.setUp(); W4TFixture.createContext(); } protected void tearDown() throws Exception { W4TFixture.tearDown(); W4TFixture.removeContext(); } // test code //////////// public void testInitialValue() { WebRadioButton button = new WebRadioButton(); assertEquals( button.getValue(), button.getUniqueID() ); } public void testFindRadioButtonGroup() { WebPanel panel = new WebPanel(); WebRadioButtonGroup group = new WebRadioButtonGroup(); panel.add( group ); WebRadioButton button = new WebRadioButton(); // check param: null not allowed try { WebRadioButtonUtil.findGroup( null ); fail( "Expected NullPointerException" ); } catch( NullPointerException e ) { // expected } // radioButton not yet added to component tree: no group WebRadioButtonGroup groupForButton = WebRadioButtonUtil.findGroup( button ); assertEquals( null, groupForButton ); // add button to panel -> no group in parent branch panel.add( button ); groupForButton = WebRadioButtonUtil.findGroup( button ); assertEquals( null, groupForButton ); // add button 'properly' (to group): must find group button.remove(); group.add( button ); groupForButton = WebRadioButtonUtil.findGroup( button ); assertEquals( group, groupForButton ); } public void testEnabled() { // Scenario 1: button on group on panel WebPanel panel1 = new WebPanel(); WebRadioButtonGroup group1 = new WebRadioButtonGroup(); panel1.add( group1 ); WebRadioButton button1 = new WebRadioButton(); group1.add( button1 ); // group disabled & button enabled -> not enabled group1.setEnabled( false ); button1.setEnabled( true ); assertEquals( false, button1.isEnabled() ); // both enabled -> enabled group1.setEnabled( true ); button1.setEnabled( true ); assertEquals( true, button1.isEnabled() ); // group enabled & button disabled -> not enabled group1.setEnabled( true ); button1.setEnabled( false ); assertEquals( false, button1.isEnabled() ); // Scenario 2: button on panel on group WebRadioButtonGroup group2 = new WebRadioButtonGroup(); WebPanel panel2 = new WebPanel(); group2.add( panel2 ); WebRadioButton button2 = new WebRadioButton(); panel2.add( button2 ); // group disabled & button enabled -> not enabled group2.setEnabled( false ); button2.setEnabled( true ); assertEquals( false, button2.isEnabled() ); // both enabled -> enabled group2.setEnabled( true ); button2.setEnabled( true ); assertEquals( true, button2.isEnabled() ); // group enabled & button disabled -> not enabled group2.setEnabled( true ); button2.setEnabled( false ); assertEquals( false, button2.isEnabled() ); } public void testVisible() { // // Scenario 1: button on group on panel WebPanel panel1 = new WebPanel(); WebRadioButtonGroup group1 = new WebRadioButtonGroup(); panel1.add( group1 ); WebRadioButton button1 = new WebRadioButton(); group1.add( button1 ); // group invisible & button visible -> not visible group1.setVisible( false ); button1.setVisible( true ); assertEquals( false, button1.isVisible() ); // both visible -> visible group1.setVisible( true ); button1.setVisible( true ); assertEquals( true, button1.isVisible() ); // group visible & button invisible -> not visible group1.setVisible( true ); button1.setVisible( false ); assertEquals( false, button1.isVisible() ); // // Scenario 2: button on panel on group WebRadioButtonGroup group2 = new WebRadioButtonGroup(); WebPanel panel2 = new WebPanel(); group2.add( panel2 ); WebRadioButton button2 = new WebRadioButton(); panel2.add( button2 ); // group invisible & button visible -> not visible group2.setVisible( false ); button2.setVisible( true ); assertEquals( false, button2.isVisible() ); // both visible -> visible group2.setVisible( true ); button2.setVisible( true ); assertEquals( true, button2.isVisible() ); // group visible & button invisible -> not visible group2.setVisible( true ); button2.setVisible( false ); assertEquals( false, button2.isVisible() ); // // Scenario 3: radioButton without group WebRadioButton button3 = new WebRadioButton(); assertEquals( true, button3.isVisible() ); WebPanel panel3 = new WebPanel(); panel3.add( button3 ); assertEquals( true, button3.isVisible() ); } public void testValue() { WebRadioButtonGroup group = new WebRadioButtonGroup(); WebRadioButton button1 = new WebRadioButton(); group.add( button1 ); // group.setValue( "1" ); assertEquals( false, button1.isSelected() ); button1.setValue( "1" ); assertEquals( true, button1.isSelected() ); group.setValue( "xyz" ); assertEquals( false, button1.isSelected() ); // call isSelected on a 'free-floating' button WebRadioButton freeButton = new WebRadioButton(); assertEquals( false, freeButton.isSelected() ); } public void testFindButtonsForGroup() { // test with invalid parameter try { WebRadioButtonUtil.findButtons( null ); fail( "Expected NullPointerException" ); } catch( NullPointerException e ) { // expected } // group without buttons must return empty array WebRadioButtonGroup outerGroup = new WebRadioButtonGroup(); assertEquals( new WebRadioButton[ 0 ], WebRadioButtonUtil.findButtons( outerGroup ) ); // Simplest case: button is direct child of group WebRadioButton button1 = new WebRadioButton(); outerGroup.add( button1 ); assertEquals( new WebRadioButton[] { button1 }, WebRadioButtonUtil.findButtons( outerGroup ) ); // Indirect child button WebPanel panel = new WebPanel(); outerGroup.add( panel ); WebRadioButton button2 = new WebRadioButton(); panel.add( button2 ); assertEquals( new WebRadioButton[] { button1, button2 }, WebRadioButtonUtil.findButtons( outerGroup ) ); // Separate group inside outerGroup WebRadioButtonGroup innerGroup = new WebRadioButtonGroup(); WebRadioButton subButton1 = new WebRadioButton(); innerGroup.add( subButton1 ); outerGroup.add( innerGroup ); assertEquals( new WebRadioButton[] { button1, button2 }, WebRadioButtonUtil.findButtons( outerGroup ) ); // check nested group assertEquals( new WebRadioButton[] { subButton1 }, WebRadioButtonUtil.findButtons( innerGroup ) ); } private static void assertEquals( final WebRadioButton[] array1, final WebRadioButton[] array2 ) { assertEquals( "Array size differs", array1.length, array2.length ); for( int i = 0; i < array1.length; i++ ) { assertEquals( array1[ i ], array2[ i ] ); } } }