1 /* 2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package javafx.scene.control; 27 28 import static com.sun.javafx.scene.control.infrastructure.ControlTestUtils.*; 29 30 import test.com.sun.javafx.pgstub.StubToolkit; 31 import com.sun.javafx.tk.Toolkit; 32 import javafx.beans.property.BooleanProperty; 33 import javafx.beans.property.ObjectProperty; 34 import javafx.beans.property.SimpleBooleanProperty; 35 import javafx.beans.property.SimpleObjectProperty; 36 import javafx.scene.Node; 37 import javafx.scene.shape.Rectangle; 38 import static org.junit.Assert.*; 39 40 41 import org.junit.Before; 42 import org.junit.Ignore; 43 import org.junit.Test; 44 45 /** 46 * 47 * @author srikalyc 48 */ 49 public class RadioMenuItemTest { 50 private ToggleGroup toggleGroup; 51 private RadioMenuItem radioMenuItem, rmi;//Empty string 52 private RadioMenuItem radioMenuItemTwoArg; 53 private Node node; 54 private Toolkit tk; 55 56 @Before public void setup() { 57 tk = (StubToolkit)Toolkit.getToolkit();//This step is not needed (Just to make sure StubToolkit is loaded into VM) 58 node = new Rectangle(); 59 toggleGroup = new ToggleGroup(); 60 radioMenuItem = rmi = new RadioMenuItem("one"); 61 radioMenuItemTwoArg = new RadioMenuItem("two", node); 62 } 63 64 65 66 /********************************************************************* 67 * Tests for default values * 68 ********************************************************************/ 69 70 @Test public void oneArgConstructorShouldSetStyleClassTo_checkmenuitem() { 71 assertStyleClassContains(radioMenuItem, "radio-menu-item"); 72 } 73 @Test public void twoArgConstructorShouldSetStyleClassTo_checkmenuitem() { 74 assertStyleClassContains(radioMenuItemTwoArg, "radio-menu-item"); 75 } 76 77 @Test public void defaultTxtNotNull() { 78 assertNotNull(radioMenuItem.getText()); 79 assertEquals(radioMenuItem.getText(), "one"); 80 } 81 82 @Test public void twoArgConstructorGraphicNotNull() { 83 assertNotNull(radioMenuItemTwoArg.getGraphic()); 84 assertSame(radioMenuItemTwoArg.getGraphic(), node); 85 } 86 87 @Test public void defaultSelected() { 88 assertFalse(radioMenuItem.isSelected()); 89 } 90 91 92 /********************************************************************* 93 * Tests for property binding * 94 ********************************************************************/ 95 96 @Test public void checkSelectedPropertyBind() { 97 BooleanProperty objPr = new SimpleBooleanProperty(true); 98 radioMenuItem.selectedProperty().bind(objPr); 99 assertTrue("selectedProperty cannot be bound", radioMenuItem.selectedProperty().getValue()); 100 objPr.setValue(false); 101 assertFalse("selectedProperty cannot be bound", radioMenuItem.selectedProperty().getValue()); 102 } 103 104 @Test public void checkToggleGroupPropertyBind() { 105 ObjectProperty objPr = new SimpleObjectProperty<ToggleGroup>(null); 106 radioMenuItem.toggleGroupProperty().bind(objPr); 107 assertNull("toggleGroupProperty cannot be bound", radioMenuItem.toggleGroupProperty().getValue()); 108 objPr.setValue(toggleGroup); 109 assertSame("toggleGroupProperty cannot be bound", radioMenuItem.toggleGroupProperty().getValue(), toggleGroup); 110 } 111 112 @Test public void selectedPropertyHasBeanReference() { 113 assertSame(radioMenuItem, radioMenuItem.selectedProperty().getBean()); 114 } 115 116 @Test public void selectedPropertyHasName() { 117 assertEquals("selected", radioMenuItem.selectedProperty().getName()); 118 } 119 120 @Test public void toggleGroupPropertyHasBeanReference() { 121 assertSame(radioMenuItem, radioMenuItem.toggleGroupProperty().getBean()); 122 } 123 124 @Test public void toggleGroupPropertyHasName() { 125 assertEquals("toggleGroup", radioMenuItem.toggleGroupProperty().getName()); 126 } 127 128 /********************************************************************* 129 * Miscellaneous Tests * 130 ********************************************************************/ 131 @Test public void setSelectedAndSeeValueIsReflectedInModel() { 132 radioMenuItem.setSelected(true); 133 assertTrue(radioMenuItem.selectedProperty().getValue()); 134 } 135 136 @Test public void setSelectedAndSeeValue() { 137 radioMenuItem.setSelected(false); 138 assertFalse(radioMenuItem.isSelected()); 139 } 140 141 @Test public void setSelectedTrueAndSeeIfStyleSelectedExists() { 142 radioMenuItem.setSelected(true); 143 assertTrue(radioMenuItem.getStyleClass().contains("selected")); 144 } 145 146 @Test public void setSelectedFalseAndSeeIfStyleSelectedDoesNotExists() { 147 radioMenuItem.setSelected(false); 148 assertFalse(radioMenuItem.getStyleClass().contains("selected")); 149 } 150 151 @Test public void setToggleGroupAndSeeValueIsReflectedInModel() { 152 radioMenuItem.setToggleGroup(toggleGroup); 153 assertSame(radioMenuItem.toggleGroupProperty().getValue(), toggleGroup); 154 } 155 156 @Test public void setToggleGroupAndSeeValue() { 157 radioMenuItem.setToggleGroup(toggleGroup); 158 assertSame(radioMenuItem.getToggleGroup(), toggleGroup); 159 } 160 161 @Test public void oneArgConstructorShouldHaveNoGraphic1() { 162 RadioMenuItem rmi2 = new RadioMenuItem(null); 163 assertNull(rmi2.getGraphic()); 164 } 165 166 @Test public void oneArgConstructorShouldHaveNoGraphic2() { 167 RadioMenuItem rmi2 = new RadioMenuItem(""); 168 assertNull(rmi2.getGraphic()); 169 } 170 171 @Test public void oneArgConstructorShouldHaveNoGraphic3() { 172 assertNull(rmi.getGraphic()); 173 } 174 175 @Test public void oneArgConstructorShouldHaveSpecifiedString1() { 176 RadioMenuItem rmi2 = new RadioMenuItem(null); 177 assertNull(rmi2.getText()); 178 } 179 180 @Test public void oneArgConstructorShouldHaveSpecifiedString2() { 181 RadioMenuItem rmi2 = new RadioMenuItem(""); 182 assertEquals("", rmi2.getText()); 183 } 184 185 @Test public void oneArgConstructorShouldHaveSpecifiedString3() { 186 assertEquals("one", rmi.getText()); 187 } 188 189 @Test public void twoArgConstructorShouldHaveSpecifiedGraphic1() { 190 RadioMenuItem rmi2 = new RadioMenuItem(null, null); 191 assertNull(rmi2.getGraphic()); 192 } 193 194 @Test public void twoArgConstructorShouldHaveSpecifiedGraphic2() { 195 Rectangle rect = new Rectangle(); 196 RadioMenuItem rmi2 = new RadioMenuItem("Hello", rect); 197 assertEquals(rect, rmi2.getGraphic()); 198 } 199 200 @Test public void twoArgConstructorShouldHaveSpecifiedString1() { 201 RadioMenuItem rmi2 = new RadioMenuItem(null, null); 202 assertNull(rmi2.getText()); 203 } 204 205 @Test public void twoArgConstructorShouldHaveSpecifiedString2() { 206 Rectangle rect = new Rectangle(); 207 RadioMenuItem rmi2 = new RadioMenuItem("Hello", rect); 208 assertEquals("Hello", rmi2.getText()); 209 } 210 211 @Test public void defaultToggleGroup() { 212 assertNull(rmi.getToggleGroup()); 213 } 214 215 @Test public void setNullToggleGroup() { 216 rmi.setToggleGroup(null); 217 assertNull(rmi.getToggleGroup()); 218 } 219 220 @Test public void setSpecifiedToggleGroup() { 221 ToggleGroup tg = new ToggleGroup(); 222 rmi.setToggleGroup(tg); 223 assertSame(tg, rmi.getToggleGroup()); 224 } 225 226 @Test public void getUnspecifiedToggleGroupProperty1() { 227 assertNotNull(rmi.toggleGroupProperty()); 228 } 229 230 @Test public void getUnspecifiedToggleGroupProperty2() { 231 RadioMenuItem rmi2 = new RadioMenuItem("", null); 232 assertNotNull(rmi2.toggleGroupProperty()); 233 } 234 235 // calling toggleGroupProperty does not ensure the value of toggleGroup 236 // to be non null 237 @Ignore 238 @Test public void unsetToggleGroupButNotNull() { 239 rmi.toggleGroupProperty(); 240 assertNotNull(rmi.getToggleGroup()); 241 } 242 243 @Test public void toggleGroupCanBeBound() { 244 ToggleGroup tg = new ToggleGroup(); 245 SimpleObjectProperty<ToggleGroup> other = new SimpleObjectProperty<ToggleGroup>(rmi, "toggleGroup", tg); 246 rmi.toggleGroupProperty().bind(other); 247 assertSame(tg, rmi.getToggleGroup()); 248 } 249 250 @Test public void getUnspecifiedSelected() { 251 assertEquals(false, rmi.isSelected()); 252 } 253 254 @Test public void setTrueSelected() { 255 rmi.setSelected(true); 256 assertTrue(rmi.isSelected()); 257 } 258 259 @Test public void setFalseSelected() { 260 rmi.setSelected(false); 261 assertFalse(rmi.isSelected()); 262 } 263 264 @Test public void selectedNotSetButNotNull() { 265 rmi.selectedProperty(); 266 assertNotNull(rmi.isSelected()); 267 } 268 269 @Test public void selectedCanBeBound1() { 270 SimpleBooleanProperty other = new SimpleBooleanProperty(rmi, "selected", false); 271 rmi.selectedProperty().bind(other); 272 assertEquals(other.get(), rmi.isSelected()); 273 } 274 275 @Test public void selectedCanBeBound2() { 276 SimpleBooleanProperty other = new SimpleBooleanProperty(rmi, "selected", true); 277 rmi.selectedProperty().bind(other); 278 assertEquals(other.get(), rmi.isSelected()); 279 } 280 281 282 }