1 /*
   2  * Copyright (c) 2010, 2014, 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.scene.control.skin.TooltipSkin;
  29 import javafx.beans.property.DoubleProperty;
  30 import javafx.beans.property.DoublePropertyBase;
  31 import javafx.beans.property.SimpleStringProperty;
  32 
  33 import javafx.scene.Node;
  34 import org.junit.Before;
  35 import org.junit.Test;
  36 
  37 import static org.junit.Assert.*;
  38 
  39 /**
  40  *
  41  * @author lubermud
  42  */
  43 public class PopupControlTest {
  44     private PopupControl popup;
  45     
  46     private static final class PopupControlSkin<C extends PopupControl> implements Skin<C>{
  47         @Override public Node getNode()     { return null; }
  48         @Override public void dispose()     { }
  49         @Override public C getSkinnable()   { return null; }
  50     }
  51 
  52     @Before public void setup() {
  53         popup = new PopupControl();
  54     }
  55 
  56     /*********************************************************************
  57      * Tests for the constructors                                        *
  58      ********************************************************************/
  59 
  60     @Test public void usePrefSizeShouldBeNegativeInfinity() {
  61         assertEquals(PopupControl.USE_PREF_SIZE, Double.NEGATIVE_INFINITY, 0.0D);
  62     }
  63 
  64     @Test public void useComputedSizeShouldBeNegativeOne() {
  65         assertEquals(PopupControl.USE_COMPUTED_SIZE, -1.0D, 0.0D);
  66     }
  67 
  68     @Test public void defaultGetId() {
  69         assertNull(popup.getId());
  70     }
  71 
  72     @Test public void setIdShouldWork() {
  73         popup.setId("Hello");
  74         assertEquals("Hello", popup.getId());
  75     }
  76 
  77     @Test public void idPropertyShouldWork() {
  78         assertNull(popup.idProperty().get());
  79     }
  80 
  81     @Test public void idPropertyShouldWork2() {
  82         popup.idProperty().set("Hello");
  83         assertEquals("Hello", popup.getId());
  84     }
  85 
  86     @Test public void idPropertyShouldBeBindable() {
  87         SimpleStringProperty other = new SimpleStringProperty("Hello");
  88         popup.idProperty().bind(other);
  89         assertEquals("Hello", popup.getId());
  90     }
  91 
  92     @Test public void getStyleClassNotNull() {
  93         assertNotNull(popup.getStyleClass());
  94     }
  95 
  96     @Test public void getStyleClassAddable() {
  97         popup.getStyleClass().add("Hello");
  98         popup.getStyleClass().add("Goodbye");
  99         assertEquals(2, popup.getStyleClass().size());
 100     }
 101 
 102     @Test public void getStyleClassStringable1() {
 103         assertEquals("", popup.getStyleClass().toString());
 104     }
 105 
 106     @Test public void getStyleClassStringable2() {
 107         popup.getStyleClass().add("Hello");
 108         assertEquals("Hello", popup.getStyleClass().toString());
 109     }
 110     
 111     @Test public void getStyleClassStringable3() {
 112         popup.getStyleClass().add("Hello");
 113         popup.getStyleClass().add("Goodbye");
 114         assertEquals("Hello Goodbye", popup.getStyleClass().toString());
 115     }
 116 
 117     @org.junit.Ignore("getStyle should not return null per Node#setStyle")
 118     @Test public void styleSetNullGetNull() {
 119         popup.setStyle(null);
 120         assertNull(popup.getStyle());
 121     }
 122 
 123     // See Node#setStyle
 124     @Test public void styleSetNullGetEmptyString() {
 125         popup.setStyle(null);
 126         assertTrue("".equals(popup.getStyle()));
 127     }
 128 
 129     @Test public void styleSettable() {
 130         popup.setStyle("Hello");
 131         assertEquals("Hello", popup.getStyle());
 132     }
 133 
 134     @Test public void stylePropertySettable() {
 135         popup.styleProperty().set("Hello");
 136         assertEquals("Hello", popup.getStyle());
 137     }
 138 
 139     @Test public void stylePropertyBindable() {
 140         SimpleStringProperty other = new SimpleStringProperty("Hello");
 141         popup.styleProperty().bind(other);
 142         assertEquals("Hello", popup.getStyle());
 143     }
 144 
 145     @Test public void defaultSkinIsNull() {
 146         assertNull(popup.getSkin());
 147     }
 148 
 149     @Test public void getSkinPropertyBean() {
 150         assertEquals(popup, popup.skinProperty().getBean());
 151     }
 152 
 153     @Test public void getSkinPropertyName() {
 154         assertEquals("skin", popup.skinProperty().getName());
 155     }
 156 
 157     @Test public void setAndGetSpecifiedSkin() {
 158         Skin skin = new PopupControlSkin();
 159         popup.setSkin(skin);
 160         assertEquals(skin, popup.getSkin());
 161     }
 162 
 163     @Test public void setAndGetNullSkin() {
 164         popup.setSkin(null);
 165         assertNull(popup.getSkin());
 166     }
 167 
 168     @Test public void getNullMinWidth() {
 169         assertEquals(PopupControl.USE_COMPUTED_SIZE, popup.getMinWidth(), 0.0D);
 170     }
 171 
 172     @Test public void getNotNullMinWidth() {
 173         popup.minWidthProperty();
 174         assertNotNull(popup.getMinWidth());
 175     }
 176 
 177     @Test public void setAndGetMinWidth() {
 178         popup.setMinWidth( 3.0D );
 179         assertEquals( 3.0D, popup.getMinWidth(), 0.0D );
 180     }
 181 
 182     @Test public void setTwiceAndGetMinWidth() {
 183         popup.setMinWidth( 3.0D );
 184         popup.setMinWidth( 6.0D );
 185         assertEquals( 6.0D, popup.getMinWidth(), 0.0D );
 186     }
 187 
 188     @Test public void getMinWidthBean() {
 189         assertEquals( popup, popup.minWidthProperty().getBean() );
 190     }
 191 
 192     @Test public void getMinWidthName() {
 193         assertEquals( "minWidth", popup.minWidthProperty().getName() );
 194     }
 195 
 196     @Test public void minWidthBindable() {
 197         DoubleProperty other = new DoublePropertyBase( 3.0D ) {
 198             @Override public Object getBean() { return popup; }
 199             @Override public String getName() { return "minWidth"; }
 200         };
 201         popup.minWidthProperty().bind(other);
 202         assertEquals( 3.0D, popup.getMinWidth(), 0.0D );
 203     }
 204 
 205     @Test public void getNullMinHeight() {
 206         assertEquals(PopupControl.USE_COMPUTED_SIZE, popup.getMinHeight(), 0.0D);
 207     }
 208 
 209     @Test public void getNotNullMinHeight() {
 210         popup.minHeightProperty();
 211         assertNotNull(popup.getMinHeight());
 212     }
 213 
 214     @Test public void setAndGetMinHeight() {
 215         popup.setMinHeight( 3.0D );
 216         assertEquals( 3.0D, popup.getMinHeight(), 0.0D );
 217     }
 218 
 219     @Test public void setTwiceAndGetMinHeight() {
 220         popup.setMinHeight( 3.0D );
 221         popup.setMinHeight( 6.0D );
 222         assertEquals( 6.0D, popup.getMinHeight(), 0.0D );
 223     }
 224 
 225     @Test public void getMinHeightBean() {
 226         assertEquals( popup, popup.minHeightProperty().getBean() );
 227     }
 228 
 229     @Test public void getMinHeightName() {
 230         assertEquals( "minHeight", popup.minHeightProperty().getName() );
 231     }
 232 
 233     @Test public void minHeightBindable() {
 234         DoubleProperty other = new DoublePropertyBase( 3.0D ) {
 235             @Override public Object getBean() { return popup; }
 236             @Override public String getName() { return "minHeight"; }
 237         };
 238         popup.minHeightProperty().bind(other);
 239         assertEquals( 3.0D, popup.getMinHeight(), 0.0D );
 240     }
 241 
 242     @Test public void setMinSizeAndGetMinWidth() {
 243         popup.setMinSize( 3.0D, 6.0D );
 244         assertEquals( 3.0D, popup.getMinWidth(), 0.0D );
 245     }
 246 
 247     @Test public void setMinSizeAndGetMinHeight() {
 248         popup.setMinSize( 3.0D, 6.0D );
 249         assertEquals( 6.0D, popup.getMinHeight(), 0.0D );
 250     }
 251 
 252     @Test public void getNullPrefWidth() {
 253         assertEquals(PopupControl.USE_COMPUTED_SIZE, popup.getPrefWidth(), 0.0D);
 254     }
 255 
 256     @Test public void getNotNullPrefWidth() {
 257         popup.prefWidthProperty();
 258         assertNotNull(popup.getPrefWidth());
 259     }
 260 
 261     @Test public void setAndGetPrefWidth() {
 262         popup.setPrefWidth( 3.0D );
 263         assertEquals( 3.0D, popup.getPrefWidth(), 0.0D );
 264     }
 265 
 266     @Test public void setTwiceAndGetPrefWidth() {
 267         popup.setPrefWidth( 3.0D );
 268         popup.setPrefWidth( 6.0D );
 269         assertEquals( 6.0D, popup.getPrefWidth(), 0.0D );
 270     }
 271 
 272     @Test public void getPrefWidthBean() {
 273         assertEquals( popup, popup.prefWidthProperty().getBean() );
 274     }
 275 
 276     @Test public void getPrefWidthName() {
 277         assertEquals( "prefWidth", popup.prefWidthProperty().getName() );
 278     }
 279 
 280     @Test public void prefWidthBindable() {
 281         DoubleProperty other = new DoublePropertyBase( 3.0D ) {
 282             @Override public Object getBean() { return popup; }
 283             @Override public String getName() { return "prefWidth"; }
 284         };
 285         popup.prefWidthProperty().bind(other);
 286         assertEquals( 3.0D, popup.getPrefWidth(), 0.0D );
 287     }
 288 
 289     @Test public void getNullPrefHeight() {
 290         assertEquals(PopupControl.USE_COMPUTED_SIZE, popup.getPrefHeight(), 0.0D);
 291     }
 292 
 293     @Test public void getNotNullPrefHeight() {
 294         popup.prefHeightProperty();
 295         assertNotNull(popup.getPrefHeight());
 296     }
 297 
 298     @Test public void setAndGetPrefHeight() {
 299         popup.setPrefHeight( 3.0D );
 300         assertEquals( 3.0D, popup.getPrefHeight(), 0.0D );
 301     }
 302 
 303     @Test public void setTwiceAndGetPrefHeight() {
 304         popup.setPrefHeight( 3.0D );
 305         popup.setPrefHeight( 6.0D );
 306         assertEquals( 6.0D, popup.getPrefHeight(), 0.0D );
 307     }
 308 
 309     @Test public void getPrefHeightBean() {
 310         assertEquals( popup, popup.prefHeightProperty().getBean() );
 311     }
 312 
 313     @Test public void getPrefHeightName() {
 314         assertEquals( "prefHeight", popup.prefHeightProperty().getName() );
 315     }
 316 
 317     @Test public void prefHeightBindable() {
 318         DoubleProperty other = new DoublePropertyBase( 3.0D ) {
 319             @Override public Object getBean() { return popup; }
 320             @Override public String getName() { return "prefHeight"; }
 321         };
 322         popup.prefHeightProperty().bind(other);
 323         assertEquals( 3.0D, popup.getPrefHeight(), 0.0D );
 324     }
 325 
 326     @Test public void setPrefSizeAndGetPrefWidth() {
 327         popup.setPrefSize( 3.0D, 6.0D );
 328         assertEquals( 3.0D, popup.getPrefWidth(), 0.0D );
 329     }
 330 
 331     @Test public void setPrefSizeAndGetPrefHeight() {
 332         popup.setPrefSize( 3.0D, 6.0D );
 333         assertEquals( 6.0D, popup.getPrefHeight(), 0.0D );
 334     } 
 335     
 336     @Test public void getNullMaxWidth() {
 337         assertEquals(PopupControl.USE_COMPUTED_SIZE, popup.getMaxWidth(), 0.0D);
 338     }
 339 
 340     @Test public void getNotNullMaxWidth() {
 341         popup.maxWidthProperty();
 342         assertNotNull(popup.getMaxWidth());
 343     }
 344 
 345     @Test public void setAndGetMaxWidth() {
 346         popup.setMaxWidth( 3.0D );
 347         assertEquals( 3.0D, popup.getMaxWidth(), 0.0D );
 348     }
 349 
 350     @Test public void setTwiceAndGetMaxWidth() {
 351         popup.setMaxWidth( 3.0D );
 352         popup.setMaxWidth( 6.0D );
 353         assertEquals( 6.0D, popup.getMaxWidth(), 0.0D );
 354     }
 355 
 356     @Test public void getMaxWidthBean() {
 357         assertEquals( popup, popup.maxWidthProperty().getBean() );
 358     }
 359 
 360     @Test public void getMaxWidthName() {
 361         assertEquals( "maxWidth", popup.maxWidthProperty().getName() );
 362     }
 363 
 364     @Test public void maxWidthBindable() {
 365         DoubleProperty other = new DoublePropertyBase( 3.0D ) {
 366             @Override public Object getBean() { return popup; }
 367             @Override public String getName() { return "maxWidth"; }
 368         };
 369         popup.maxWidthProperty().bind(other);
 370         assertEquals( 3.0D, popup.getMaxWidth(), 0.0D );
 371     }
 372 
 373     @Test public void getNullMaxHeight() {
 374         assertEquals(PopupControl.USE_COMPUTED_SIZE, popup.getMaxHeight(), 0.0D);
 375     }
 376 
 377     @Test public void getNotNullMaxHeight() {
 378         popup.maxHeightProperty();
 379         assertNotNull(popup.getMaxHeight());
 380     }
 381 
 382     @Test public void setAndGetMaxHeight() {
 383         popup.setMaxHeight( 3.0D );
 384         assertEquals( 3.0D, popup.getMaxHeight(), 0.0D );
 385     }
 386 
 387     @Test public void setTwiceAndGetMaxHeight() {
 388         popup.setMaxHeight( 3.0D );
 389         popup.setMaxHeight( 6.0D );
 390         assertEquals( 6.0D, popup.getMaxHeight(), 0.0D );
 391     }
 392 
 393     @Test public void getMaxHeightBean() {
 394         assertEquals( popup, popup.maxHeightProperty().getBean() );
 395     }
 396 
 397     @Test public void getMaxHeightName() {
 398         assertEquals( "maxHeight", popup.maxHeightProperty().getName() );
 399     }
 400 
 401     @Test public void maxHeightBindable() {
 402         DoubleProperty other = new DoublePropertyBase( 3.0D ) {
 403             @Override public Object getBean() { return popup; }
 404             @Override public String getName() { return "maxHeight"; }
 405         };
 406         popup.maxHeightProperty().bind(other);
 407         assertEquals( 3.0D, popup.getMaxHeight(), 0.0D );
 408     }
 409 
 410     @Test public void setMaxSizeAndGetMaxWidth() {
 411         popup.setMaxSize( 3.0D, 6.0D );
 412         assertEquals( 3.0D, popup.getMaxWidth(), 0.0D );
 413     }
 414 
 415     @Test public void setMaxSizeAndGetMaxHeight() {
 416         popup.setMaxSize( 3.0D, 6.0D );
 417         assertEquals( 6.0D, popup.getMaxHeight(), 0.0D );
 418     }
 419 
 420     @Test public void nullSkinNodeAndUseComputedSizeYieldsZeroComputedMinWidth() {
 421         double anyNum = -2;
 422         popup.setSkin(null);
 423         popup.setMinWidth(PopupControl.USE_COMPUTED_SIZE);
 424         assertEquals(0.0D, popup.minWidth(anyNum), 0.0D);
 425     }
 426 
 427     @Test public void nullSkinNodeAndSpecifiedSizeYieldsSpecifiedComputedMinWidth() {
 428         double anyNum = -2;
 429         popup.setSkin(null);
 430         popup.setMinWidth(3.0D);
 431         assertEquals(3.0D, popup.minWidth(anyNum), 0.0D);
 432     }
 433 
 434     @Test public void popupControlSkinNodeAndUseComputedSizeYieldsZeroComputedMinWidth() {
 435         double anyNum = -2;
 436         popup.setSkin(new PopupControlSkin());
 437         popup.setMinWidth(PopupControl.USE_COMPUTED_SIZE);
 438         assertEquals(0.0D, popup.minWidth(anyNum), 0.0D);
 439     }
 440 
 441     @Test public void tooltipSkinNodeAndUseComputedSizeYieldsSomeMinWidth() {
 442         double anyNum = 10;
 443         Tooltip tooltip = new Tooltip("Hello");
 444         TooltipSkin skin = new TooltipSkin(tooltip);
 445         popup.setSkin(skin);
 446         popup.getScene().getRoot().impl_processCSS(true);
 447 
 448         popup.setMinWidth(PopupControl.USE_COMPUTED_SIZE);
 449         assertEquals(popup.getSkin().getNode().minWidth(anyNum), popup.minWidth(anyNum), 0.0D);
 450     }
 451 
 452     @Test public void specifiedSkinNodeAndSpecifiedSizeYieldsSpecifiedComputedMinWidth() {
 453         double anyNum = -2;
 454         popup.setSkin(new PopupControlSkin());
 455         popup.setMinWidth(3.0D);
 456         assertEquals(3.0D, popup.minWidth(anyNum), 0.0D);
 457     }
 458 
 459     @Test public void nullSkinNodeAndUseComputedSizeYieldsZeroComputedMinHeight() {
 460         double anyNum = -2;
 461         popup.setSkin(null);
 462         popup.setMinHeight(PopupControl.USE_COMPUTED_SIZE);
 463         assertEquals(0.0D, popup.minHeight(anyNum), 0.0D);
 464     }
 465 
 466     @Test public void nullSkinNodeAndSpecifiedSizeYieldsSpecifiedComputedMinHeight() {
 467         double anyNum = -2;
 468         popup.setSkin(null);
 469         popup.setMinHeight(3.0D);
 470         assertEquals(3.0D, popup.minHeight(anyNum), 0.0D);
 471     }
 472 
 473     @Test public void popupControlSkinNodeAndUseComputedSizeYieldsZeroComputedMinHeight() {
 474         double anyNum = -2;
 475         popup.setSkin(new PopupControlSkin());
 476         popup.setMinHeight(PopupControl.USE_COMPUTED_SIZE);
 477         assertEquals(0.0D, popup.minHeight(anyNum), 0.0D);
 478     }
 479 
 480     @Test public void tooltipSkinNodeAndUseComputedSizeYieldsSomeMinHeight() {
 481         double anyNum = 10;
 482         Tooltip tooltip = new Tooltip("Hello");
 483         TooltipSkin skin = new TooltipSkin(tooltip);
 484         popup.setSkin(skin);
 485         popup.getScene().getRoot().impl_processCSS(true);
 486 
 487         popup.setMinHeight(PopupControl.USE_COMPUTED_SIZE);
 488         assertEquals(popup.getSkin().getNode().minHeight(anyNum), popup.minHeight(anyNum), 0.0D);
 489     }
 490 
 491     @Test public void specifiedSkinNodeAndSpecifiedSizeYieldsSpecifiedComputedMinHeight() {
 492         double anyNum = -2;
 493         popup.setSkin(new PopupControlSkin());
 494         popup.setMinHeight(3.0D);
 495         assertEquals(3.0D, popup.minHeight(anyNum), 0.0D);
 496     }
 497 
 498     @Test public void nullSkinNodeAndUseComputedSizeYieldsZeroComputedPrefWidth() {
 499         double anyNum = -2;
 500         popup.setSkin(null);
 501         popup.setPrefWidth(PopupControl.USE_COMPUTED_SIZE);
 502         assertEquals(0.0D, popup.prefWidth(anyNum), 0.0D);
 503     }
 504 
 505     @Test public void nullSkinNodeAndSpecifiedSizeYieldsSpecifiedComputedPrefWidth() {
 506         double anyNum = -2;
 507         popup.setSkin(null);
 508         popup.setPrefWidth(3.0D);
 509         assertEquals(3.0D, popup.prefWidth(anyNum), 0.0D);
 510     }
 511 
 512     @Test public void popupControlSkinNodeAndUseComputedSizeYieldsZeroComputedPrefWidth() {
 513         double anyNum = -2;
 514         popup.setSkin(new PopupControlSkin());
 515         popup.setPrefWidth(PopupControl.USE_COMPUTED_SIZE);
 516         assertEquals(0.0D, popup.prefWidth(anyNum), 0.0D);
 517     }
 518 
 519     @Test public void tooltipSkinNodeAndUseComputedSizeYieldsSomePrefWidth() {
 520         double anyNum = 10;
 521         Tooltip tooltip = new Tooltip("Hello");
 522         TooltipSkin skin = new TooltipSkin(tooltip);
 523         popup.setSkin(skin);
 524         popup.getScene().getRoot().impl_processCSS(true);
 525 
 526         popup.setPrefWidth(PopupControl.USE_COMPUTED_SIZE);
 527         assertEquals(popup.getSkin().getNode().prefWidth(anyNum), popup.prefWidth(anyNum), 0.0D);
 528     }
 529 
 530     @Test public void specifiedSkinNodeAndSpecifiedSizeYieldsSpecifiedComputedPrefWidth() {
 531         double anyNum = -2;
 532         popup.setSkin(new PopupControlSkin());
 533         popup.setPrefWidth(3.0D);
 534         assertEquals(3.0D, popup.prefWidth(anyNum), 0.0D);
 535     }
 536 
 537     @Test public void nullSkinNodeAndUseComputedSizeYieldsZeroComputedPrefHeight() {
 538         double anyNum = -2;
 539         popup.setSkin(null);
 540         popup.setPrefHeight(PopupControl.USE_COMPUTED_SIZE);
 541         assertEquals(0.0D, popup.prefHeight(anyNum), 0.0D);
 542     }
 543 
 544     @Test public void nullSkinNodeAndSpecifiedSizeYieldsSpecifiedComputedPrefHeight() {
 545         double anyNum = -2;
 546         popup.setSkin(null);
 547         popup.setPrefHeight(3.0D);
 548         assertEquals(3.0D, popup.prefHeight(anyNum), 0.0D);
 549     }
 550 
 551     @Test public void popupControlSkinNodeAndUseComputedSizeYieldsZeroComputedPrefHeight() {
 552         double anyNum = -2;
 553         popup.setSkin(new PopupControlSkin());
 554         popup.setPrefHeight(PopupControl.USE_COMPUTED_SIZE);
 555         assertEquals(0.0D, popup.prefHeight(anyNum), 0.0D);
 556     }
 557 
 558     @Test public void tooltipSkinNodeAndUseComputedSizeYieldsSomePrefHeight() {
 559         double anyNum = 10;
 560         Tooltip tooltip = new Tooltip("Hello");
 561         TooltipSkin skin = new TooltipSkin(tooltip);
 562         popup.setSkin(skin);
 563         popup.getScene().getRoot().impl_processCSS(true);
 564 
 565         popup.setPrefHeight(PopupControl.USE_COMPUTED_SIZE);
 566         assertEquals(popup.getSkin().getNode().prefHeight(anyNum), popup.prefHeight(anyNum), 0.0D);
 567     }
 568 
 569     @Test public void specifiedSkinNodeAndSpecifiedSizeYieldsSpecifiedComputedPrefHeight() {
 570         double anyNum = -2;
 571         popup.setSkin(new PopupControlSkin());
 572         popup.setPrefHeight(3.0D);
 573         assertEquals(3.0D, popup.prefHeight(anyNum), 0.0D);
 574     }
 575 
 576     @Test public void nullSkinNodeAndUseComputedSizeYieldsZeroComputedMaxWidth() {
 577         double anyNum = -2;
 578         popup.setSkin(null);
 579         popup.setMaxWidth(PopupControl.USE_COMPUTED_SIZE);
 580         assertEquals(0.0D, popup.maxWidth(anyNum), 0.0D);
 581     }
 582 
 583     @Test public void nullSkinNodeAndSpecifiedSizeYieldsSpecifiedComputedMaxWidth() {
 584         double anyNum = -2;
 585         popup.setSkin(null);
 586         popup.setMaxWidth(3.0D);
 587         assertEquals(3.0D, popup.maxWidth(anyNum), 0.0D);
 588     }
 589 
 590     @Test public void popupControlSkinNodeAndUseComputedSizeYieldsZeroComputedMaxWidth() {
 591         double anyNum = -2;
 592         popup.setSkin(new PopupControlSkin());
 593         popup.setMaxWidth(PopupControl.USE_COMPUTED_SIZE);
 594         assertEquals(0.0D, popup.maxWidth(anyNum), 0.0D);
 595     }
 596 
 597     @Test public void tooltipSkinNodeAndUseComputedSizeYieldsSomeMaxWidth() {
 598         double anyNum = 10;
 599         Tooltip tooltip = new Tooltip("Hello");
 600         TooltipSkin skin = new TooltipSkin(tooltip);
 601         popup.setSkin(skin);
 602         popup.getScene().getRoot().impl_processCSS(true);
 603 
 604         popup.setMaxWidth(PopupControl.USE_COMPUTED_SIZE);
 605         assertEquals(popup.getSkin().getNode().maxWidth(anyNum), popup.maxWidth(anyNum), 0.0D);
 606     }
 607 
 608     @Test public void specifiedSkinNodeAndSpecifiedSizeYieldsSpecifiedComputedMaxWidth() {
 609         double anyNum = -2;
 610         popup.setSkin(new PopupControlSkin());
 611         popup.setMaxWidth(3.0D);
 612         assertEquals(3.0D, popup.maxWidth(anyNum), 0.0D);
 613     }
 614 
 615     @Test public void nullSkinNodeAndUseComputedSizeYieldsZeroComputedMaxHeight() {
 616         double anyNum = -2;
 617         popup.setSkin(null);
 618         popup.setMaxHeight(PopupControl.USE_COMPUTED_SIZE);
 619         assertEquals(0.0D, popup.maxHeight(anyNum), 0.0D);
 620     }
 621 
 622     @Test public void nullSkinNodeAndSpecifiedSizeYieldsSpecifiedComputedMaxHeight() {
 623         double anyNum = -2;
 624         popup.setSkin(null);
 625         popup.setMaxHeight(3.0D);
 626         assertEquals(3.0D, popup.maxHeight(anyNum), 0.0D);
 627     }
 628 
 629     @Test public void popupControlSkinNodeAndUseComputedSizeYieldsZeroComputedMaxHeight() {
 630         double anyNum = -2;
 631         popup.setSkin(new PopupControlSkin());
 632         popup.setMaxHeight(PopupControl.USE_COMPUTED_SIZE);
 633         assertEquals(0.0D, popup.maxHeight(anyNum), 0.0D);
 634     }
 635 
 636     @Test public void tooltipSkinNodeAndUseComputedSizeYieldsSomeMaxHeight() {
 637         double anyNum = 10;
 638         Tooltip tooltip = new Tooltip("Hello");
 639         TooltipSkin skin = new TooltipSkin(tooltip);
 640         popup.setSkin(skin);
 641         popup.getScene().getRoot().impl_processCSS(true);
 642 
 643         popup.setMaxHeight(PopupControl.USE_COMPUTED_SIZE);
 644         assertEquals(popup.getSkin().getNode().maxHeight(anyNum), popup.maxHeight(anyNum), 0.0D);
 645     }
 646 
 647     @Test public void specifiedSkinNodeAndSpecifiedSizeYieldsSpecifiedComputedMaxHeight() {
 648         double anyNum = -2;
 649         popup.setSkin(new PopupControlSkin());
 650         popup.setMaxHeight(3.0D);
 651         assertEquals(3.0D, popup.maxHeight(anyNum), 0.0D);
 652     }
 653 
 654     //TODO: test computePref____ methods
 655 
 656 }