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 javafx.beans.property.BooleanProperty; 29 import javafx.beans.property.ObjectProperty; 30 import javafx.beans.property.SimpleBooleanProperty; 31 import javafx.beans.property.SimpleObjectProperty; 32 import javafx.scene.Node; 33 import javafx.scene.shape.Rectangle; 34 35 import com.sun.javafx.pgstub.StubToolkit; 36 import com.sun.javafx.tk.Toolkit; 37 import org.junit.Before; 38 import org.junit.Ignore; 39 import org.junit.Test; 40 41 import static com.sun.javafx.scene.control.infrastructure.ControlTestUtils.*; 42 import static org.junit.Assert.*; 43 44 /** 45 * 46 * @author srikalyc 47 */ 48 public class CustomMenuItemTest { 49 private CustomMenuItem customMenuItem, cmi;//Empty string 50 private CustomMenuItem customMenuItemOneArg; 51 private CustomMenuItem customMenuItemTwoArg; 52 private Node node; 53 private Toolkit tk; 54 55 @Before public void setup() { 56 tk = (StubToolkit)Toolkit.getToolkit();//This step is not needed (Just to make sure StubToolkit is loaded into VM) 57 node = new Rectangle(); 58 customMenuItem = cmi = new CustomMenuItem(); 59 customMenuItemOneArg = new CustomMenuItem(node); 60 customMenuItemTwoArg = new CustomMenuItem(node, false); 61 } 62 63 64 65 /********************************************************************* 66 * Tests for default values * 67 ********************************************************************/ 68 69 @Test public void defaultConstructorShouldSetStyleClassTo_custommenuitem() { 70 assertStyleClassContains(customMenuItem, "custom-menu-item"); 71 } 72 @Test public void oneArgConstructorShouldSetStyleClassTo_checkmenuitem() { 73 assertStyleClassContains(customMenuItemOneArg, "custom-menu-item"); 74 } 75 @Test public void twoArgConstructorShouldSetStyleClassTo_checkmenuitem() { 76 assertStyleClassContains(customMenuItemTwoArg, "custom-menu-item"); 77 } 78 79 @Test public void defaultNodeNull() { 80 assertNull(customMenuItem.getContent()); 81 } 82 83 @Test public void oneArgConstructorNodeNotNull() { 84 assertNotNull(customMenuItemOneArg.getContent()); 85 assertSame(customMenuItemOneArg.getContent(), node); 86 } 87 88 89 90 /********************************************************************* 91 * Tests for property binding * 92 ********************************************************************/ 93 94 @Test public void checkHideOnClickPropertyBind() { 95 BooleanProperty objPr = new SimpleBooleanProperty(true); 96 customMenuItem.hideOnClickProperty().bind(objPr); 97 assertTrue("hideOnClickProperty cannot be bound", customMenuItem.hideOnClickProperty().getValue()); 98 objPr.setValue(false); 99 assertFalse("hideOnClickProperty cannot be bound", customMenuItem.hideOnClickProperty().getValue()); 100 } 101 102 @Test public void checkContentPropertyBind() { 103 ObjectProperty objPr = new SimpleObjectProperty<Node>(null); 104 customMenuItem.contentProperty().bind(objPr); 105 assertNull("contentProperty cannot be bound", customMenuItem.contentProperty().getValue()); 106 objPr.setValue(node); 107 assertSame("contentProperty cannot be bound", customMenuItem.contentProperty().getValue(), node); 108 } 109 110 @Test public void contentPropertyHasBeanReference() { 111 assertSame(customMenuItem, customMenuItem.contentProperty().getBean()); 112 } 113 114 @Test public void selectedPropertyHasName() { 115 assertEquals("content", customMenuItem.contentProperty().getName()); 116 } 117 118 /********************************************************************* 119 * Miscellaneous Tests * 120 ********************************************************************/ 121 @Test public void setContentAndSeeValueIsReflectedInModel() { 122 customMenuItem.setContent(node); 123 assertSame(customMenuItem.contentProperty().getValue(), node); 124 } 125 126 @Test public void setContentAndSeeValue() { 127 customMenuItem.setContent(node); 128 assertSame(customMenuItem.getContent(), node); 129 } 130 131 @Test public void defaultConstructorShouldHaveNoContent() { 132 assertNull(cmi.getContent()); 133 } 134 135 @Test public void defaultConstructorShouldHaveTrueHideClick() { 136 assertTrue(cmi.isHideOnClick()); 137 } 138 139 @Test public void defaultConstructorShouldHaveNullGraphic() { 140 assertNull(cmi.getGraphic()); 141 } 142 143 @Test public void defaultConstructorShouldHaveNullText() { 144 assertNull(cmi.getText()); 145 } 146 147 @Test public void oneArgConstructorShouldHaveNoContent1() { 148 CustomMenuItem cmi2 = new CustomMenuItem(null); 149 assertNull(cmi2.getContent()); 150 } 151 152 @Test public void oneArgConstructorShouldHaveNoContent2() { 153 Rectangle rect = new Rectangle(); 154 CustomMenuItem cmi2 = new CustomMenuItem(rect); 155 assertSame(rect, cmi2.getContent()); 156 } 157 158 @Test public void oneArgConstructorShouldHaveTrueHideClick1() { 159 CustomMenuItem cmi2 = new CustomMenuItem(null); 160 assertTrue(cmi2.isHideOnClick()); 161 } 162 163 @Test public void oneArgConstructorShouldHaveTrueHideClick2() { 164 Rectangle rect = new Rectangle(); 165 CustomMenuItem cmi2 = new CustomMenuItem(rect); 166 assertTrue(cmi2.isHideOnClick()); 167 } 168 169 @Test public void oneArgConstructorShouldHaveNullGraphic() { 170 Rectangle rect = new Rectangle(); 171 CustomMenuItem cmi2 = new CustomMenuItem(rect); 172 assertNull(cmi2.getGraphic()); 173 } 174 175 @Test public void oneArgConstructorShouldHaveNullText() { 176 Rectangle rect = new Rectangle(); 177 CustomMenuItem cmi2 = new CustomMenuItem(rect); 178 assertNull(cmi2.getText()); 179 } 180 181 @Test public void twoArgConstructorShouldHaveSpecifiedContent1() { 182 CustomMenuItem cmi2 = new CustomMenuItem(null, true); 183 assertNull(cmi2.getContent()); 184 } 185 186 @Test public void twoArgConstructorShouldHaveSpecifiedContent2() { 187 CustomMenuItem cmi2 = new CustomMenuItem(null, false); 188 assertNull(cmi2.getContent()); 189 } 190 191 @Test public void twoArgConstructorShouldHaveSpecifiedContent3() { 192 Rectangle rect = new Rectangle(); 193 CustomMenuItem cmi2 = new CustomMenuItem(rect, true); 194 assertSame(rect, cmi2.getContent()); 195 } 196 197 @Test public void twoArgConstructorShouldHaveSpecifiedContent4() { 198 Rectangle rect = new Rectangle(); 199 CustomMenuItem cmi2 = new CustomMenuItem(rect, false); 200 assertSame(rect, cmi2.getContent()); 201 } 202 203 @Test public void twoArgConstructorShouldHaveSpecifiedHideClick1() { 204 CustomMenuItem cmi2 = new CustomMenuItem(null, true); 205 assertTrue(cmi2.isHideOnClick()); 206 } 207 208 @Test public void twoArgConstructorShouldHaveSpecifiedHideClick2() { 209 CustomMenuItem cmi2 = new CustomMenuItem(null, false); 210 assertFalse(cmi2.isHideOnClick()); 211 } 212 213 @Test public void twoArgConstructorShouldHaveSpecifiedHideClick3() { 214 Rectangle rect = new Rectangle(); 215 CustomMenuItem cmi2 = new CustomMenuItem(rect, true); 216 assertTrue(cmi2.isHideOnClick()); 217 } 218 219 @Test public void twoArgConstructorShouldHaveSpecifiedHideClick4() { 220 Rectangle rect = new Rectangle(); 221 CustomMenuItem cmi2 = new CustomMenuItem(rect, false); 222 assertFalse(cmi2.isHideOnClick()); 223 } 224 225 @Test public void twoArgConstructorShouldHaveNullGraphic() { 226 Rectangle rect = new Rectangle(); 227 CustomMenuItem cmi2 = new CustomMenuItem(rect, true); 228 assertNull(cmi2.getGraphic()); 229 } 230 231 @Test public void twoArgConstructorShouldHaveNullText() { 232 Rectangle rect = new Rectangle(); 233 CustomMenuItem cmi2 = new CustomMenuItem(rect, true); 234 assertNull(cmi2.getText()); 235 } 236 237 @Test public void resetContent1() { 238 Rectangle rect = new Rectangle(); 239 cmi.setContent(rect); 240 assertSame(rect, cmi.getContent()); 241 } 242 243 @Test public void resetContent2() { 244 Rectangle rect = new Rectangle(); 245 CustomMenuItem cmi2 = new CustomMenuItem(rect, true); 246 247 Rectangle rect2 = new Rectangle(); 248 cmi2.setContent(rect2); 249 assertSame(rect2, cmi2.getContent()); 250 } 251 252 @Test public void resetContent3() { 253 Rectangle rect = new Rectangle(); 254 CustomMenuItem mi2 = new CustomMenuItem(rect, true); 255 256 Rectangle rect2 = null; 257 mi2.setContent(rect2); 258 assertNull(mi2.getContent()); 259 } 260 261 @Test public void getUnspecifiedContentProperty1() { 262 CustomMenuItem cmi2 = new CustomMenuItem(); 263 assertNotNull(cmi2.contentProperty()); 264 } 265 266 @Test public void getUnspecifiedContentProperty2() { 267 CustomMenuItem cmi2 = new CustomMenuItem(null, true); 268 assertNotNull(cmi2.contentProperty()); 269 } 270 271 @Ignore("I'm not sure what this test was supposed to test, so ignoring for now.") 272 @Test public void unsetContentButNotNull() { 273 CustomMenuItem cmi2 = new CustomMenuItem(); 274 cmi2.contentProperty(); // <-- this line is a no-op, what is it for? 275 assertNotNull(cmi2.getContent()); 276 } 277 278 @Test public void contentCanBeBound() { 279 Rectangle rect = new Rectangle(); 280 SimpleObjectProperty<Node> other = new SimpleObjectProperty<Node>(cmi, "content", rect); 281 cmi.contentProperty().bind(other); 282 assertEquals(rect, cmi.getContent()); 283 } 284 285 @Test public void getUnspecifiedHideOnClick() { 286 assertTrue(cmi.isHideOnClick()); 287 } 288 289 @Test public void setTrueHideOnClick() { 290 cmi.setHideOnClick(true); 291 assertTrue(cmi.isHideOnClick()); 292 } 293 294 @Test public void setFalseHideOnClick() { 295 cmi.setHideOnClick(false); 296 assertFalse(cmi.isHideOnClick()); 297 } 298 299 @Test public void hideOnClickNotSetButNotNull() { 300 cmi.hideOnClickProperty(); 301 assertNotNull(cmi.isHideOnClick()); 302 } 303 304 @Test public void hideOnClickCanBeBound1() { 305 SimpleBooleanProperty other = new SimpleBooleanProperty(cmi, "hideOnClick", false); 306 cmi.hideOnClickProperty().bind(other); 307 assertEquals(other.get(), cmi.isHideOnClick()); 308 } 309 310 @Test public void hideOnClickCanBeBound2() { 311 SimpleBooleanProperty other = new SimpleBooleanProperty(cmi, "hideOnClick", true); 312 cmi.hideOnClickProperty().bind(other); 313 assertEquals(other.get(), cmi.isHideOnClick()); 314 } 315 316 }