1 /*
   2  * Copyright (c) 2011, 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.layout;
  27 
  28 import javafx.css.ParsedValue;
  29 import javafx.css.CssMetaData;
  30 import javafx.css.CssParser;
  31 import javafx.css.StyleableProperty;
  32 import static org.junit.Assert.assertEquals;
  33 import static org.junit.Assert.assertNull;
  34 import javafx.geometry.Insets;
  35 import javafx.geometry.Orientation;
  36 import javafx.geometry.Pos;
  37 import javafx.scene.Node;
  38 import javafx.scene.Scene;
  39 import javafx.scene.shape.Rectangle;
  40 import javafx.stage.Stage;
  41 import org.junit.Assert;
  42 
  43 import org.junit.Before;
  44 import org.junit.Test;
  45 
  46 
  47 public class TilePaneTest {
  48 
  49     TilePane tilepane;
  50     TilePane htilepane;
  51     TilePane vtilepane;
  52 
  53     @Before public void setUp() {
  54         tilepane = new TilePane(); // 12 children
  55         for(int i = 0; i < 6; i++) {
  56             MockResizable child1 = new MockResizable(50,60, 100,200, 500,600);
  57             Rectangle child2 = new Rectangle(100, 100);
  58             tilepane.getChildren().addAll(child1, child2);
  59         }
  60 
  61         htilepane = new TilePane(Orientation.HORIZONTAL); // 8 children
  62         for(int i = 0; i < 4; i++) {
  63             MockResizable child1 = new MockResizable(200,300);
  64             Rectangle child2 = new Rectangle(100, 100);
  65             htilepane.getChildren().addAll(child1, child2);
  66         }
  67 
  68         vtilepane = new TilePane(Orientation.VERTICAL); // 8 children
  69         for(int i = 0; i < 4; i++) {
  70             MockResizable child1 = new MockResizable(200,300);
  71             Rectangle child2 = new Rectangle(100, 100);
  72             vtilepane.getChildren().addAll(child1, child2);
  73         }
  74 
  75     }
  76 
  77     @Test public void testOrientationDefaultsToHorizontal() {
  78         assertEquals(Orientation.HORIZONTAL, tilepane.getOrientation());
  79     }
  80 
  81     @Test public void testPrefColumnsDefault() {
  82         assertEquals(5, tilepane.getPrefColumns());
  83     }
  84 
  85     @Test public void testPrefRowsDefault() {
  86         assertEquals(5, vtilepane.getPrefColumns());
  87     }
  88 
  89     @Test public void testPrefTileWidthDefaultsToUSE_COMPUTED_SIZE() {
  90         assertEquals(Region.USE_COMPUTED_SIZE, tilepane.getPrefTileWidth(), 0);
  91     }
  92 
  93     @Test public void testPrefTileHeightDefaultsToUSE_COMPUTED_SIZE() {
  94         assertEquals(Region.USE_COMPUTED_SIZE, tilepane.getPrefTileHeight(), 0);
  95     }
  96 
  97     @Test public void testAlignmentDefaultsToTopLeft() {
  98         assertEquals(Pos.TOP_LEFT, tilepane.getAlignment());
  99     }
 100 
 101     @Test public void testTileAlignmentDefaultsToCenter() {
 102         assertEquals(Pos.CENTER, tilepane.getTileAlignment());
 103     }
 104 
 105     @Test public void testTilePaneNulls() {
 106         tilepane.setAlignment(null);
 107         tilepane.setTileAlignment(null);
 108         tilepane.setOrientation(null);
 109 
 110         // this musn't throw NPE
 111         tilepane.autosize();
 112         tilepane.layout();
 113 
 114         assertNull(null, tilepane.getAlignment());
 115         assertNull(null, tilepane.getTileAlignment());
 116         assertNull(null, tilepane.getOrientation());
 117         assertNull(null, tilepane.alignmentProperty().get());
 118         assertNull(null, tilepane.tileAlignmentProperty().get());
 119         assertNull(null, tilepane.orientationProperty().get());
 120     }
 121 
 122     @Test public void testHorizontalTilePaneMinSize() {
 123         assertEquals(200, htilepane.minWidth(-1), 1e-100);
 124         assertEquals(2400, htilepane.minHeight(100), 1e-100);
 125     }
 126 
 127     @Test public void testHorizontalTilePanePrefSize() {
 128         assertEquals(1000, htilepane.prefWidth(-1), 1e-100);
 129         assertEquals(600, htilepane.prefHeight(-1), 1e-100);
 130     }
 131 
 132     @Test public void testVerticalTilePaneMinSize() {
 133         assertEquals(300, vtilepane.minHeight(-1), 1e-100);
 134         assertEquals(1600, vtilepane.minWidth(300), 1e-100);
 135     }
 136 
 137     @Test public void testVerticalTilePanePrefSize() {
 138         assertEquals(1500, vtilepane.prefHeight(-1), 1e-100);
 139         assertEquals(400, vtilepane.prefWidth(-1), 1e-100);
 140     }
 141 
 142 
 143     @Test public void testEmptyHorizontalTilePaneMinWidthIsZero() {
 144         TilePane Tilepane = new TilePane();
 145 
 146         assertEquals(0, Tilepane.minWidth(-1), 0);
 147     }
 148 
 149     @Test public void testEmptyHorizontalTilePaneMinHeightIsZero() {
 150         TilePane Tilepane = new TilePane();
 151 
 152         assertEquals(0, Tilepane.minHeight(-1), 0);
 153     }
 154 
 155     @Test public void testEmptyVerticalTilePaneMinWidthIsZero() {
 156         TilePane Tilepane = new TilePane(Orientation.VERTICAL);
 157 
 158         assertEquals(0, Tilepane.minWidth(-1), 0);
 159     }
 160 
 161     @Test public void testEmptyVerticalTilePaneMinHeightIsZero() {
 162         TilePane Tilepane = new TilePane(Orientation.VERTICAL);
 163 
 164         assertEquals(0, Tilepane.minHeight(-1), 0);
 165     }
 166 
 167     @Test public void testLayoutWithPrefSize() {
 168         tilepane.autosize();
 169         tilepane.layout();
 170 
 171         // test a handful
 172         Node first = tilepane.getChildren().get(0);
 173         Node last = tilepane.getChildren().get(11);
 174 
 175         assertEquals(0, first.getLayoutX(), 1e-100);
 176         assertEquals(0, first.getLayoutY(), 1e-100);
 177         assertEquals(100, first.getLayoutBounds().getWidth(), 1e-100);
 178         assertEquals(200, first.getLayoutBounds().getHeight(), 1e-100);
 179         assertEquals(100, last.getLayoutX(), 1e-100);
 180         assertEquals(450, last.getLayoutY(), 1e-100);
 181         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 182         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 183     }
 184 
 185     @Test public void testLayoutWithLargerThanPrefSize() {
 186         tilepane.resize(800,800);
 187         tilepane.layout();
 188 
 189         Node first = tilepane.getChildren().get(0);
 190         Node last = tilepane.getChildren().get(11);
 191 
 192         assertEquals(0, first.getLayoutX(), 1e-100);
 193         assertEquals(0, first.getLayoutY(), 1e-100);
 194         assertEquals(100, first.getLayoutBounds().getWidth(), 1e-100);
 195         assertEquals(200, first.getLayoutBounds().getHeight(), 1e-100);
 196         assertEquals(300, last.getLayoutX(), 1e-100);
 197         assertEquals(250, last.getLayoutY(), 1e-100);
 198         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 199         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 200     }
 201 
 202     @Test public void testHorizontalTilePaneAlignmentTopLeft() {
 203         htilepane.setAlignment(Pos.TOP_LEFT);
 204         htilepane.resize(700,1000);
 205         htilepane.layout();
 206 
 207         // test a handful
 208         Node first = htilepane.getChildren().get(0);
 209         Node last = htilepane.getChildren().get(7);
 210 
 211         assertEquals(0, first.getLayoutX(), 1e-100);
 212         assertEquals(0, first.getLayoutY(), 1e-100);
 213         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 214         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 215         assertEquals(250, last.getLayoutX(), 1e-100);
 216         assertEquals(700, last.getLayoutY(), 1e-100);
 217         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 218         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 219     }
 220 
 221     @Test public void testHorizontalTilePaneAlignmentTopCenter() {
 222         htilepane.setAlignment(Pos.TOP_CENTER);
 223         htilepane.resize(700,1000);
 224         htilepane.layout();
 225 
 226         // test a handful
 227         Node first = htilepane.getChildren().get(0);
 228         Node last = htilepane.getChildren().get(7);
 229 
 230         assertEquals(50, first.getLayoutX(), 1e-100);
 231         assertEquals(0, first.getLayoutY(), 1e-100);
 232         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 233         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 234         assertEquals(400, last.getLayoutX(), 1e-100);
 235         assertEquals(700, last.getLayoutY(), 1e-100);
 236         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 237         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 238     }
 239 
 240     @Test public void testHorizontalTilePaneAlignmentTopRight() {
 241         htilepane.setAlignment(Pos.TOP_RIGHT);
 242         htilepane.resize(700,1000);
 243         htilepane.layout();
 244 
 245         // test a handful
 246         Node first = htilepane.getChildren().get(0);
 247         Node last = htilepane.getChildren().get(7);
 248 
 249         assertEquals(100, first.getLayoutX(), 1e-100);
 250         assertEquals(0, first.getLayoutY(), 1e-100);
 251         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 252         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 253         assertEquals(550, last.getLayoutX(), 1e-100);
 254         assertEquals(700, last.getLayoutY(), 1e-100);
 255         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 256         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 257     }
 258 
 259     @Test public void testHorizontalTilePaneAlignmentCenterLeft() {
 260         htilepane.setAlignment(Pos.CENTER_LEFT);
 261         htilepane.resize(700,1000);
 262         htilepane.layout();
 263 
 264         // test a handful
 265         Node first = htilepane.getChildren().get(0);
 266         Node last = htilepane.getChildren().get(7);
 267 
 268         assertEquals(0, first.getLayoutX(), 1e-100);
 269         assertEquals(50, first.getLayoutY(), 1e-100);
 270         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 271         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 272         assertEquals(250, last.getLayoutX(), 1e-100);
 273         assertEquals(750, last.getLayoutY(), 1e-100);
 274         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 275         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 276     }
 277 
 278     @Test public void testHorizontalTilePaneAlignmentCenter() {
 279         htilepane.setAlignment(Pos.CENTER);
 280         htilepane.resize(700,1000);
 281         htilepane.layout();
 282 
 283         // test a handful
 284         Node first = htilepane.getChildren().get(0);
 285         Node last = htilepane.getChildren().get(7);
 286 
 287         assertEquals(50, first.getLayoutX(), 1e-100);
 288         assertEquals(50, first.getLayoutY(), 1e-100);
 289         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 290         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 291         assertEquals(400, last.getLayoutX(), 1e-100);
 292         assertEquals(750, last.getLayoutY(), 1e-100);
 293         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 294         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 295     }
 296 
 297     @Test public void testHorizontalTilePaneAlignmentCenterRight() {
 298         htilepane.setAlignment(Pos.CENTER_RIGHT);
 299         htilepane.resize(700,1000);
 300         htilepane.layout();
 301 
 302         // test a handful
 303         Node first = htilepane.getChildren().get(0);
 304         Node last = htilepane.getChildren().get(7);
 305 
 306         assertEquals(100, first.getLayoutX(), 1e-100);
 307         assertEquals(50, first.getLayoutY(), 1e-100);
 308         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 309         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 310         assertEquals(550, last.getLayoutX(), 1e-100);
 311         assertEquals(750, last.getLayoutY(), 1e-100);
 312         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 313         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 314     }
 315 
 316     @Test public void testHorizontalTilePaneAlignmentBottomLeft() {
 317         htilepane.setAlignment(Pos.BOTTOM_LEFT);
 318         htilepane.resize(700,1000);
 319         htilepane.layout();
 320 
 321         // test a handful
 322         Node first = htilepane.getChildren().get(0);
 323         Node last = htilepane.getChildren().get(7);
 324 
 325         assertEquals(0, first.getLayoutX(), 1e-100);
 326         assertEquals(100, first.getLayoutY(), 1e-100);
 327         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 328         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 329         assertEquals(250, last.getLayoutX(), 1e-100);
 330         assertEquals(800, last.getLayoutY(), 1e-100);
 331         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 332         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 333     }
 334 
 335     @Test public void testHorizontalTilePaneAlignmentBottomCenter() {
 336         htilepane.setAlignment(Pos.BOTTOM_CENTER);
 337         htilepane.resize(700,1000);
 338         htilepane.layout();
 339 
 340         // test a handful
 341         Node first = htilepane.getChildren().get(0);
 342         Node last = htilepane.getChildren().get(7);
 343 
 344         assertEquals(50, first.getLayoutX(), 1e-100);
 345         assertEquals(100, first.getLayoutY(), 1e-100);
 346         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 347         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 348         assertEquals(400, last.getLayoutX(), 1e-100);
 349         assertEquals(800, last.getLayoutY(), 1e-100);
 350         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 351         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 352     }
 353 
 354     @Test public void testHorizontalTilePaneAlignmentBottomRight() {
 355         htilepane.setAlignment(Pos.BOTTOM_RIGHT);
 356         htilepane.resize(700,1000);
 357         htilepane.layout();
 358 
 359         // test a handful
 360         Node first = htilepane.getChildren().get(0);
 361         Node last = htilepane.getChildren().get(7);
 362 
 363         assertEquals(100, first.getLayoutX(), 1e-100);
 364         assertEquals(100, first.getLayoutY(), 1e-100);
 365         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 366         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 367         assertEquals(550, last.getLayoutX(), 1e-100);
 368         assertEquals(800, last.getLayoutY(), 1e-100);
 369         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 370         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 371     }
 372 
 373     @Test public void testVerticalTilePaneAlignmentTopLeft() {
 374         vtilepane.setAlignment(Pos.TOP_LEFT);
 375         vtilepane.resize(700,1000);
 376         vtilepane.layout();
 377 
 378         // test a handful
 379         Node first = vtilepane.getChildren().get(0);
 380         Node last = vtilepane.getChildren().get(7);
 381 
 382         assertEquals(0, first.getLayoutX(), 1e-100);
 383         assertEquals(0, first.getLayoutY(), 1e-100);
 384         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 385         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 386         assertEquals(450, last.getLayoutX(), 1e-100);
 387         assertEquals(400, last.getLayoutY(), 1e-100);
 388         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 389         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 390     }
 391 
 392     @Test public void testVerticalTilePaneAlignmentTopCenter() {
 393         vtilepane.setAlignment(Pos.TOP_CENTER);
 394         vtilepane.resize(700,1000);
 395         vtilepane.layout();
 396 
 397         // test a handful
 398         Node first = vtilepane.getChildren().get(0);
 399         Node last = vtilepane.getChildren().get(7);
 400 
 401         assertEquals(50, first.getLayoutX(), 1e-100);
 402         assertEquals(0, first.getLayoutY(), 1e-100);
 403         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 404         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 405         assertEquals(500, last.getLayoutX(), 1e-100);
 406         assertEquals(400, last.getLayoutY(), 1e-100);
 407         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 408         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 409     }
 410 
 411     @Test public void testVerticalTilePaneAlignmentTopRight() {
 412         vtilepane.setAlignment(Pos.TOP_RIGHT);
 413         vtilepane.resize(700,1000);
 414         vtilepane.layout();
 415 
 416         // test a handful
 417         Node first = vtilepane.getChildren().get(0);
 418         Node last = vtilepane.getChildren().get(7);
 419 
 420         assertEquals(100, first.getLayoutX(), 1e-100);
 421         assertEquals(0, first.getLayoutY(), 1e-100);
 422         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 423         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 424         assertEquals(550, last.getLayoutX(), 1e-100);
 425         assertEquals(400, last.getLayoutY(), 1e-100);
 426         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 427         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 428     }
 429 
 430     @Test public void testVerticalTilePaneAlignmentCenterLeft() {
 431         vtilepane.setAlignment(Pos.CENTER_LEFT);
 432         vtilepane.resize(700,1000);
 433         vtilepane.layout();
 434 
 435         // test a handful
 436         Node first = vtilepane.getChildren().get(0);
 437         Node last = vtilepane.getChildren().get(7);
 438 
 439         assertEquals(0, first.getLayoutX(), 1e-100);
 440         assertEquals(50, first.getLayoutY(), 1e-100);
 441         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 442         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 443         assertEquals(450, last.getLayoutX(), 1e-100);
 444         assertEquals(600, last.getLayoutY(), 1e-100);
 445         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 446         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 447     }
 448 
 449     @Test public void testVerticalTilePaneAlignmentCenter() {
 450         vtilepane.setAlignment(Pos.CENTER);
 451         vtilepane.resize(700,1000);
 452         vtilepane.layout();
 453 
 454         // test a handful
 455         Node first = vtilepane.getChildren().get(0);
 456         Node last = vtilepane.getChildren().get(7);
 457 
 458         assertEquals(50, first.getLayoutX(), 1e-100);
 459         assertEquals(50, first.getLayoutY(), 1e-100);
 460         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 461         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 462         assertEquals(500, last.getLayoutX(), 1e-100);
 463         assertEquals(600, last.getLayoutY(), 1e-100);
 464         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 465         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 466     }
 467 
 468     @Test public void testVerticalTilePaneAlignmentCenterRight() {
 469         vtilepane.setAlignment(Pos.CENTER_RIGHT);
 470         vtilepane.resize(700,1000);
 471         vtilepane.layout();
 472 
 473         // test a handful
 474         Node first = vtilepane.getChildren().get(0);
 475         Node last = vtilepane.getChildren().get(7);
 476 
 477         assertEquals(100, first.getLayoutX(), 1e-100);
 478         assertEquals(50, first.getLayoutY(), 1e-100);
 479         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 480         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 481         assertEquals(550, last.getLayoutX(), 1e-100);
 482         assertEquals(600, last.getLayoutY(), 1e-100);
 483         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 484         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 485     }
 486 
 487     @Test public void testVerticalTilePaneAlignmentBottomLeft() {
 488         vtilepane.setAlignment(Pos.BOTTOM_LEFT);
 489         vtilepane.resize(700,1000);
 490         vtilepane.layout();
 491 
 492         // test a handful
 493         Node first = vtilepane.getChildren().get(0);
 494         Node last = vtilepane.getChildren().get(7);
 495 
 496         assertEquals(0, first.getLayoutX(), 1e-100);
 497         assertEquals(100, first.getLayoutY(), 1e-100);
 498         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 499         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 500         assertEquals(450, last.getLayoutX(), 1e-100);
 501         assertEquals(800, last.getLayoutY(), 1e-100);
 502         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 503         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 504     }
 505 
 506     @Test public void testVerticalTilePaneAlignmentBottomCenter() {
 507         vtilepane.setAlignment(Pos.BOTTOM_CENTER);
 508         vtilepane.resize(700,1000);
 509         vtilepane.layout();
 510 
 511         // test a handful
 512         Node first = vtilepane.getChildren().get(0);
 513         Node last = vtilepane.getChildren().get(7);
 514 
 515         assertEquals(50, first.getLayoutX(), 1e-100);
 516         assertEquals(100, first.getLayoutY(), 1e-100);
 517         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 518         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 519         assertEquals(500, last.getLayoutX(), 1e-100);
 520         assertEquals(800, last.getLayoutY(), 1e-100);
 521         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 522         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 523     }
 524 
 525     @Test public void testVerticalTilePaneAlignmentBottomRight() {
 526         vtilepane.setAlignment(Pos.BOTTOM_RIGHT);
 527         vtilepane.resize(700,1000);
 528         vtilepane.layout();
 529 
 530         // test a handful
 531         Node first = vtilepane.getChildren().get(0);
 532         Node last = vtilepane.getChildren().get(7);
 533 
 534         assertEquals(100, first.getLayoutX(), 1e-100);
 535         assertEquals(100, first.getLayoutY(), 1e-100);
 536         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 537         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 538         assertEquals(550, last.getLayoutX(), 1e-100);
 539         assertEquals(800, last.getLayoutY(), 1e-100);
 540         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 541         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 542     }
 543 
 544     @Test public void testTileAlignmentTopLeft() {
 545         htilepane.setTileAlignment(Pos.TOP_LEFT);
 546         htilepane.resize(700,1000);
 547         htilepane.layout();
 548 
 549         // test a handful
 550         Node first = htilepane.getChildren().get(0);
 551         Node last = htilepane.getChildren().get(7);
 552 
 553         assertEquals(0, first.getLayoutX(), 1e-100);
 554         assertEquals(0, first.getLayoutY(), 1e-100);
 555         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 556         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 557         assertEquals(200, last.getLayoutX(), 1e-100);
 558         assertEquals(600, last.getLayoutY(), 1e-100);
 559         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 560         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 561     }
 562 
 563     @Test public void testTileAlignmentTopCenter() {
 564         htilepane.setTileAlignment(Pos.TOP_CENTER);
 565         htilepane.resize(700,1000);
 566         htilepane.layout();
 567 
 568         // test a handful
 569         Node first = htilepane.getChildren().get(0);
 570         Node last = htilepane.getChildren().get(7);
 571 
 572         assertEquals(0, first.getLayoutX(), 1e-100);
 573         assertEquals(0, first.getLayoutY(), 1e-100);
 574         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 575         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 576         assertEquals(250, last.getLayoutX(), 1e-100);
 577         assertEquals(600, last.getLayoutY(), 1e-100);
 578         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 579         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 580     }
 581 
 582     @Test public void testTileAlignmentTopRight() {
 583         htilepane.setTileAlignment(Pos.TOP_RIGHT);
 584         htilepane.resize(700,1000);
 585         htilepane.layout();
 586 
 587         // test a handful
 588         Node first = htilepane.getChildren().get(0);
 589         Node last = htilepane.getChildren().get(7);
 590 
 591         assertEquals(0, first.getLayoutX(), 1e-100);
 592         assertEquals(0, first.getLayoutY(), 1e-100);
 593         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 594         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 595         assertEquals(300, last.getLayoutX(), 1e-100);
 596         assertEquals(600, last.getLayoutY(), 1e-100);
 597         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 598         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 599     }
 600 
 601     @Test public void testTileAlignmentCenterLeft() {
 602         htilepane.setTileAlignment(Pos.CENTER_LEFT);
 603         htilepane.resize(700,1000);
 604         htilepane.layout();
 605 
 606         // test a handful
 607         Node first = htilepane.getChildren().get(0);
 608         Node last = htilepane.getChildren().get(7);
 609 
 610         assertEquals(0, first.getLayoutX(), 1e-100);
 611         assertEquals(0, first.getLayoutY(), 1e-100);
 612         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 613         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 614         assertEquals(200, last.getLayoutX(), 1e-100);
 615         assertEquals(700, last.getLayoutY(), 1e-100);
 616         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 617         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 618     }
 619 
 620     @Test public void testTileAlignmentCenter() {
 621         htilepane.setTileAlignment(Pos.CENTER);
 622         htilepane.resize(700,1000);
 623         htilepane.layout();
 624 
 625         // test a handful
 626         Node first = htilepane.getChildren().get(0);
 627         Node last = htilepane.getChildren().get(7);
 628 
 629         assertEquals(0, first.getLayoutX(), 1e-100);
 630         assertEquals(0, first.getLayoutY(), 1e-100);
 631         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 632         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 633         assertEquals(250, last.getLayoutX(), 1e-100);
 634         assertEquals(700, last.getLayoutY(), 1e-100);
 635         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 636         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 637     }
 638 
 639     @Test public void testTileAlignmentCenterRight() {
 640         htilepane.setTileAlignment(Pos.CENTER_RIGHT);
 641         htilepane.resize(700,1000);
 642         htilepane.layout();
 643 
 644         // test a handful
 645         Node first = htilepane.getChildren().get(0);
 646         Node last = htilepane.getChildren().get(7);
 647 
 648         assertEquals(0, first.getLayoutX(), 1e-100);
 649         assertEquals(0, first.getLayoutY(), 1e-100);
 650         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 651         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 652         assertEquals(300, last.getLayoutX(), 1e-100);
 653         assertEquals(700, last.getLayoutY(), 1e-100);
 654         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 655         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 656     }
 657 
 658     @Test public void testTileAlignmentBottomLeft() {
 659         htilepane.setTileAlignment(Pos.BOTTOM_LEFT);
 660         htilepane.resize(700,1000);
 661         htilepane.layout();
 662 
 663         // test a handful
 664         Node first = htilepane.getChildren().get(0);
 665         Node last = htilepane.getChildren().get(7);
 666 
 667         assertEquals(0, first.getLayoutX(), 1e-100);
 668         assertEquals(0, first.getLayoutY(), 1e-100);
 669         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 670         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 671         assertEquals(200, last.getLayoutX(), 1e-100);
 672         assertEquals(800, last.getLayoutY(), 1e-100);
 673         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 674         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 675     }
 676 
 677     @Test public void testTileAlignmentBottomCenter() {
 678         htilepane.setTileAlignment(Pos.BOTTOM_CENTER);
 679         htilepane.resize(700,1000);
 680         htilepane.layout();
 681 
 682         // test a handful
 683         Node first = htilepane.getChildren().get(0);
 684         Node last = htilepane.getChildren().get(7);
 685 
 686         assertEquals(0, first.getLayoutX(), 1e-100);
 687         assertEquals(0, first.getLayoutY(), 1e-100);
 688         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 689         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 690         assertEquals(250, last.getLayoutX(), 1e-100);
 691         assertEquals(800, last.getLayoutY(), 1e-100);
 692         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 693         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 694     }
 695 
 696     @Test public void testTileAlignmentBottomRight() {
 697         htilepane.setTileAlignment(Pos.BOTTOM_RIGHT);
 698         htilepane.resize(700,1000);
 699         htilepane.layout();
 700 
 701         // test a handful
 702         Node first = htilepane.getChildren().get(0);
 703         Node last = htilepane.getChildren().get(7);
 704 
 705         assertEquals(0, first.getLayoutX(), 1e-100);
 706         assertEquals(0, first.getLayoutY(), 1e-100);
 707         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 708         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 709         assertEquals(300, last.getLayoutX(), 1e-100);
 710         assertEquals(800, last.getLayoutY(), 1e-100);
 711         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 712         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 713     }
 714 
 715     @Test public void testSetMarginConstraint() {
 716         MockResizable child1 = new MockResizable(100,200, 300,400, 500,600);
 717 
 718         assertNull(TilePane.getMargin(child1));
 719 
 720         Insets margin = new Insets(10,20,30,40);
 721         TilePane.setMargin(child1, margin);
 722         assertEquals(margin, TilePane.getMargin(child1));
 723 
 724         TilePane.setMargin(child1, null);
 725         assertNull(TilePane.getMargin(child1));
 726     }
 727 
 728     @Test public void testMarginConstraint() {
 729         TilePane tilepane = new TilePane();
 730 
 731         for(int i = 0; i < 6; i++) {
 732             MockResizable child1 = new MockResizable(50,60, 100,200, 500,600);
 733             Rectangle child2 = new Rectangle(100, 100);
 734             tilepane.getChildren().addAll(child1, child2);
 735         }
 736 
 737         // test a handful
 738         Node first = tilepane.getChildren().get(0);
 739         Node last = tilepane.getChildren().get(11);
 740 
 741         TilePane.setMargin(first, new Insets(10,20,30,40));
 742 
 743         assertEquals(160, tilepane.minWidth(-1), 1e-100);
 744         assertEquals(720, tilepane.minHeight(-1), 1e-100);
 745         assertEquals(800, tilepane.prefWidth(-1), 1e-100);
 746         assertEquals(720, tilepane.prefHeight(-1), 1e-100);
 747 
 748         tilepane.autosize();
 749         tilepane.layout();
 750 
 751         assertEquals(40, first.getLayoutX(), 1e-100);
 752         assertEquals(10, first.getLayoutY(), 1e-100);
 753         assertEquals(100, first.getLayoutBounds().getWidth(), 1e-100);
 754         assertEquals(200, first.getLayoutBounds().getHeight(), 1e-100);
 755         assertEquals(190, last.getLayoutX(), 1e-100);
 756         assertEquals(550, last.getLayoutY(), 1e-100);
 757         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 758         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 759 
 760 
 761     }
 762 
 763     @Test public void testSetAlignmentConstraint() {
 764         MockResizable child1 = new MockResizable(100,200, 300,400, 500,600);
 765 
 766         assertNull(TilePane.getAlignment(child1));
 767 
 768         TilePane.setAlignment(child1, Pos.TOP_LEFT);
 769         assertEquals(Pos.TOP_LEFT, TilePane.getAlignment(child1));
 770 
 771         TilePane.setAlignment(child1, null);
 772         assertNull(TilePane.getAlignment(child1));
 773     }
 774 
 775     @Test public void testHorizontalTilePaneAlignmentConstraint() {
 776         TilePane tilepane = new TilePane();
 777 
 778         for(int i = 0; i < 6; i++) {
 779             MockResizable child1 = new MockResizable(50,60, 100,200, 500,600);
 780             Rectangle child2 = new Rectangle(100, 100);
 781             tilepane.getChildren().addAll(child1, child2);
 782         }
 783 
 784         assertEquals(100, tilepane.minWidth(-1), 1e-100);
 785         assertEquals(600, tilepane.minHeight(-1), 1e-100);
 786         assertEquals(500, tilepane.prefWidth(-1), 1e-100);
 787         assertEquals(600, tilepane.prefHeight(-1), 1e-100);
 788 
 789         tilepane.autosize();
 790         tilepane.layout();
 791 
 792         // test a handful
 793         Node first = tilepane.getChildren().get(0);
 794         Node last = tilepane.getChildren().get(11);
 795 
 796         TilePane.setAlignment(last, Pos.TOP_LEFT);
 797 
 798         tilepane.autosize();
 799         tilepane.layout();
 800 
 801         assertEquals(0, first.getLayoutX(), 1e-100);
 802         assertEquals(0, first.getLayoutY(), 1e-100);
 803         assertEquals(100, first.getLayoutBounds().getWidth(), 1e-100);
 804         assertEquals(200, first.getLayoutBounds().getHeight(), 1e-100);
 805         assertEquals(100, last.getLayoutX(), 1e-100);
 806         assertEquals(400, last.getLayoutY(), 1e-100);
 807         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 808         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 809 
 810         tilepane.resize(800,800);
 811         tilepane.layout();
 812         assertEquals(0, first.getLayoutX(), 1e-100);
 813         assertEquals(0, first.getLayoutY(), 1e-100);
 814         assertEquals(100, first.getLayoutBounds().getWidth(), 1e-100);
 815         assertEquals(200, first.getLayoutBounds().getHeight(), 1e-100);
 816         assertEquals(300, last.getLayoutX(), 1e-100);
 817         assertEquals(200, last.getLayoutY(), 1e-100);
 818         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 819         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 820     }
 821 
 822     @Test public void testWithHorizontalBiasedChild() {
 823         TilePane tilepane = new TilePane();
 824 
 825         MockBiased biased = new MockBiased(Orientation.HORIZONTAL, 100,100);
 826         Rectangle rect = new Rectangle(150,50);
 827 
 828         tilepane.getChildren().addAll(biased,rect);
 829 
 830         assertEquals(750, tilepane.prefWidth(-1), 1e-100);
 831         assertEquals(67, tilepane.prefHeight(-1), 1e-100);
 832 
 833         tilepane.autosize();
 834         tilepane.layout();
 835         assertEquals(0, biased.getLayoutX(), 1e-100);
 836         assertEquals(0, biased.getLayoutY(), 1e-100);
 837         assertEquals(150, biased.getLayoutBounds().getWidth(), 1e-100);
 838         assertEquals(67, biased.getLayoutBounds().getHeight(), 1e-100);
 839         assertEquals(150, rect.getLayoutX(), 1e-100);
 840         assertEquals(9, rect.getLayoutY(), 1e-100);
 841         assertEquals(150, rect.getLayoutBounds().getWidth(), 1e-100);
 842         assertEquals(50, rect.getLayoutBounds().getHeight(), 1e-100);
 843 
 844     }
 845 
 846     @Test public void testWithVerticalBiasedChild() {
 847         TilePane tilepane = new TilePane();
 848 
 849         MockBiased biased = new MockBiased(Orientation.VERTICAL, 100,100);
 850         Rectangle rect = new Rectangle(50,150);
 851 
 852         tilepane.getChildren().addAll(biased,rect);
 853 
 854         assertEquals(335.00, tilepane.prefWidth(-1), 1e-100);
 855         assertEquals(150, tilepane.prefHeight(-1), 1e-100);
 856 
 857         tilepane.autosize();
 858         tilepane.layout();
 859         assertEquals(0, biased.getLayoutX(), 1e-100);
 860         assertEquals(0, biased.getLayoutY(), 1e-100);
 861         assertEquals(67, biased.getLayoutBounds().getWidth(), 1e-100);
 862         assertEquals(150, biased.getLayoutBounds().getHeight(), 1e-100);
 863         assertEquals(76, rect.getLayoutX(), 1e-100);
 864         assertEquals(0, rect.getLayoutY(), 1e-100);
 865         assertEquals(50, rect.getLayoutBounds().getWidth(), 1e-100);
 866         assertEquals(150, rect.getLayoutBounds().getHeight(), 1e-100);
 867     }
 868 
 869     @Test public void testHorizontalTilePaneWithFixedTileWidth() {
 870         TilePane tilepane = new TilePane();
 871         tilepane.setPrefColumns(3);
 872         tilepane.setPrefTileWidth(200);
 873 
 874         for(int i = 0; i < 4; i++) {
 875             MockResizable child1 = new MockResizable(150,300);
 876             Rectangle child2 = new Rectangle(100, 100);
 877             tilepane.getChildren().addAll(child1, child2);
 878         }
 879 
 880         assertEquals(200, tilepane.getTileWidth(), 0);
 881         assertEquals(300, tilepane.getTileHeight(), 0);
 882 
 883         assertEquals(600, tilepane.prefWidth(-1), 0);
 884         assertEquals(900, tilepane.prefHeight(-1), 0);
 885 
 886         tilepane.autosize();
 887         tilepane.layout();
 888 
 889         assertEquals(200, tilepane.getTileWidth(), 0);
 890         assertEquals(300, tilepane.getTileHeight(), 0);
 891 
 892         // test a handful
 893         Node first = tilepane.getChildren().get(0);
 894         Node last = tilepane.getChildren().get(7);
 895 
 896         assertEquals(0, first.getLayoutX(), 1e-100);
 897         assertEquals(0, first.getLayoutY(), 1e-100);
 898         assertEquals(200, first.getLayoutBounds().getWidth(), 1e-100);
 899         assertEquals(300, first.getLayoutBounds().getHeight(), 1e-100);
 900         assertEquals(250, last.getLayoutX(), 1e-100);
 901         assertEquals(700, last.getLayoutY(), 1e-100);
 902         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 903         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 904     }
 905 
 906     @Test public void testHorizontalTilePaneWithFixedTileHeight() {
 907         TilePane tilepane = new TilePane();
 908         tilepane.setPrefColumns(3);
 909         tilepane.setPrefTileHeight(200);
 910 
 911         for(int i = 0; i < 4; i++) {
 912             MockResizable child1 = new MockResizable(300,150);
 913             Rectangle child2 = new Rectangle(100, 100);
 914             tilepane.getChildren().addAll(child1, child2);
 915         }
 916 
 917 
 918         assertEquals(300, tilepane.getTileWidth(), 0);
 919         assertEquals(200, tilepane.getTileHeight(), 0);
 920 
 921         assertEquals(900, tilepane.prefWidth(-1), 0);
 922         assertEquals(600, tilepane.prefHeight(-1), 0);
 923 
 924         tilepane.autosize();
 925         tilepane.layout();
 926 
 927         assertEquals(300, tilepane.getTileWidth(), 0);
 928         assertEquals(200, tilepane.getTileHeight(), 0);
 929 
 930         // test a handful
 931         Node first = tilepane.getChildren().get(0);
 932         Node last = tilepane.getChildren().get(7);
 933 
 934         assertEquals(0, first.getLayoutX(), 1e-100);
 935         assertEquals(0, first.getLayoutY(), 1e-100);
 936         assertEquals(300, first.getLayoutBounds().getWidth(), 1e-100);
 937         assertEquals(200, first.getLayoutBounds().getHeight(), 1e-100);
 938         assertEquals(400, last.getLayoutX(), 1e-100);
 939         assertEquals(450, last.getLayoutY(), 1e-100);
 940         assertEquals(100, last.getLayoutBounds().getWidth(), 1e-100);
 941         assertEquals(100, last.getLayoutBounds().getHeight(), 1e-100);
 942     }
 943 
 944     @Test public void testHorizontalTilePaneWithPrefSize() {
 945         TilePane tilepane = new TilePane(Orientation.HORIZONTAL);
 946         tilepane.setPrefSize(100,100);
 947 
 948         for(int i = 0; i < 8; i++) {
 949             Rectangle child = new Rectangle(40, 40);
 950             tilepane.getChildren().add(child);
 951         }
 952 
 953 
 954         assertEquals(40, tilepane.getTileWidth(), 0);
 955         assertEquals(40, tilepane.getTileHeight(), 0);
 956 
 957         assertEquals(100, tilepane.prefWidth(-1), 0);
 958         assertEquals(100, tilepane.prefHeight(-1), 0);
 959 
 960         tilepane.autosize();
 961         tilepane.layout();
 962 
 963         assertEquals(40, tilepane.getTileWidth(), 0);
 964         assertEquals(40, tilepane.getTileHeight(), 0);
 965 
 966         Node first = tilepane.getChildren().get(0);
 967 
 968         assertEquals(0, first.getLayoutX(), 1e-100);
 969         assertEquals(0, first.getLayoutY(), 1e-100);
 970         assertEquals(100, tilepane.getLayoutBounds().getWidth(), 1e-100);
 971         assertEquals(160, tilepane.getLayoutBounds().getHeight(), 1e-100);
 972     }
 973 
 974     @Test public void testVerticalTilePaneWithPrefSize() {
 975         TilePane tilepane = new TilePane(Orientation.VERTICAL);
 976         tilepane.setPrefSize(100,100);
 977 
 978         for(int i = 0; i < 8; i++) {
 979             Rectangle child = new Rectangle(40, 40);
 980             tilepane.getChildren().add(child);
 981         }
 982 
 983         assertEquals(40, tilepane.getTileWidth(), 0);
 984         assertEquals(40, tilepane.getTileHeight(), 0);
 985 
 986         assertEquals(100, tilepane.prefWidth(-1), 0);
 987         assertEquals(100, tilepane.prefHeight(-1), 0);
 988         tilepane.autosize();
 989         tilepane.layout();
 990 
 991         assertEquals(40, tilepane.getTileWidth(), 0);
 992         assertEquals(40, tilepane.getTileHeight(), 0);
 993 
 994         Node first = tilepane.getChildren().get(0);
 995 
 996         assertEquals(0, first.getLayoutX(), 1e-100);
 997         assertEquals(0, first.getLayoutY(), 1e-100);
 998         assertEquals(160, tilepane.getLayoutBounds().getWidth(), 1e-100);
 999         assertEquals(100, tilepane.getLayoutBounds().getHeight(), 1e-100);
1000     }
1001 
1002     @Test public void testTilePaneWithBaselineAlignment() {
1003         TilePane tilepane = new TilePane(Orientation.HORIZONTAL);
1004         tilepane.setPrefSize(100,100);
1005         tilepane.setTileAlignment(Pos.BASELINE_CENTER);
1006 
1007         for(int i = 0; i < 8; i++) {
1008             Rectangle child = new Rectangle(40, 40);
1009             tilepane.getChildren().add(child);
1010         }
1011 
1012         tilepane.autosize();
1013         tilepane.layout();
1014 
1015         Node first = tilepane.getChildren().get(0);
1016 
1017         assertEquals(0, first.getLayoutX(), 1e-100);
1018         assertEquals(0, first.getLayoutY(), 1e-100);
1019         assertEquals(100, tilepane.getLayoutBounds().getWidth(), 1e-100);
1020         assertEquals(160, tilepane.getLayoutBounds().getHeight(), 1e-100);
1021     }
1022 
1023     @Test public void testCSSsetPrefTileWidthAndHeight_RT20388() {
1024         Scene scene = new Scene(tilepane);
1025         Stage stage = new Stage();
1026         stage.setScene(scene);
1027         stage.show();
1028 
1029         ParsedValue pv = new CssParser().parseExpr("-fx-perf-tile-width","67.0");
1030         Object val = pv.convert(null);
1031         try {
1032             ((StyleableProperty)tilepane.prefTileWidthProperty()).applyStyle(null, val);
1033             assertEquals(67.0, tilepane.getPrefTileWidth(), 0.00001);
1034         } catch (Exception e) {
1035             Assert.fail(e.toString());
1036         }
1037     }
1038 
1039     @Test public void testCSSsetPrefRow_RT20437() {
1040         Scene scene = new Scene(tilepane);
1041         Stage stage = new Stage();
1042         stage.setScene(scene);
1043         stage.show();
1044 
1045         ParsedValue pv = new CssParser().parseExpr("-fx-perf-rows","2");
1046         Object val = pv.convert(null);
1047         try {
1048             ((StyleableProperty)tilepane.prefRowsProperty()).applyStyle(null, val);
1049             assertEquals(2, tilepane.getPrefRows(), 0.00001);
1050         } catch (Exception e) {
1051             Assert.fail(e.toString());
1052         }
1053     }
1054 
1055 
1056     @Test public void testCSSsetPrefColumns_RT22929() {
1057         Scene scene = new Scene(tilepane);
1058         Stage stage = new Stage();
1059         stage.setScene(scene);
1060         stage.show();
1061 
1062         ParsedValue pv = new CssParser().parseExpr("-fx-pref-columns","2");
1063         Object val = pv.convert(null);
1064         CssMetaData prop = ((StyleableProperty)tilepane.prefColumnsProperty()).getCssMetaData();
1065         try {
1066             ((StyleableProperty)tilepane.prefColumnsProperty()).applyStyle(null,val);
1067             assertEquals(2, tilepane.getPrefColumns(), 0.00001);
1068         } catch (Exception e) {
1069             Assert.fail(e.toString());
1070         }
1071     }
1072 }