changeset 5294:94d55039bc0d

[TEST-ONLY]: Moved many manual Region tests over to automated visual tests. Not all tests enabled. Finding bugs along the way in NGRegion.
author rbair
date Mon, 07 Oct 2013 16:25:34 -0700
parents 78d4d74d1100
children eff4787e6884
files .idea/RegionTests.iml .idea/SystemTests.iml .idea/modules.xml modules/graphics/src/main/java/com/sun/javafx/sg/prism/NGRegion.java tests/manual/RegionTests/src/main/java/region/RegionBackgroundFillUITest.java tests/manual/RegionTests/src/main/java/region/RegionBackgroundImageUITest.java tests/manual/RegionTests/src/main/java/region/RegionBorderImageUITest.java tests/manual/RegionTests/src/main/java/region/RegionBorderStrokeUITest.java tests/manual/RegionTests/src/main/java/region/RegionShapeUITest.java tests/manual/RegionTests/src/main/java/region/RegionUITestBase.java tests/manual/RegionTests/src/main/resources/region/BlackButton.png tests/manual/RegionTests/src/main/resources/region/WindowsButton.png tests/manual/RegionTests/src/main/resources/region/border.png tests/manual/RegionTests/src/main/resources/region/border@2x.png tests/manual/RegionTests/src/main/resources/region/checker.png tests/manual/RegionTests/src/main/resources/region/popover-no-arrow-empty.png tests/manual/RegionTests/src/main/resources/region/popover-no-arrow-empty@2x.png tests/manual/RegionTests/src/main/resources/region/test20x20.png tests/manual/RegionTests/src/main/resources/region/test20x20@2x.png tests/manual/RegionTests/src/main/resources/region/test48x48.png tests/manual/RegionTests/src/main/resources/region/test48x48@2x.png tests/system/src/test/java/javafx/scene/layout/RegionBackgroundFillUITest.java tests/system/src/test/java/javafx/scene/layout/RegionBackgroundImageUITest.java tests/system/src/test/java/javafx/scene/layout/RegionBorderImageUITest.java tests/system/src/test/java/javafx/scene/layout/RegionBorderStrokeUITest.java tests/system/src/test/java/javafx/scene/layout/RegionShapeUITest.java tests/system/src/test/java/javafx/scene/layout/RegionUITestBase.java tests/system/src/test/java/testharness/VisualTestBase.java tests/system/src/test/resources/javafx/scene/layout/RegionBackgroundImageUITest.html tests/system/src/test/resources/javafx/scene/layout/border-stretch.png tests/system/src/test/resources/javafx/scene/layout/border-uneven.png tests/system/src/test/resources/javafx/scene/layout/border.png tests/system/src/test/resources/javafx/scene/layout/test20x20.png tests/system/src/test/resources/javafx/scene/layout/test20x20@2x.png tests/system/src/test/resources/javafx/scene/layout/test48x48.png tests/system/src/test/resources/javafx/scene/layout/test48x48@2x.png
diffstat 36 files changed, 4417 insertions(+), 3158 deletions(-) [+]
line wrap: on
line diff
--- a/.idea/RegionTests.iml	Mon Oct 07 16:23:57 2013 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" inherit-compiler-output="true">
-    <exclude-output />
-    <content url="file://$MODULE_DIR$/tests/manual/RegionTests">
-      <sourceFolder url="file://$MODULE_DIR$/tests/manual/RegionTests/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/tests/manual/RegionTests/src/main/resources" isTestSource="false" />
-    </content>
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="module" module-name="base" />
-    <orderEntry type="module" module-name="graphics" />
-    <orderEntry type="module" module-name="controls" />
-    <orderEntry type="inheritedJdk" />
-  </component>
-</module>
-
--- a/.idea/SystemTests.iml	Mon Oct 07 16:23:57 2013 -0700
+++ b/.idea/SystemTests.iml	Mon Oct 07 16:25:34 2013 -0700
@@ -4,6 +4,7 @@
     <exclude-output />
     <content url="file://$MODULE_DIR$/tests/system">
       <sourceFolder url="file://$MODULE_DIR$/tests/system/src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/tests/system/src/test/resources" isTestSource="true" />
     </content>
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="module" module-name="base" />
--- a/.idea/modules.xml	Mon Oct 07 16:23:57 2013 -0700
+++ b/.idea/modules.xml	Mon Oct 07 16:25:34 2013 -0700
@@ -7,7 +7,6 @@
       <module fileurl="file://$PROJECT_DIR$/.idea/GraphicsPerformance.iml" filepath="$PROJECT_DIR$/.idea/GraphicsPerformance.iml" />
       <module fileurl="file://$PROJECT_DIR$/.idea/Hello.iml" filepath="$PROJECT_DIR$/.idea/Hello.iml" />
       <module fileurl="file://$PROJECT_DIR$/.idea/Modena.iml" filepath="$PROJECT_DIR$/.idea/Modena.iml" />
-      <module fileurl="file://$PROJECT_DIR$/.idea/RegionTests.iml" filepath="$PROJECT_DIR$/.idea/RegionTests.iml" />
       <module fileurl="file://$PROJECT_DIR$/.idea/Shape3DToy.iml" filepath="$PROJECT_DIR$/.idea/Shape3DToy.iml" />
       <module fileurl="file://$PROJECT_DIR$/.idea/StretchyGrid.iml" filepath="$PROJECT_DIR$/.idea/StretchyGrid.iml" />
       <module fileurl="file://$PROJECT_DIR$/.idea/SystemTests.iml" filepath="$PROJECT_DIR$/.idea/SystemTests.iml" />
--- a/modules/graphics/src/main/java/com/sun/javafx/sg/prism/NGRegion.java	Mon Oct 07 16:23:57 2013 -0700
+++ b/modules/graphics/src/main/java/com/sun/javafx/sg/prism/NGRegion.java	Mon Oct 07 16:25:34 2013 -0700
@@ -1877,6 +1877,7 @@
                         float sy1 = dstY < regionY ? srcY + srcH * (-tileY / tileHeight) : srcY;
                         float sx2 = dstX2 > regionX2 ? srcX2 - srcW * ((dstX2 - regionX2) / tileWidth) : srcX2;
                         float sy2 = dstY2 > regionY2 ? srcY2 - srcH * ((dstY2 - regionY2) / tileHeight) : srcY2;
+//                        System.out.println("g.drawTexture(texture, " + dx1 + ", " + dy1 + ", " + dx2 + ", " + dy2 + ", " + sx1 + ", " + sy1 + ", " + sx2 + ", " + sy2 + ")");
                         g.drawTexture(texture, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2);
                     }
                     dstX += xIncrement;
--- a/tests/manual/RegionTests/src/main/java/region/RegionBackgroundFillUITest.java	Mon Oct 07 16:23:57 2013 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,377 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package region;
-
-import javafx.scene.layout.Region;
-
-/**
- *
- */
-public class RegionBackgroundFillUITest extends RegionUITestBase {
-    public static void main(String[] args) {
-        launch(args);
-    }
-
-    /**************************************************************************
-     *                                                                        *
-     * Tests for background fills. We start with a series of simple tests     *
-     * with a single solid fill, including exercising different insets and    *
-     * corner radii.                                                          *
-     *                                                                        *
-     *************************************************************************/
-
-    public void basicFill(Region region) {
-        region.setStyle("-fx-background-color: red;");
-    }
-
-    public void translucentFill(Region region) {
-        region.setStyle("-fx-background-color: rgba(255, 0, 0, .2);");
-    }
-
-    public void basicFill_Insets1(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-insets: 5");
-    }
-
-    public void basicFill_Insets2(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-insets: 5 10");
-    }
-
-    public void basicFill_Insets3(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-insets: 5 10 15");
-    }
-
-    public void basicFill_Insets4(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-insets: 5 10 15 20");
-    }
-
-    public void basicFill_NegativeInsets1(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-insets: -5");
-    }
-
-    public void basicFill_NegativeInsets2(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-insets: -5 -10");
-    }
-
-    public void basicFill_NegativeInsets3(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-insets: -5 -10 -15");
-    }
-
-    public void basicFill_NegativeInsets4(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-insets: -5 -10 -15 -20");
-    }
-
-    public void basicFill_MixedInsets(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-insets: 10 10 -10 10");
-    }
-
-    public void basicFill_Radius1(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-radius: 10");
-    }
-
-    public void basicFill_Radius2(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-radius: 10 20");
-    }
-
-    public void basicFill_Radius3(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-radius: 10 20 30");
-    }
-
-    public void basicFill_Radius4(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-radius: 10 20 30 40");
-    }
-
-    // TODO need to write tests for percentage based radii
-//    public void basicFill_PercentageRadius(Region region) {
-//        region.setStyle(
-//                "-fx-background-color: red;" +
-//                "-fx-background-radius: 5% 10% 15% 20%");
-//    }
-
-    // TODO need to check on the syntax for the 8 independent corner radii...
-//    public void basicFill_Radius8(Region region) {
-//        region.setStyle(
-//                "-fx-background-color: red;" +
-//                "-fx-background-radius: 10 20 30 40 50 60 70 80");
-//    }
-
-    public void basicFill_RadiusAndInsets(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-radius: 10 20 30 40;" +
-                "-fx-background-insets: 5 10 15 20");
-    }
-
-    // NOTE: A negative radius from CSS is treated as 0.
-    public void basicFill_NegativeRadius1(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-radius: -10");
-    }
-
-    // NOTE: A negative radius from CSS is treated as 0.
-    public void basicFill_NegativeRadius2(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-radius: -10 -20");
-    }
-
-    // NOTE: A negative radius from CSS is treated as 0.
-    public void basicFill_NegativeRadius3(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-radius: -10 -20 -30");
-    }
-
-    // NOTE: A negative radius from CSS is treated as 0.
-    public void basicFill_NegativeRadius4(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-radius: -10 -20 -30 -40");
-    }
-
-    /**************************************************************************
-     *                                                                        *
-     * Tests for ImagePattern fills and gradient fills                        *
-     *                                                                        *
-     *************************************************************************/
-
-    public void imageFill(Region region) {
-        region.setStyle("-fx-background-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void imageFill_MixedInsets(Region region) {
-        region.setStyle(
-                "-fx-background-color: repeating-image-pattern('region/test20x20.png');" +
-                "-fx-background-insets: 5 10 -15 20");
-    }
-
-    public void imageFill_Radius4(Region region) {
-        region.setStyle(
-                "-fx-background-color: repeating-image-pattern('region/test20x20.png');" +
-                "-fx-background-radius: 10 20 30 40");
-    }
-
-    public void imageFill_MissingImage(Region region) {
-        region.setStyle(
-                "-fx-background-color: repeating-image-pattern('region/missing.png');" +
-                "-fx-background-radius: 10 20 30 40");
-    }
-
-    public void imageFill_Stretched(Region region) {
-        region.setStyle("-fx-background-color: image-pattern('region/test20x20.png');");
-    }
-
-    public void imageFill_Stretched2(Region region) {
-        region.setStyle("-fx-background-color: image-pattern('region/test20x20.png', 0, 0, 1, 1);");
-    }
-
-    public void imageFill_Stretched3(Region region) {
-        region.setStyle("-fx-background-color: image-pattern('region/test20x20.png', 0, 0, 1, 1, true);");
-    }
-
-    public void imageFill_Tiled(Region region) {
-        region.setStyle("-fx-background-color: image-pattern('region/test20x20.png', 0, 0, 40, 40, false);");
-    }
-
-    public void linearFill(Region region) {
-        region.setStyle("-fx-background-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linearFill2(Region region) {
-        region.setStyle("-fx-background-color: linear-gradient(to right, red 0%, blue 100%);");
-    }
-
-    public void linearFill_MixedInsets(Region region) {
-        region.setStyle(
-                "-fx-background-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                "-fx-background-insets: 5 10 -15 20");
-    }
-
-    public void linearFill_Radius4(Region region) {
-        region.setStyle(
-                "-fx-background-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                "-fx-background-radius: 10 20 30 40");
-    }
-
-    // TODO I could write more tests here for other linear fill options, like repeat etc, also radial fill
-
-    /**************************************************************************
-     *                                                                        *
-     * Tests for stacking fills with different radii etc                      *
-     *                                                                        *
-     *************************************************************************/
-
-    public void testScenario1(Region region) {
-        region.setStyle(
-                "-fx-background-color: red;" +
-                "-fx-background-insets: 0 0 -10 0, 0, 10, 20;" +
-                "-fx-background-radius: 10 20 30 40;" +
-                "-fx-padding: 10 20 30 40;");
-    }
-
-    public void testScenario2(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, green, blue, grey;" +
-                "-fx-background-insets: 0 0 -10 0, 0, 10, 20;" +
-                "-fx-background-radius: 5 10 15 20, 25, 30 35 40 45;" +
-                "-fx-padding: 10 20 30 40;");
-    }
-
-    public void testScenario3(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, green, blue, grey;" +
-                "-fx-background-insets: 0 0 -10 0, 0, 10, 20;" +
-                "-fx-background-radius: 10 20 30 40;" +
-                "-fx-padding: 10 20 30 40;");
-    }
-
-    public void testScenario4(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, green, blue, repeating-image-pattern('region/test20x20.png');" +
-                "-fx-background-insets: 0 0 -10 0, 0, 10, 20;" +
-                "-fx-background-radius: 10 20 30 40;" +
-                "-fx-padding: 10 20 30 40;");
-    }
-
-    public void testScenario5(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, green, repeating-image-pattern('region/test20x20.png'), blue;" +
-                "-fx-background-insets: 0 0 -10 0, 0, 10, 20;" +
-                "-fx-background-radius: 10 20 30 40;" +
-                "-fx-padding: 10 20 30 40;");
-    }
-
-    public void testExample1(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, green, blue;" +
-                "-fx-background-insets: 4, 8, 12, 16;" + // An extra value here, which should be ignored
-                "-fx-background-radius: 14;");
-    }
-
-    /**************************************************************************
-     *                                                                        *
-     * Tests for odd edge cases                                               *
-     *                                                                        *
-     *************************************************************************/
-
-    public void testOnePixelTopInset(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, yellow;" +
-                "-fx-background-insets: 0, 1 0 0 0;");
-    }
-
-    public void testOnePixelRightInset(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, yellow;" +
-                "-fx-background-insets: 0, 0 1 0 0;");
-    }
-
-    public void testOnePixelBottomInset(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, yellow;" +
-                "-fx-background-insets: 0, 0 0 1 0;");
-    }
-
-    public void testOnePixelLeftInset(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, yellow;" +
-                "-fx-background-insets: 0, 0 0 0 1;");
-    }
-
-    public void testHalfPixelTopInset(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, yellow;" +
-                "-fx-background-insets: 0, .5 0 0 0;");
-    }
-
-    public void testHalfPixelRightInset(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, yellow;" +
-                "-fx-background-insets: 0, 0 .5 0 0;");
-    }
-
-    public void testHalfPixelBottomInset(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, yellow;" +
-                "-fx-background-insets: 0, 0 0 .5 0;");
-    }
-
-    public void testHalfPixelLeftInset(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, yellow;" +
-                "-fx-background-insets: 0, 0 0 0 .5;");
-    }
-
-    public void testHalfPixelTopLeftInset(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, yellow;" +
-                "-fx-background-insets: 0, .5 0 0 .5;");
-    }
-
-    public void testNoInsets(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, yellow;" +
-                "-fx-background-insets: 0, 0 ;");
-    }
-
-    public void testYellowOnRed(Region region) {
-        region.setStyle(
-                "-fx-background-color: red, yellow;" +
-                "-fx-background-insets: 0, 40;");
-    }
-
-    // TODO to be thorough, I wonder if we can write a test where NaN or +/- Infinity can be passed via CSS to radii?
-
-    // This just plain shouldn't work.
-//    public void testImageFill(Region region) {
-//        region.setStyle("-fx-background-color: url('region/test20x20.png');");
-//    }
-}
--- a/tests/manual/RegionTests/src/main/java/region/RegionBackgroundImageUITest.java	Mon Oct 07 16:23:57 2013 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,427 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package region;
-
-import javafx.scene.layout.Region;
-
-/**
- * Visual tests for background images.
- */
-public class RegionBackgroundImageUITest extends RegionUITestBase {
-    public static void main(String[] args) {
-        launch(args);
-    }
-
-    /**************************************************************************
-     *                                                                        *
-     * Tests for aligned background images. The test image in use is chose    *
-     * to align naturally with the edge of the test region.                   *
-     *                                                                        *
-     *************************************************************************/
-
-    public void alignedImage(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');");
-    }
-
-    public void alignedImage_RepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-x");
-    }
-
-    public void alignedImage_RepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-y");
-    }
-
-    public void alignedImage_Space(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: space space");
-    }
-
-    public void alignedImage_Round(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: round");
-    }
-
-    public void alignedImage_RoundSpace(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: round space");
-    }
-
-    public void alignedImage_PositionCenter(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: center");
-    }
-
-    public void alignedImage_PositionCenterFiftyPercent(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: 50%");
-    }
-
-    public void alignedImage_PositionCenterLeft(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: left center");
-    }
-
-    public void alignedImage_PositionCenterRight(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: right center");
-    }
-
-    public void alignedImage_PositionCenterTop(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: center top");
-    }
-
-    public void alignedImage_PositionCenterBottom(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: center bottom");
-    }
-
-    public void alignedImage_PositionBottomRight(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: right bottom");
-    }
-
-    public void alignedImage_PositionCenterRepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-x;" +
-                        "-fx-background-position: center");
-    }
-
-    public void alignedImage_PositionCenterFiftyPercentRepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-x;" +
-                        "-fx-background-position: 50%");
-    }
-
-    public void alignedImage_PositionCenterLeftRepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-x;" +
-                        "-fx-background-position: left center");
-    }
-
-    public void alignedImage_PositionCenterRightRepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-x;" +
-                        "-fx-background-position: right center");
-    }
-
-    public void alignedImage_PositionCenterTopRepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-x;" +
-                        "-fx-background-position: center top");
-    }
-
-    public void alignedImage_PositionCenterBottomRepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-x;" +
-                        "-fx-background-position: center bottom");
-    }
-
-    public void alignedImage_PositionBottomRightRepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-x;" +
-                        "-fx-background-position: right bottom");
-    }
-
-    public void alignedImage_PositionCenterRepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-y;" +
-                        "-fx-background-position: center");
-    }
-
-    public void alignedImage_PositionCenterFiftyPercentRepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-y;" +
-                        "-fx-background-position: 50%");
-    }
-
-    public void alignedImage_PositionCenterLeftRepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-y;" +
-                        "-fx-background-position: left center");
-    }
-
-    public void alignedImage_PositionCenterRightRepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-y;" +
-                        "-fx-background-position: right center");
-    }
-
-    public void alignedImage_PositionCenterTopRepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-y;" +
-                        "-fx-background-position: center top");
-    }
-
-    public void alignedImage_PositionCenterBottomRepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-y;" +
-                        "-fx-background-position: center bottom");
-    }
-
-    public void alignedImage_PositionBottomRightRepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: repeat-y;" +
-                        "-fx-background-position: right bottom");
-    }
-
-    public void alignedImage_Position25PercentLeft(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: left 25% center");
-    }
-
-    public void alignedImage_Position25PercentRight(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: right 25% center");
-    }
-
-    // TODO should do from the top & bottom
-
-    // TODO should test that cover causes other properties to be ignored
-    public void alignedImage_Cover(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-size: cover;");
-    }
-
-    // TODO should test that contain causes other properties to be ignored
-    public void alignedImage_Contain(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-size: contain;");
-    }
-
-    public void alignedImage_ContainNoRepeat(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-size: contain;" +
-                        "-fx-background-repeat: no-repeat;");
-    }
-
-    public void unalignedImage(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');");
-    }
-
-    public void unalignedImage_RepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-x");
-    }
-
-    public void unalignedImage_RepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-y");
-    }
-
-    public void unalignedImage_Space(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: space space");
-    }
-
-    public void unalignedImage_Round(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: round");
-    }
-
-    public void unalignedImage_RoundSpace(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: round space");
-    }
-
-    public void unalignedImage_PositionCenter(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: center");
-    }
-
-    public void unalignedImage_PositionCenterFiftyPercent(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: 50%");
-    }
-
-    public void unalignedImage_PositionCenterLeft(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: left center");
-    }
-
-    public void unalignedImage_PositionCenterRight(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: right center");
-    }
-
-    public void unalignedImage_PositionCenterTop(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: center top");
-    }
-
-    public void unalignedImage_PositionCenterBottom(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: center bottom");
-    }
-
-    public void unalignedImage_PositionBottomRight(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: right bottom");
-    }
-
-    public void unalignedImage_PositionCenterRepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-x;" +
-                        "-fx-background-position: center");
-    }
-
-    public void unalignedImage_PositionCenterFiftyPercentRepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-x;" +
-                        "-fx-background-position: 50%");
-    }
-
-    public void unalignedImage_PositionCenterLeftRepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-x;" +
-                        "-fx-background-position: left center");
-    }
-
-    public void unalignedImage_PositionCenterRightRepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-x;" +
-                        "-fx-background-position: right center");
-    }
-
-    public void unalignedImage_PositionCenterTopRepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-x;" +
-                        "-fx-background-position: center top");
-    }
-
-    public void unalignedImage_PositionCenterBottomRepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-x;" +
-                        "-fx-background-position: center bottom");
-    }
-
-    public void unalignedImage_PositionBottomRightRepeatX(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-x;" +
-                        "-fx-background-position: right bottom");
-    }
-
-    public void unalignedImage_PositionCenterRepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-y;" +
-                        "-fx-background-position: center");
-    }
-
-    public void unalignedImage_PositionCenterFiftyPercentRepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-y;" +
-                        "-fx-background-position: 50%");
-    }
-
-    public void unalignedImage_PositionCenterLeftRepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-y;" +
-                        "-fx-background-position: left center");
-    }
-
-    public void unalignedImage_PositionCenterRightRepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-y;" +
-                        "-fx-background-position: right center");
-    }
-
-    public void unalignedImage_PositionCenterTopRepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-y;" +
-                        "-fx-background-position: center top");
-    }
-
-    public void unalignedImage_PositionCenterBottomRepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-y;" +
-                        "-fx-background-position: center bottom");
-    }
-
-    public void unalignedImage_PositionBottomRightRepeatY(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: repeat-y;" +
-                        "-fx-background-position: right bottom");
-    }
-
-    public void unalignedImage_Position25PercentLeft(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: left 25% center");
-    }
-
-    public void unalignedImage_Position25PercentRight(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-repeat: no-repeat;" +
-                        "-fx-background-position: right 25% center");
-    }
-
-    // TODO should do from the top & bottom
-
-    // TODO should test that cover causes other properties to be ignored
-    public void unalignedImage_Cover(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-size: cover;");
-    }
-
-    // TODO should test that contain causes other properties to be ignored
-    public void unalignedImage_Contain(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-size: contain;");
-    }
-
-    public void unalignedImage_ContainNoRepeat(Region region) {
-        region.setStyle("-fx-background-image: url('region/test48x48.png');" +
-                        "-fx-background-size: contain;" +
-                        "-fx-background-repeat: no-repeat;");
-    }
-
-    // TODO need to write tests for when there are multiple images
-
-    // TODO there are probably a hundred other combinations to try, easy.
-    // And then there are another thousand combinations where some of the
-    // settings are ignored, and we need to ensure that indeed they are ignored.
-    // TODO I need to turn most of these tests into proper unit tests as well
-    // so that we know that the CSS->Region process is working correctly.
-
-    // TODO need to write tests where SPACE is the repeat but only 2 tiles fit, and where only 1 tile fits.
-}
--- a/tests/manual/RegionTests/src/main/java/region/RegionBorderImageUITest.java	Mon Oct 07 16:23:57 2013 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,168 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package region;
-
-import javafx.scene.layout.Region;
-
-/**
- *
- */
-public class RegionBorderImageUITest extends RegionUITestBase {
-    public static void main(String[] args) {
-        launch(args);
-    }
-
-    public void button(Region region) {
-        region.setStyle(
-                "-fx-border-image-source: url('region/BlackButton.png');" +
-                "-fx-border-image-slice: 25 95 25 95 fill;" +
-                "-fx-border-image-width: 25 95 25 95;" +
-                "-fx-border-image-repeat: stretch;");
-    }
-
-    public void button2(Region region) {
-        region.setStyle(
-                "-fx-border-image-source: url('region/WindowsButton.png');" +
-                "-fx-border-image-slice: 24 5 24 5 fill;" +
-                "-fx-border-image-width: 24 5 24 5;" +
-                "-fx-border-image-repeat: stretch;");
-    }
-
-    public void test(Region region) {
-        region.setStyle(
-                "-fx-border-image-source: url('region/border.png');" +
-                "-fx-border-image-slice: 27;" +
-                "-fx-border-image-width: 27;" +
-                "-fx-border-image-repeat: round;");
-    }
-
-    public void test2(Region region) {
-        region.setStyle(
-                "-fx-border-image-source: url('region/border.png');" +
-                "-fx-border-image-slice: 27;" +
-                "-fx-border-image-width: 27;" +
-                "-fx-border-image-repeat: repeat;");
-    }
-
-    public void test3(Region region) {
-        region.setStyle(
-                "-fx-border-image-source: url('region/border.png');" +
-                "-fx-border-image-slice: 27;" +
-                "-fx-border-image-width: 27;" +
-                "-fx-border-image-repeat: space;");
-    }
-
-    public void test4(Region region) {
-        region.setStyle(
-                "-fx-border-image-source: url('region/border.png');" +
-                "-fx-border-image-slice: 27;" +
-                "-fx-border-image-width: 27;" +
-                "-fx-border-image-repeat: stretch;");
-    }
-
-    public void differentSliceAndWidths(Region region) {
-        region.setStyle(
-                "-fx-border-image-source: url('region/border.png');" +
-                "-fx-border-color:green;" +
-                "-fx-border-image-repeat: repeat;" +
-                "-fx-border-image-slice: 27;" +
-                "-fx-border-image-width: 10 15 20 25;");
-    }
-
-    public void withInsets(Region region) {
-        region.setStyle(
-                "-fx-border-image-source: url('region/popover-no-arrow-empty.png');" +
-                "-fx-border-image-slice: 78 50 60 50;" +
-                "-fx-border-image-width: 78 50 60 50;");
-    }
-
-    public void withInsets2(Region region) {
-        region.setStyle(
-                "-fx-border-image-source: url('region/popover-no-arrow-empty.png');" +
-                "-fx-border-image-slice: 78 50 60 50;" +
-                "-fx-border-image-width: 78 50 60 50;" +
-                "-fx-border-image-insets: -27 -37 -47 -37;");
-    }
-
-    public void repeatX(Region region) {
-        region.setStyle("-fx-border-image-source: url('region/border.png');" +
-                        "-fx-border-image-repeat: repeat-x;" +
-                        "-fx-border-image-slice: 28;" +
-                        "-fx-border-image-width: 28;");
-    }
-
-    public void repeatY(Region region) {
-        region.setStyle("-fx-border-image-source: url('region/border.png');" +
-                        "-fx-border-image-repeat: repeat-y;" +
-                        "-fx-border-image-slice: 28;" +
-                        "-fx-border-image-width: 28;");
-    }
-
-    public void testWider(Region region) {
-        region.setStyle(
-                "-fx-border-image-source: url('region/border.png');" +
-                "-fx-border-image-slice: 27;" +
-                "-fx-border-image-width: 40;" +
-                "-fx-border-image-repeat: round;");
-    }
-
-    public void testWider2(Region region) {
-        region.setStyle(
-                "-fx-border-image-source: url('region/border.png');" +
-                "-fx-border-image-slice: 27;" +
-                "-fx-border-image-width: 40;" +
-                "-fx-border-image-repeat: repeat;");
-    }
-
-    public void testWider3(Region region) {
-        region.setStyle(
-                "-fx-border-image-source: url('region/border.png');" +
-                "-fx-border-image-slice: 27;" +
-                "-fx-border-image-width: 40;" +
-                "-fx-border-image-repeat: space;");
-    }
-
-    public void testWider4(Region region) {
-        region.setStyle(
-                "-fx-border-image-source: url('region/border.png');" +
-                "-fx-border-image-slice: 27;" +
-                "-fx-border-image-width: 40;" +
-                "-fx-border-image-repeat: stretch;");
-    }
-
-    public void repeatXWider(Region region) {
-        region.setStyle("-fx-border-image-source: url('region/border.png');" +
-                        "-fx-border-image-repeat: repeat-x;" +
-                        "-fx-border-image-slice: 28;" +
-                        "-fx-border-image-width: 40;");
-    }
-
-    public void repeatYWider(Region region) {
-        region.setStyle("-fx-border-image-source: url('region/border.png');" +
-                        "-fx-border-image-repeat: repeat-y;" +
-                        "-fx-border-image-slice: 28;" +
-                        "-fx-border-image-width: 40;");
-    }
-}
--- a/tests/manual/RegionTests/src/main/java/region/RegionBorderStrokeUITest.java	Mon Oct 07 16:23:57 2013 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1005 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package region;
-
-import javafx.scene.layout.Region;
-
-/**
- *
- */
-public class RegionBorderStrokeUITest extends RegionUITestBase {
-    public static void main(String[] args) {
-        launch(args);
-    }
-
-    /**************************************************************************
-     *                                                                        *
-     * Tests for a color filled stroke                                        *
-     *                                                                        *
-     *************************************************************************/
-
-//    public void color_BorderWidth_Thin(Region region) {
-//        region.setStyle("-fx-background-color: lightgrey;" +
-//                        "-fx-border-style: solid;" +
-//                        "-fx-border-width: thin;" +
-//                        "-fx-border-color: red;");
-//    }
-
-    public void color_BorderWidth_Thin1(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-width: 1;" +
-                        "-fx-border-color: red;");
-    }
-
-//    public void color_BorderWidth_Medium(Region region) {
-//        region.setStyle("-fx-background-color: lightgrey;" +
-//                        "-fx-border-style: solid;" +
-//                        "-fx-border-width: medium;" +
-//                        "-fx-border-color: red;");
-//    }
-
-    public void color_BorderWidth_Medium2(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-width: 3;" +
-                        "-fx-border-color: red;");
-    }
-
-//    public void color_BorderWidth_Thick(Region region) {
-//        region.setStyle("-fx-background-color: lightgrey;" +
-//                        "-fx-border-style: solid;" +
-//                        "-fx-border-width: thick;" +
-//                        "-fx-border-color: red;");
-//    }
-
-    public void color_BorderWidth_Thick2(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_Solid(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_SolidPhase5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid phase 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_SolidCentered(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid centered;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_SolidInside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid inside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_SolidOutside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid outside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_SolidLineJoinBevel(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-join bevel;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_SolidLineJoinRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-join round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_SolidLineJoinMiter5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-join miter 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_SolidLineCapSquare(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-cap square;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_SolidLineCapButt(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-cap butt;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_SolidLineCapRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-cap round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_Dashed(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DashedPhase5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed phase 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DashedCentered(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed centered;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DashedInside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed inside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DashedOutside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed outside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DasheddLineJoinBevel(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-join bevel;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DashedLineJoinRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-join round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DashedLineJoinMiter5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-join miter 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DashedLineCapSquare(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-cap square;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DashedLineCapButt(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-cap butt;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DashedLineCapRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-cap round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_Dotted(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DottedPhase5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted phase 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DottedCentered(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted centered;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DottedInside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted inside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DottedOutside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted outside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DotteddLineJoinBevel(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-join bevel;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DottedLineJoinRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-join round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DottedLineJoinMiter5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-join miter 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DottedLineCapSquare(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-cap square;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DottedLineCapButt(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-cap butt;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_Style_DottedLineCapRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-cap round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: red;");
-    }
-
-    public void color_MultipleInsetBorders(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-color: red, green, blue;" +
-                        "-fx-border-width: 5, 10, 15;" +
-                        "-fx-border-insets: 0, 5, 15;");
-    }
-
-    public void color_UniformBorderRadius(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-background-radius: 15;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-radius: 15;");
-    }
-
-    public void color_NonuniformBorderRadius(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-background-radius: 25 20 25 30;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-radius: 15 20 25 30;");
-    }
-
-    public void color_NonuniformBorderWidths_uniformRadius(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-background-radius: 15;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 5 10 15 20;" +
-                        "-fx-border-radius: 15;");
-    }
-
-    public void color_NonuniformBorderWidths_nonuniformRadius(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-background-radius: 15 20 25 30;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 5 10 15 20;" +
-                        "-fx-border-radius: 15 20 25 30;");
-    }
-
-    /**************************************************************************
-     *                                                                        *
-     * Tests for an image-pattern filled stroke                               *
-     *                                                                        *
-     *************************************************************************/
-
-//    public void image_BorderWidth_Thin(Region region) {
-//        region.setStyle("-fx-background-color: lightgrey;" +
-//                        "-fx-border-style: solid;" +
-//                        "-fx-border-width: thin;" +
-//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-//    }
-
-    public void image_BorderWidth_Thin1(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-width: 1;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-//    public void image_BorderWidth_Medium(Region region) {
-//        region.setStyle("-fx-background-color: lightgrey;" +
-//                        "-fx-border-style: solid;" +
-//                        "-fx-border-width: medium;" +
-//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-//    }
-
-    public void image_BorderWidth_Medium2(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-width: 3;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-//    public void image_BorderWidth_Thick(Region region) {
-//        region.setStyle("-fx-background-color: lightgrey;" +
-//                        "-fx-border-style: solid;" +
-//                        "-fx-border-width: thick;" +
-//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-//    }
-
-    public void image_BorderWidth_Thick2(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_Solid(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_SolidPhase5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid phase 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_SolidCentered(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid centered;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_SolidInside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid inside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_SolidOutside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid outside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_SolidLineJoinBevel(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-join bevel;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_SolidLineJoinRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-join round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_SolidLineJoinMiter5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-join miter 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_SolidLineCapSquare(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-cap square;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_SolidLineCapButt(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-cap butt;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_SolidLineCapRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-cap round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_Dashed(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DashedPhase5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed phase 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DashedCentered(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed centered;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DashedInside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed inside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DashedOutside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed outside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DasheddLineJoinBevel(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-join bevel;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DashedLineJoinRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-join round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DashedLineJoinMiter5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-join miter 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DashedLineCapSquare(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-cap square;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DashedLineCapButt(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-cap butt;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DashedLineCapRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-cap round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_Dotted(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DottedPhase5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted phase 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DottedCentered(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted centered;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DottedInside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted inside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DottedOutside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted outside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DotteddLineJoinBevel(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-join bevel;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DottedLineJoinRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-join round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DottedLineJoinMiter5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-join miter 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DottedLineCapSquare(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-cap square;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DottedLineCapButt(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-cap butt;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_Style_DottedLineCapRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-cap round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
-    }
-
-    public void image_MultipleInsetBorders(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-color: red, green, blue;" +
-                        "-fx-border-width: 5, 10, 15;" +
-                        "-fx-border-insets: 0, 5, 15;");
-    }
-
-    public void image_UniformBorderRadius(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-background-radius: 15;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-radius: 15;");
-    }
-
-    public void image_NonuniformBorderRadius(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-background-radius: 25 20 25 30;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-radius: 15 20 25 30;");
-    }
-
-    public void image_NonuniformBorderWidths_uniformRadius(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-background-radius: 15;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
-                        "-fx-border-width: 5 10 15 20;" +
-                        "-fx-border-radius: 15;");
-    }
-
-    public void image_NonuniformBorderWidths_nonuniformRadius(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-background-radius: 15 20 25 30;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
-                        "-fx-border-width: 5 10 15 20;" +
-                        "-fx-border-radius: 15 20 25 30;");
-    }
-
-    /**************************************************************************
-     *                                                                        *
-     * Tests for a linear filled stroke                                       *
-     *                                                                        *
-     *************************************************************************/
-
-//    public void linear_BorderWidth_Thin(Region region) {
-//        region.setStyle("-fx-background-color: lightgrey;" +
-//                        "-fx-border-style: solid;" +
-//                        "-fx-border-width: thin;" +
-//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-//    }
-
-    public void linear_BorderWidth_Thin1(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-width: 1;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-//    public void linear_BorderWidth_Medium(Region region) {
-//        region.setStyle("-fx-background-color: lightgrey;" +
-//                        "-fx-border-style: solid;" +
-//                        "-fx-border-width: medium;" +
-//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-//    }
-
-    public void linear_BorderWidth_Medium2(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-width: 3;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-//    public void linear_BorderWidth_Thick(Region region) {
-//        region.setStyle("-fx-background-color: lightgrey;" +
-//                        "-fx-border-style: solid;" +
-//                        "-fx-border-width: thick;" +
-//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-//    }
-
-    public void linear_BorderWidth_Thick2(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_Solid(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_SolidPhase5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid phase 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_SolidCentered(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid centered;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_SolidInside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid inside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_SolidOutside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid outside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_SolidLineJoinBevel(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-join bevel;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_SolidLineJoinRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-join round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_SolidLineJoinMiter5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-join miter 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_SolidLineCapSquare(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-cap square;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_SolidLineCapButt(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-cap butt;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_SolidLineCapRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid line-cap round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_Dashed(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DashedPhase5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed phase 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DashedCentered(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed centered;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DashedInside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed inside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DashedOutside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed outside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DasheddLineJoinBevel(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-join bevel;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DashedLineJoinRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-join round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DashedLineJoinMiter5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-join miter 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DashedLineCapSquare(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-cap square;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DashedLineCapButt(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-cap butt;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DashedLineCapRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dashed line-cap round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_Dotted(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DottedPhase5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted phase 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DottedCentered(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted centered;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DottedInside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted inside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DottedOutside(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted outside;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DotteddLineJoinBevel(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-join bevel;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DottedLineJoinRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-join round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DottedLineJoinMiter5(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-join miter 5;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DottedLineCapSquare(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-cap square;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DottedLineCapButt(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-cap butt;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_Style_DottedLineCapRound(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: dotted line-cap round;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
-    }
-
-    public void linear_MultipleInsetBorders(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%), green, blue;" +
-                        "-fx-border-width: 5, 10, 15;" +
-                        "-fx-border-insets: 0, 5, 15;");
-    }
-
-    public void linear_UniformBorderRadius(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-background-radius: 15;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-radius: 15;");
-    }
-
-    public void linear_NonuniformBorderRadius(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-background-radius: 25 20 25 30;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-border-radius: 15 20 25 30;");
-    }
-
-    public void linear_NonuniformBorderWidths_uniformRadius(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-background-radius: 15;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-border-width: 5 10 15 20;" +
-                        "-fx-border-radius: 15;");
-    }
-
-    public void linear_NonuniformBorderWidths_nonuniformRadius(Region region) {
-        region.setStyle("-fx-background-color: lightgrey;" +
-                        "-fx-background-radius: 15 20 25 30;" +
-                        "-fx-border-style: solid;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-border-width: 5 10 15 20;" +
-                        "-fx-border-radius: 15 20 25 30;");
-    }
-}
--- a/tests/manual/RegionTests/src/main/java/region/RegionShapeUITest.java	Mon Oct 07 16:23:57 2013 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,944 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package region;
-
-import javafx.scene.layout.Region;
-
-/**
- * UI tests for Region Shape support. This is broken into basically three parts:
- *   - Background Fills (Solid fills, Image fills, Linear Fills, Radial Fills)
- *   - Background Images (...)
- *   - Border Strokes (...)
- *
- * Each of these is tested with the shape being centered & scaled, centered, scaled,
- * and neither centered nor scaled. We have some tests with multiple fills, multiple
- * images, multiple strokes, and then multiple fills / images/ strokes together. We
- * also have a test using an effect on the shape.
- */
-public class RegionShapeUITest extends RegionUITestBase {
-    private static final String ARROW = "\"M0 0 L100 0 L50 100 Z\"";
-
-    public static void main(String[] args) {
-        launch(args);
-    }
-
-    /**************************************************************************
-     *                                                                        *
-     * Tests for background fills. We start with a series of simple tests     *
-     * with a single solid fill, to exercise the most basic aspects of the    *
-     * shape support (such as making sure the shape is positioned in the      *
-     * expected places, etc).                                                 *
-     *                                                                        *
-     *************************************************************************/
-
-    public void noFills(Region region) {
-        region.setStyle("-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidFill(Region region) {
-        region.setStyle("-fx-background-color: red;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidFill_NotScaled(Region region) {
-        region.setStyle("-fx-background-color: red;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidFill_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-background-color: red;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void transparentFill(Region region) {
-        region.setStyle("-fx-background-color: rgba(255, 0, 0, .2);" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void transparentFill_NotScaled(Region region) {
-        region.setStyle("-fx-background-color: rgba(255, 0, 0, .2);" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void transparentFill_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-background-color: rgba(255, 0, 0, .2);" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    /**************************************************************************
-     *                                                                        *
-     * Tests for more complex fill scenarios, including the use of image      *
-     * fills and gradient fills                                               *
-     *                                                                        *
-     *************************************************************************/
-
-    public void twoSolidFills(Region region) {
-        region.setStyle("-fx-background-color: red, green;" +
-                        "-fx-background-insets: 0, 30;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void twoSolidFills_NotScaled(Region region) {
-        region.setStyle("-fx-background-color: red, green;" +
-                        "-fx-background-insets: 0, 30;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void twoSolidFills_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-background-color: red, green;" +
-                        "-fx-background-insets: 0, 30;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void twoSolidFills_independentInsets(Region region) {
-        region.setStyle("-fx-background-color: red, green;" +
-                        "-fx-background-insets: 0, 10 20 30 40;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void twoSolidFills_independentInsets_NotScaled(Region region) {
-        region.setStyle("-fx-background-color: red, green;" +
-                        "-fx-background-insets: 0, 10 20 30 40;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void twoSolidFills_independentInsets_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-background-color: red, green;" +
-                        "-fx-background-insets: 0, 10 20 30 40;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void linearGradientFill(Region region) {
-        region.setStyle("-fx-background-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    // Test this to make sure the gradient is relative to the shape and not the position
-    // of the shape in the region
-    public void linearGradientFill_NotScaled(Region region) {
-        region.setStyle("-fx-background-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    // Test this to make sure the gradient is relative to the shape and not the position
-    // of the shape in the region
-    public void linearGradientFill_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-background-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void imageFill(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void imageFill_NotScaled(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void imageFill_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void imageFill_cover(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-size: cover;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void imageFill_cover_NotScaled(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-size: cover;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void imageFill_cover_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-                        "-fx-background-size: cover;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void multipleFills(Region region) {
-        region.setStyle("-fx-background-color: red, repeating-image-pattern('region/test20x20.png'), blue;" +
-                        "-fx-background-insets: 0, 20, 40;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void multipleFills_NotScaled(Region region) {
-        region.setStyle("-fx-background-color: red, repeating-image-pattern('region/test20x20.png'), blue;" +
-                        "-fx-background-insets: 0, 20, 40;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void multipleFills_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-background-color: red, repeating-image-pattern('region/test20x20.png'), blue;" +
-                        "-fx-background-insets: 0, 20, 40;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    /**************************************************************************
-     *                                                                        *
-     * Tests for strokes.                                                     *
-     *                                                                        *
-     *************************************************************************/
-
-    public void solidStroke(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidStroke_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidStroke_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    // TODO These should work, but presently the parser doesn't support thin, medium, and thick, I think.
-//    public void solidStroke_Thin(Region region) {
-//        region.setStyle("-fx-border-style: solid;" +
-//                        "-fx-background-color: lightgray;" +
-//                        "-fx-border-color: red;" +
-//                        "-fx-border-width: thin;" +
-//                        "-fx-shape: " + ARROW + ";");
-//    }
-//
-//    public void solidStroke_Thin_NotScaled(Region region) {
-//        region.setStyle("-fx-border-style: solid;" +
-//                        "-fx-background-color: lightgray;" +
-//                        "-fx-border-color: red;" +
-//                        "-fx-border-width: thin;" +
-//                        "-fx-scale-shape: false;" +
-//                        "-fx-shape: " + ARROW + ";");
-//    }
-//
-//    public void solidStroke_Thin_NotScaledAndNotCentered(Region region) {
-//        region.setStyle("-fx-border-style: solid;" +
-//                        "-fx-background-color: lightgray;" +
-//                        "-fx-border-color: red;" +
-//                        "-fx-border-width: thin;" +
-//                        "-fx-position-shape: false;" +
-//                        "-fx-scale-shape: false;" +
-//                        "-fx-shape: " + ARROW + ";");
-//    }
-//
-//    public void solidStroke_Medium(Region region) {
-//        region.setStyle("-fx-border-style: solid;" +
-//                        "-fx-background-color: lightgray;" +
-//                        "-fx-border-color: red;" +
-//                        "-fx-border-width: medium;" +
-//                        "-fx-shape: " + ARROW + ";");
-//    }
-//
-//    public void solidStroke_Medium_NotScaled(Region region) {
-//        region.setStyle("-fx-border-style: solid;" +
-//                        "-fx-background-color: lightgray;" +
-//                        "-fx-border-color: red;" +
-//                        "-fx-border-width: medium;" +
-//                        "-fx-scale-shape: false;" +
-//                        "-fx-shape: " + ARROW + ";");
-//    }
-//
-//    public void solidStroke_Medium_NotScaledAndNotCentered(Region region) {
-//        region.setStyle("-fx-border-style: solid;" +
-//                        "-fx-background-color: lightgray;" +
-//                        "-fx-border-color: red;" +
-//                        "-fx-border-width: medium;" +
-//                        "-fx-position-shape: false;" +
-//                        "-fx-scale-shape: false;" +
-//                        "-fx-shape: " + ARROW + ";");
-//    }
-//
-//    public void solidStroke_Thick(Region region) {
-//        region.setStyle("-fx-border-style: solid;" +
-//                        "-fx-background-color: lightgray;" +
-//                        "-fx-border-color: red;" +
-//                        "-fx-border-width: thick;" +
-//                        "-fx-shape: " + ARROW + ";");
-//    }
-//
-//    public void solidStroke_Thick_NotScaled(Region region) {
-//        region.setStyle("-fx-border-style: solid;" +
-//                        "-fx-background-color: lightgray;" +
-//                        "-fx-border-color: red;" +
-//                        "-fx-border-width: thick;" +
-//                        "-fx-scale-shape: false;" +
-//                        "-fx-shape: " + ARROW + ";");
-//    }
-//
-//    public void solidStroke_Thick_NotScaledAndNotCentered(Region region) {
-//        region.setStyle("-fx-border-style: solid;" +
-//                        "-fx-background-color: lightgray;" +
-//                        "-fx-border-color: red;" +
-//                        "-fx-border-width: thick;" +
-//                        "-fx-position-shape: false;" +
-//                        "-fx-scale-shape: false;" +
-//                        "-fx-shape: " + ARROW + ";");
-//    }
-
-    public void solidStroke_1(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 1;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidStroke_1_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 1;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidStroke_1_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 1;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidStroke_3(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 3;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidStroke_3_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 3;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidStroke_3_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 3;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidStroke_5(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidStroke_5_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidStroke_5_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidTranslucentStroke_5(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: rgba(255, 0, 0, .3);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidTranslucentStroke_5_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: rgba(255, 0, 0, .3);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidTranslucentStroke_5_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: rgba(255, 0, 0, .3);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidLinearGradientStroke_5(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidLinearGradientStroke_5_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidLinearGradientStroke_5_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidImageStroke_5(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
-                        "-fx-border-width: 5;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidImageStroke_5_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
-                        "-fx-border-width: 5;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void solidImageStroke_5_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: solid;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
-                        "-fx-border-width: 5;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedStroke_1(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 1;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedStroke_1_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 1;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedStroke_1_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 1;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedStroke_3(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 3;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedStroke_3_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 3;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedStroke_3_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 3;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedStroke_5(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedStroke_5_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedStroke_5_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedTranslucentStroke_5(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: rgba(255, 0, 0, .3);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedTranslucentStroke_5_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: rgba(255, 0, 0, .3);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedTranslucentStroke_5_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: rgba(255, 0, 0, .3);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedLinearGradientStroke_5(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedLinearGradientStroke_5_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedLinearGradientStroke_5_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedImageStroke_5(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
-                        "-fx-border-width: 5;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedImageStroke_5_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
-                        "-fx-border-width: 5;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dashedImageStroke_5_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: dashed;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
-                        "-fx-border-width: 5;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedStroke_1(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 1;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedStroke_1_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 1;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedStroke_1_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 1;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedStroke_3(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 3;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedStroke_3_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 3;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedStroke_3_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 3;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedStroke_5(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedStroke_5_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedStroke_5_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: red;" +
-                        "-fx-border-width: 5;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedTranslucentStroke_5(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: rgba(255, 0, 0, .3);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedTranslucentStroke_5_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: rgba(255, 0, 0, .3);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedTranslucentStroke_5_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: rgba(255, 0, 0, .3);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedLinearGradientStroke_5(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedLinearGradientStroke_5_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedLinearGradientStroke_5_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
-                        "-fx-border-width: 5;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedImageStroke_5(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
-                        "-fx-border-width: 5;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedImageStroke_5_NotScaled(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
-                        "-fx-border-width: 5;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    public void dottedImageStroke_5_NotScaledAndNotCentered(Region region) {
-        region.setStyle("-fx-border-style: dotted;" +
-                        "-fx-background-color: lightgray;" +
-                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
-                        "-fx-border-width: 5;" +
-                        "-fx-position-shape: false;" +
-                        "-fx-scale-shape: false;" +
-                        "-fx-shape: " + ARROW + ";");
-    }
-
-    // TODO need to do more complete testing which includes the full range of available
-    // properties for a border stroke
-//    public void shape_arrow_stroke(Region region) {
-//        region.setStyle("-fx-border-style: solid;" +
-//                        "-fx-background-color: grey;" +
-//                        "-fx-border-color: rgba(255, 0, 0, .2);" +
-//                        "-fx-border-width: 5;" +
-//                        "-fx-shape: " + ARROW + ";");
-//    }
-
-    /**************************************************************************
-     *                                                                        *
-     * Tests for parameters to background fills, background images,           *
-     * border strokes, and border images that should be ignored by the        *
-     * region when drawing a shape, and have no effect whatsoever.            *
-     *                                                                        *
-     *************************************************************************/
-
-    // This is a test case that should have no effect
-//    public void shape_arrow_imageFill_repeatX(Region region) {
-//        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
-//                        "-fx-background-repeat: repeat-x;" +
-//                        "-fx-shape: " + ARROW + ";");
-//    }
-
-//    public void shape_arrow_RadiusIgnored(Region region) {
-//        region.setStyle("-fx-background-color: red;" +
-//                        "-fx-background-radius: 300;" +
-//                        "-fx-shape: " + ARROW + ";");
-//    }
-
-    /**************************************************************************
-     *                                                                        *
-     * Shapes that are larger than the region, or defined outside the bounds  *
-     * of the region.                                                         *
-     *                                                                        *
-     *************************************************************************/
-
-    public void shapeLargerThanRegion_Centered(Region region) {
-        region.setStyle(
-                "-fx-border-color:blue;" +
-                "-fx-shape:'M 0 0 L 400 0 L 200 400 Z';" +
-                "-fx-scale-shape: false;" +
-                "-fx-background-color: red;");
-    }
-
-    public void shapeLargerThanRegion_Scaled(Region region) {
-        region.setStyle(
-                "-fx-border-color:blue;" +
-                "-fx-shape:'M 0 0 L 400 0 L 200 400 Z';" +
-                "-fx-position-shape: false;" +
-                "-fx-background-color: red;");
-    }
-
-    public void shapeDefinedOutsideRegion_Centered(Region region) {
-        region.setStyle(
-                "-fx-border-color:blue;" +
-                "-fx-shape:'M 400 400 L 450 400 L 425 450 Z';" +
-                "-fx-scale-shape: false;" +
-                "-fx-background-color: red;");
-    }
-
-    public void shapeDefinedOutsideRegion_ScaledCentered(Region region) {
-        region.setStyle(
-                "-fx-border-color:blue;" +
-                "-fx-shape:'M 400 400 L 450 400 L 425 450 Z';" +
-                "-fx-background-color: red;");
-    }
-
-    public void shapeDefinedOutsideRegion_Centered_Negative(Region region) {
-        region.setStyle(
-                "-fx-border-color:blue;" +
-                "-fx-shape:'M -400 -400 L -350 -400 L -375 -350 Z';" +
-                "-fx-scale-shape: false;" +
-                "-fx-background-color: red;");
-    }
-
-    public void shapeDefinedOutsideRegion_ScaledCentered_Negative(Region region) {
-        region.setStyle(
-                "-fx-border-color:blue;" +
-                "-fx-shape:'M -400 -400 L -350 -400 L -375 -350 Z';" +
-                "-fx-background-color: red;");
-    }
-
-    public void shapeDefinedOutsideRegion_Centered_Insets(Region region) {
-        region.setStyle(
-                "-fx-border-color:blue;" +
-                "-fx-shape:'M 400 400 L 450 400 L 425 450 Z';" +
-                "-fx-scale-shape: false;" +
-                "-fx-background-color: red;" +
-                "-fx-background-insets: 10");
-    }
-
-    public void shapeDefinedOutsideRegion_Centered_Outsets(Region region) {
-        region.setStyle(
-                "-fx-border-color:blue;" +
-                "-fx-shape:'M 400 400 L 450 400 L 425 450 Z';" +
-                "-fx-scale-shape: false;" +
-                "-fx-background-color: red;" +
-                "-fx-background-insets: -10");
-    }
-
-    public void shapeNotCenteredOrScaled_Insets(Region region) {
-        region.setStyle(
-                "-fx-border-color:blue;" +
-                "-fx-shape:'M 100 -50 L 200 -50 L 150 100 Z';" +
-                "-fx-scale-shape: false;" +
-                "-fx-position-shape: false;" +
-                "-fx-background-color: red;" +
-                "-fx-background-insets: 10");
-    }
-
-    /**************************************************************************
-     *                                                                        *
-     * Tests for edge conditions                                              *
-     *                                                                        *
-     *************************************************************************/
-
-    // TODO Need to write a test for what the rendering is like for an Image that hasn't finished loading yet.
-}
--- a/tests/manual/RegionTests/src/main/java/region/RegionUITestBase.java	Mon Oct 07 16:23:57 2013 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,213 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package region;
-
-import javafx.application.Application;
-import javafx.beans.InvalidationListener;
-import javafx.beans.Observable;
-import javafx.geometry.Insets;
-import javafx.geometry.Pos;
-import javafx.scene.Node;
-import javafx.scene.Scene;
-import javafx.scene.control.Label;
-import javafx.scene.control.Pagination;
-import javafx.scene.layout.BorderPane;
-import javafx.scene.layout.Pane;
-import javafx.scene.layout.Region;
-import javafx.scene.layout.VBox;
-import javafx.scene.paint.Color;
-import javafx.scene.shape.Line;
-import javafx.scene.shape.Rectangle;
-import javafx.scene.shape.StrokeType;
-import javafx.stage.Stage;
-import javafx.util.Callback;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-/**
- * Base class for different Region based UI tests. A new region is created
- * for each test, so the tests can configure anything they like.
- */
-public class RegionUITestBase extends Application {
-    // The region under test.
-    private Region region;
-    private Label content;
-    private InvalidationListener regionListener = new InvalidationListener() {
-        @Override public void invalidated(Observable observable) {
-            content.resizeRelocate(
-                    region.getInsets().getLeft(),
-                    region.getInsets().getTop(),
-                    region.getWidth() - (region.getInsets().getLeft() + region.getInsets().getRight()),
-                    region.getHeight() - (region.getInsets().getTop() + region.getInsets().getBottom())
-            );
-        }
-    };
-
-    @Override public void start(Stage stage) throws Exception {
-        final List<Method> tests = new ArrayList<Method>();
-
-        Class clazz = getClass();
-        Method[] methods = clazz.getMethods();
-        for (int i=0; i<methods.length; i++) {
-            Class<?>[] paramTypes = methods[i].getParameterTypes();
-            if (paramTypes.length == 1 && Region.class.isAssignableFrom(paramTypes[0])) {
-                tests.add(methods[i]);
-            }
-        }
-        Collections.sort(tests, new Comparator<Method>() {
-            @Override public int compare(Method o1, Method o2) {
-                return o1.getName().compareTo(o2.getName());
-            }
-        });
-
-        final VBox parent = new VBox(5);
-        parent.setAlignment(Pos.CENTER);
-        parent.setFillWidth(false);
-        parent.setPadding(new Insets(12));
-        final Label label = new Label();
-        label.setMinHeight(200);
-        label.setWrapText(true);
-        content = new Label("Region Content Area");
-        content.setAlignment(Pos.CENTER);
-        content.setManaged(false);
-
-        final Line minXLine = new Line();
-        minXLine.setManaged(false);
-        final Line maxXLine = new Line();
-        maxXLine.setManaged(false);
-        final Line minYLine = new Line();
-        minYLine.setManaged(false);
-        final Line maxYLine = new Line();
-        maxYLine.setManaged(false);
-
-        final BorderPane background = new BorderPane();
-        background.setStyle("-fx-background-image: url('region/checker.png');");
-        final Rectangle boundsRect = new Rectangle();
-        boundsRect.setWidth(300);
-        boundsRect.setHeight(200);
-        background.layoutXProperty().addListener(new InvalidationListener() {
-            @Override public void invalidated(Observable observable) {
-                boundsRect.setX(background.getLayoutX());
-                content.setTranslateX(background.getLayoutX());
-            }
-        });
-        background.layoutYProperty().addListener(new InvalidationListener() {
-            @Override public void invalidated(Observable observable) {
-                boundsRect.setY(background.getLayoutY());
-                content.setTranslateY(background.getLayoutY());
-            }
-        });
-        final InvalidationListener contentListener = new InvalidationListener() {
-            @Override public void invalidated(Observable observable) {
-                final double bx = background.getLayoutX();
-                final double by = background.getLayoutY();
-                final double bx2 = bx + background.getWidth();
-                final double by2 = by + background.getHeight();
-
-                final double x = bx + content.getLayoutX();
-                final double y = by + content.getLayoutY();
-                final double width = content.getWidth();
-                final double height = content.getHeight();
-                final double x2 = x + width;
-                final double y2 = y + height;
-
-                minXLine.setStartX(x);
-                minXLine.setEndX(x);
-                minXLine.setStartY(by - 20);
-                minXLine.setEndY(by2 + 20);
-
-                maxXLine.setStartX(x2);
-                maxXLine.setEndX(x2);
-                maxXLine.setStartY(by - 20);
-                maxXLine.setEndY(by2 + 20);
-
-                minYLine.setStartX(bx - 20);
-                minYLine.setEndX(bx2 + 20);
-                minYLine.setStartY(y);
-                minYLine.setEndY(y);
-
-                maxYLine.setStartX(bx - 20);
-                maxYLine.setEndX(bx2 + 20);
-                maxYLine.setStartY(y2);
-                maxYLine.setEndY(y2);
-            }
-        };
-        content.layoutXProperty().addListener(contentListener);
-        content.layoutYProperty().addListener(contentListener);
-        content.widthProperty().addListener(contentListener);
-        content.heightProperty().addListener(contentListener);
-        background.layoutXProperty().addListener(contentListener);
-        background.layoutYProperty().addListener(contentListener);
-        boundsRect.setFill(null);
-        boundsRect.setStroke(Color.BLACK);
-        boundsRect.setStrokeType(StrokeType.OUTSIDE);
-        boundsRect.setManaged(false);
-        parent.getChildren().addAll(label, background, boundsRect, content, minXLine, maxXLine, minYLine, maxYLine);
-
-        // I'm going to use a Pagination control to implement my multiple
-        // test test!
-        Pagination pagination = new Pagination(tests.size());
-        pagination.setPageFactory(new Callback<Integer, Node>() {
-            @Override public Node call(Integer param) {
-                if (region != null) {
-                    // remove listeners of the region insets and region bounds
-                    region.widthProperty().removeListener(regionListener);
-                    region.heightProperty().removeListener(regionListener);
-                    region.layoutXProperty().removeListener(regionListener);
-                    region.layoutYProperty().removeListener(regionListener);
-                    region.insetsProperty().removeListener(regionListener);
-                }
-                region = new Pane();
-                region.widthProperty().addListener(regionListener);
-                region.heightProperty().addListener(regionListener);
-                region.layoutXProperty().addListener(regionListener);
-                region.layoutYProperty().addListener(regionListener);
-                region.insetsProperty().addListener(regionListener);
-
-                background.setCenter(region);
-                region.setPrefSize(300, 200);
-                Method test = tests.get(param);
-                try {
-                    test.invoke(RegionUITestBase.this, region);
-                } catch (IllegalAccessException e) {
-                    e.printStackTrace();
-                } catch (InvocationTargetException e) {
-                    e.printStackTrace();
-                }
-                label.setText("Test: " + test.getName() + "\nStyle=" + (region.getStyle().replace(";", ";\n\t")));
-                return parent;
-            }
-        });
-
-        Scene scene = new Scene(pagination);
-        stage.setScene(scene);
-        stage.show();
-    }
-
-}
Binary file tests/manual/RegionTests/src/main/resources/region/BlackButton.png has changed
Binary file tests/manual/RegionTests/src/main/resources/region/WindowsButton.png has changed
Binary file tests/manual/RegionTests/src/main/resources/region/border.png has changed
Binary file tests/manual/RegionTests/src/main/resources/region/border@2x.png has changed
Binary file tests/manual/RegionTests/src/main/resources/region/checker.png has changed
Binary file tests/manual/RegionTests/src/main/resources/region/popover-no-arrow-empty.png has changed
Binary file tests/manual/RegionTests/src/main/resources/region/popover-no-arrow-empty@2x.png has changed
Binary file tests/manual/RegionTests/src/main/resources/region/test20x20.png has changed
Binary file tests/manual/RegionTests/src/main/resources/region/test20x20@2x.png has changed
Binary file tests/manual/RegionTests/src/main/resources/region/test48x48.png has changed
Binary file tests/manual/RegionTests/src/main/resources/region/test48x48@2x.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/system/src/test/java/javafx/scene/layout/RegionBackgroundFillUITest.java	Mon Oct 07 16:25:34 2013 -0700
@@ -0,0 +1,772 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javafx.scene.layout;
+
+import javafx.scene.paint.Color;
+import org.junit.Test;
+
+/**
+ */
+public class RegionBackgroundFillUITest extends RegionUITestBase {
+
+    /**************************************************************************
+     *                                                                        *
+     * Tests for background fills. We start with a series of simple tests     *
+     * with a single solid fill, including exercising different insets and    *
+     * corner radii.                                                          *
+     *                                                                        *
+     *************************************************************************/
+
+    @Test(timeout=5000)
+    public void basicFill() {
+        setStyle("-fx-background-color: red;");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void translucentFill() {
+        setStyle("-fx-background-color: rgba(255, 0, 0, .2);");
+        // multiply through the alpha
+        checkRegionCornersAndBoundariesOfBackgroundFill(
+                region.getBackground().getFills().get(0), Color.rgb(255, 204, 204), SCENE_FILL);
+    }
+
+    @Test(timeout=5000)
+    public void basicFill_Insets1() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-insets: 5");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void basicFill_Insets2() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-insets: 5 10");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void basicFill_Insets3() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-insets: 5 10 15");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void basicFill_Insets4() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-insets: 5 10 15 20");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void basicFill_NegativeInsets1() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-insets: -5");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void basicFill_NegativeInsets2() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-insets: -5 -10");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void basicFill_NegativeInsets3() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-insets: -5 -10 -15");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void basicFill_NegativeInsets4() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-insets: -5 -10 -15 -20");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void basicFill_MixedInsets() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-insets: 10 10 -10 10");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void basicFill_Radius1() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-radius: 10");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void basicFill_Radius2() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-radius: 10 20");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void basicFill_Radius3() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-radius: 10 20 30");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void basicFill_Radius4() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-radius: 10 20 30 40");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    // TODO need to write tests for percentage based radii
+//    public void basicFill_PercentageRadius() {
+//        setStyle(
+//                "-fx-background-color: red;" +
+//                "-fx-background-radius: 5% 10% 15% 20%");
+//    }
+
+    // TODO need to check on the syntax for the 8 independent corner radii...
+//    public void basicFill_Radius8() {
+//        setStyle(
+//                "-fx-background-color: red;" +
+//                "-fx-background-radius: 10 20 30 40 50 60 70 80");
+//    }
+
+    @Test(timeout=5000)
+    public void basicFill_RadiusAndInsets() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-radius: 10 20 30 40;" +
+                "-fx-background-insets: 5 10 15 20");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    // NOTE: A negative radius from CSS is treated as 0.
+    @Test(timeout=5000)
+    public void basicFill_NegativeRadius1() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-radius: -10");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    // NOTE: A negative radius from CSS is treated as 0.
+    @Test(timeout=5000)
+    public void basicFill_NegativeRadius2() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-radius: -10 -20");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    // NOTE: A negative radius from CSS is treated as 0.
+    @Test(timeout=5000)
+    public void basicFill_NegativeRadius3() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-radius: -10 -20 -30");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    // NOTE: A negative radius from CSS is treated as 0.
+    @Test(timeout=5000)
+    public void basicFill_NegativeRadius4() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-radius: -10 -20 -30 -40");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    /**************************************************************************
+     *                                                                        *
+     * Tests for ImagePattern fills and gradient fills                        *
+     *                                                                        *
+     *************************************************************************/
+
+    // NOTE: These tests could be even more precise with different images / gradients such that
+    // I actually could predict the color under a point, rather than just asserting it isn't
+    // the Scene's fill.
+
+    @Test(timeout=5000)
+    public void imageFill() {
+        setStyle("-fx-background-color: repeating-image-pattern('javafx/scene/layout/test20x20.png');");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void imageFill_MixedInsets() {
+        setStyle(
+                "-fx-background-color: repeating-image-pattern('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-insets: 5 10 -15 20");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void imageFill_Radius4() {
+        setStyle(
+                "-fx-background-color: repeating-image-pattern('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-radius: 10 20 30 40");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void imageFill_MissingImage() {
+        setStyle(
+                "-fx-background-color: repeating-image-pattern('javafx/scene/layout/missing.png');" +
+                "-fx-background-radius: 10 20 30 40");
+        assertColorEquals(SCENE_FILL, WIDTH / 2, HEIGHT / 2, TOLERANCE);
+    }
+
+    @Test(timeout=5000)
+    public void imageFill_Stretched() {
+        setStyle("-fx-background-color: image-pattern('javafx/scene/layout/test20x20.png');");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void imageFill_Stretched2() {
+        setStyle("-fx-background-color: image-pattern('javafx/scene/layout/test20x20.png', 0, 0, 1, 1);");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void imageFill_Stretched3() {
+        setStyle("-fx-background-color: image-pattern('javafx/scene/layout/test20x20.png', 0, 0, 1, 1, true);");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void imageFill_Tiled() {
+        setStyle("-fx-background-color: image-pattern('javafx/scene/layout/test20x20.png', 0, 0, 40, 40, false);");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void linearFill() {
+        setStyle("-fx-background-color: linear-gradient(to bottom, red 0%, blue 100%);");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void linearFill2() {
+        setStyle("-fx-background-color: linear-gradient(to right, red 0%, blue 100%);");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void linearFill_MixedInsets() {
+        setStyle(
+                "-fx-background-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+                "-fx-background-insets: 5 10 -15 20");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void linearFill_Radius4() {
+        setStyle(
+                "-fx-background-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+                "-fx-background-radius: 10 20 30 40");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    // TODO I could write more tests here for other linear fill options, like repeat etc, also radial fill
+
+    /**************************************************************************
+     *                                                                        *
+     * Tests for stacking fills with different radii etc                      *
+     *                                                                        *
+     *************************************************************************/
+
+    @Test(timeout=5000)
+    public void testScenario1() {
+        setStyle(
+                "-fx-background-color: red;" +
+                "-fx-background-insets: 0 0 -10 0, 0, 10, 20;" +
+                "-fx-background-radius: 10 20 30 40;" +
+                "-fx-padding: 10 20 30 40;");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    @Test(timeout=5000)
+    public void testScenario2() {
+        setStyle(
+                "-fx-background-color: red, green, blue, grey;" +
+                "-fx-background-insets: 0 0 -10 0, 0, 10, 20;" +
+                "-fx-background-radius: 5 10 15 20, 25, 30 35 40 45;" +
+                "-fx-padding: 10 20 30 40;");
+
+        BackgroundFill red = region.getBackground().getFills().get(0);
+        BackgroundFill green = region.getBackground().getFills().get(1);
+        BackgroundFill blue = region.getBackground().getFills().get(2);
+        BackgroundFill grey = region.getBackground().getFills().get(3);
+
+        checkRegionLeftBoundary(red, Color.GREEN, SCENE_FILL);
+        checkRegionTopLeftCorner(red, SCENE_FILL);
+        checkRegionTopBoundary(red, Color.GREEN, SCENE_FILL);
+        checkRegionTopRightCorner(red, SCENE_FILL);
+        checkRegionRightBoundary(red, Color.GREEN, SCENE_FILL);
+        checkRegionBottomRightCorner(red, SCENE_FILL);
+        checkRegionBottomBoundary(red, SCENE_FILL);
+        checkRegionBottomLeftCorner(red, SCENE_FILL);
+
+        checkRegionLeftBoundary(green, SCENE_FILL);
+        checkRegionTopLeftCorner(green, Color.RED);
+        checkRegionTopBoundary(green, SCENE_FILL);
+        checkRegionTopRightCorner(green, Color.RED);
+        checkRegionRightBoundary(green, SCENE_FILL);
+        checkRegionBottomRightCorner(green, Color.RED);
+        checkRegionBottomBoundary(green, Color.RED);
+        checkRegionBottomLeftCorner(green, Color.RED);
+
+        checkRegionCornersAndBoundariesOfBackgroundFill(blue, Color.GREEN);
+        checkRegionCornersAndBoundariesOfBackgroundFill(grey, Color.BLUE);
+    }
+
+    @Test(timeout=5000)
+    public void testScenario3() {
+        setStyle(
+                "-fx-background-color: red, green, blue, grey;" +
+                "-fx-background-insets: 0 0 -10 0, 0, 10, 20;" +
+                "-fx-background-radius: 10 20 30 40;" +
+                "-fx-padding: 10 20 30 40;");
+
+        BackgroundFill red = region.getBackground().getFills().get(0);
+        BackgroundFill green = region.getBackground().getFills().get(1);
+        BackgroundFill blue = region.getBackground().getFills().get(2);
+        BackgroundFill grey = region.getBackground().getFills().get(3);
+
+        checkRegionLeftBoundary(red, Color.GREEN, SCENE_FILL);
+        checkRegionTopLeftCorner(red, Color.GREEN, SCENE_FILL);
+        checkRegionTopBoundary(red, Color.GREEN, SCENE_FILL);
+        checkRegionTopRightCorner(red, Color.GREEN, SCENE_FILL);
+        checkRegionRightBoundary(red, Color.GREEN, SCENE_FILL);
+        checkRegionBottomRightCorner(red, SCENE_FILL);
+        checkRegionBottomBoundary(red, SCENE_FILL);
+        checkRegionBottomLeftCorner(red, SCENE_FILL);
+
+        checkRegionLeftBoundary(green, SCENE_FILL);
+        checkRegionTopLeftCorner(green, SCENE_FILL);
+        checkRegionTopBoundary(green, SCENE_FILL);
+        checkRegionTopRightCorner(green, SCENE_FILL);
+        checkRegionRightBoundary(green, SCENE_FILL);
+        checkRegionBottomRightCorner(green, Color.RED);
+        checkRegionBottomBoundary(green, Color.RED);
+        checkRegionBottomLeftCorner(green, Color.RED);
+
+        checkRegionCornersAndBoundariesOfBackgroundFill(blue, Color.GREEN);
+        checkRegionCornersAndBoundariesOfBackgroundFill(grey, Color.BLUE);
+    }
+
+    @Test(timeout=5000)
+    public void testScenario4() {
+        setStyle(
+                "-fx-background-color: red, green, blue, repeating-image-pattern('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-insets: 0 0 -10 0, 0, 10, 20;" +
+                "-fx-background-radius: 10 20 30 40;" +
+                "-fx-padding: 10 20 30 40;");
+
+        BackgroundFill red = region.getBackground().getFills().get(0);
+        BackgroundFill green = region.getBackground().getFills().get(1);
+        BackgroundFill blue = region.getBackground().getFills().get(2);
+        BackgroundFill image = region.getBackground().getFills().get(3);
+
+        checkRegionLeftBoundary(red, Color.GREEN, SCENE_FILL);
+        checkRegionTopLeftCorner(red, Color.GREEN, SCENE_FILL);
+        checkRegionTopBoundary(red, Color.GREEN, SCENE_FILL);
+        checkRegionTopRightCorner(red, Color.GREEN, SCENE_FILL);
+        checkRegionRightBoundary(red, Color.GREEN, SCENE_FILL);
+        checkRegionBottomRightCorner(red, SCENE_FILL);
+        checkRegionBottomBoundary(red, SCENE_FILL);
+        checkRegionBottomLeftCorner(red, SCENE_FILL);
+
+        checkRegionLeftBoundary(green, SCENE_FILL);
+        checkRegionTopLeftCorner(green, SCENE_FILL);
+        checkRegionTopBoundary(green, SCENE_FILL);
+        checkRegionTopRightCorner(green, SCENE_FILL);
+        checkRegionRightBoundary(green, SCENE_FILL);
+        checkRegionBottomRightCorner(green, Color.RED);
+        checkRegionBottomBoundary(green, Color.RED);
+        checkRegionBottomLeftCorner(green, Color.RED);
+
+        checkRegionCornersAndBoundariesOfBackgroundFill(blue, Color.GREEN);
+        checkRegionCornersAndBoundariesOfBackgroundFill(image, Color.BLUE);
+    }
+
+    @Test(timeout=5000)
+    public void testScenario5() {
+        setStyle(
+                "-fx-background-color: red, green, repeating-image-pattern('javafx/scene/layout/test20x20.png'), blue;" +
+                "-fx-background-insets: 0 0 -10 0, 0, 10, 20;" +
+                "-fx-background-radius: 10 20 30 40;" +
+                "-fx-padding: 10 20 30 40;");
+
+        BackgroundFill red = region.getBackground().getFills().get(0);
+        BackgroundFill green = region.getBackground().getFills().get(1);
+        BackgroundFill image = region.getBackground().getFills().get(2);
+        BackgroundFill blue = region.getBackground().getFills().get(3);
+
+        checkRegionLeftBoundary(red, Color.GREEN, SCENE_FILL);
+        checkRegionTopLeftCorner(red, Color.GREEN, SCENE_FILL);
+        checkRegionTopBoundary(red, Color.GREEN, SCENE_FILL);
+        checkRegionTopRightCorner(red, Color.GREEN, SCENE_FILL);
+        checkRegionRightBoundary(red, Color.GREEN, SCENE_FILL);
+        checkRegionBottomRightCorner(red, SCENE_FILL);
+        checkRegionBottomBoundary(red, SCENE_FILL);
+        checkRegionBottomLeftCorner(red, SCENE_FILL);
+
+        checkRegionLeftBoundary(green, SCENE_FILL);
+        checkRegionTopLeftCorner(green, SCENE_FILL);
+        checkRegionTopBoundary(green, SCENE_FILL);
+        checkRegionTopRightCorner(green, SCENE_FILL);
+        checkRegionRightBoundary(green, SCENE_FILL);
+        checkRegionBottomRightCorner(green, Color.RED);
+        checkRegionBottomBoundary(green, Color.RED);
+        checkRegionBottomLeftCorner(green, Color.RED);
+
+        checkRegionCornersAndBoundariesOfBackgroundFill(image, Color.GREEN);
+        checkRegionCornersAndBoundariesOfBackgroundFill(blue, Color.BLUE, null);
+    }
+
+    @Test(timeout=5000)
+    public void testExample1() {
+        setStyle(
+                "-fx-background-color: red, green, blue;" +
+                "-fx-background-insets: 4, 8, 12, 16;" + // An extra value here, which should be ignored
+                "-fx-background-radius: 14;");
+
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    /**************************************************************************
+     *                                                                        *
+     * Tests for odd edge cases                                               *
+     *                                                                        *
+     *************************************************************************/
+
+    @Test(timeout=5000)
+    public void testOnePixelTopInset() {
+        setStyle(
+                "-fx-background-color: red, yellow;" +
+                "-fx-background-insets: 0, 1 0 0 0;");
+
+        BackgroundFill red = region.getBackground().getFills().get(0);
+        BackgroundFill yellow = region.getBackground().getFills().get(1);
+
+        checkRegionLeftBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopLeftCorner(red, Color.RED, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(red, Color.RED, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(red, Color.RED, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+
+        checkRegionLeftBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopLeftCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(yellow, Color.YELLOW, Color.RED, 0, .2);
+        checkRegionTopRightCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+    }
+
+    @Test(timeout=5000)
+    public void testOnePixelRightInset() {
+        setStyle(
+                "-fx-background-color: red, yellow;" +
+                "-fx-background-insets: 0, 0 1 0 0;");
+
+        BackgroundFill red = region.getBackground().getFills().get(0);
+        BackgroundFill yellow = region.getBackground().getFills().get(1);
+
+        checkRegionLeftBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopLeftCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(red, Color.RED, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(red, Color.RED, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(red, Color.RED, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+
+        checkRegionLeftBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopLeftCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(yellow, Color.YELLOW, Color.RED, 0, .2);
+        checkRegionBottomRightCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+    }
+
+    @Test(timeout=5000)
+    public void testOnePixelBottomInset() {
+        setStyle(
+                "-fx-background-color: red, yellow;" +
+                "-fx-background-insets: 0, 0 0 1 0;");
+
+        BackgroundFill red = region.getBackground().getFills().get(0);
+        BackgroundFill yellow = region.getBackground().getFills().get(1);
+
+        checkRegionLeftBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopLeftCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(red, Color.RED, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(red, Color.RED, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(red, Color.RED, SCENE_FILL, 0, .2);
+
+        checkRegionLeftBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopLeftCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(yellow, Color.YELLOW, Color.RED, 0, .2);
+        checkRegionBottomLeftCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+    }
+
+    @Test(timeout=5000)
+    public void testOnePixelLeftInset() {
+        setStyle(
+                "-fx-background-color: red, yellow;" +
+                "-fx-background-insets: 0, 0 0 0 1;");
+
+        BackgroundFill red = region.getBackground().getFills().get(0);
+        BackgroundFill yellow = region.getBackground().getFills().get(1);
+
+        checkRegionLeftBoundary(red, Color.RED, SCENE_FILL, 0, .2);
+        checkRegionTopLeftCorner(red, Color.RED, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(red, Color.RED, SCENE_FILL, 0, .2);
+
+        checkRegionLeftBoundary(yellow, Color.YELLOW, Color.RED, 0, .2);
+        checkRegionTopLeftCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+    }
+
+    @Test(timeout=5000)
+    public void testHalfPixelTopInset() {
+        setStyle(
+                "-fx-background-color: red, yellow;" +
+                "-fx-background-insets: 0, .5 0 0 0;");
+
+        BackgroundFill red = region.getBackground().getFills().get(0);
+        BackgroundFill yellow = region.getBackground().getFills().get(1);
+        Color blended = Color.rgb(254, 127, 27);
+
+        checkRegionLeftBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopLeftCorner(red, blended, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(red, blended, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(red, blended, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+
+        checkRegionLeftBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopLeftCorner(yellow, blended, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(yellow, blended, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(yellow, blended, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+    }
+
+    @Test(timeout=5000)
+    public void testHalfPixelRightInset() {
+        setStyle(
+                "-fx-background-color: red, yellow;" +
+                "-fx-background-insets: 0, 0 .5 0 0;");
+
+        BackgroundFill red = region.getBackground().getFills().get(0);
+        BackgroundFill yellow = region.getBackground().getFills().get(1);
+        Color blended = Color.rgb(254, 127, 27);
+
+        checkRegionLeftBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopLeftCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(red, blended, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(red, blended, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(red, blended, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+
+        checkRegionLeftBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopLeftCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(yellow, blended, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(yellow, blended, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(yellow, blended, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+    }
+
+    @Test(timeout=5000)
+    public void testHalfPixelBottomInset() {
+        setStyle(
+                "-fx-background-color: red, yellow;" +
+                "-fx-background-insets: 0, 0 0 .5 0;");
+
+        BackgroundFill red = region.getBackground().getFills().get(0);
+        BackgroundFill yellow = region.getBackground().getFills().get(1);
+        Color blended = Color.rgb(254, 127, 27);
+
+        checkRegionLeftBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopLeftCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(red, blended, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(red, blended, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(red, blended, SCENE_FILL, 0, .2);
+
+        checkRegionLeftBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopLeftCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(yellow, blended, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(yellow, blended, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(yellow, blended, SCENE_FILL, 0, .2);
+    }
+
+    @Test(timeout=5000)
+    public void testHalfPixelLeftInset() {
+        setStyle(
+                "-fx-background-color: red, yellow;" +
+                "-fx-background-insets: 0, 0 0 0 .5;");
+
+        BackgroundFill red = region.getBackground().getFills().get(0);
+        BackgroundFill yellow = region.getBackground().getFills().get(1);
+        Color blended = Color.rgb(254, 127, 27);
+
+        checkRegionLeftBoundary(red, blended, SCENE_FILL, 0, .2);
+        checkRegionTopLeftCorner(red, blended, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(red, blended, SCENE_FILL, 0, .2);
+
+        checkRegionLeftBoundary(yellow, blended, SCENE_FILL, 0, .2);
+        checkRegionTopLeftCorner(yellow, blended, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(yellow, blended, SCENE_FILL, 0, .2);
+    }
+
+    @Test(timeout=5000)
+    public void testHalfPixelTopLeftInset() {
+        setStyle(
+                "-fx-background-color: red, yellow;" +
+                "-fx-background-insets: 0, .5 0 0 .5;");
+
+        BackgroundFill red = region.getBackground().getFills().get(0);
+        BackgroundFill yellow = region.getBackground().getFills().get(1);
+        Color blended = Color.rgb(254, 127, 27);
+
+        checkRegionLeftBoundary(red, blended, SCENE_FILL, 0, .2);
+        // I'm not sure about this one. We actually blend the top and left together,
+        // which makes the corner darker than it really probably should be. I think this is a bug.
+//        checkRegionTopLeftCorner(red, blended, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(red, blended, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(red, blended, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(red, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(red, blended, SCENE_FILL, 0, .2);
+
+        checkRegionLeftBoundary(yellow, blended, SCENE_FILL, 0, .2);
+        // I'm not sure about this one. We actually blend the top and left together,
+        // which makes the corner darker than it really probably should be. I think this is a bug.
+//        checkRegionTopLeftCorner(yellow, blended, SCENE_FILL, 0, .2);
+        checkRegionTopBoundary(yellow, blended, SCENE_FILL, 0, .2);
+        checkRegionTopRightCorner(yellow, blended, SCENE_FILL, 0, .2);
+        checkRegionRightBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomRightCorner(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomBoundary(yellow, Color.YELLOW, SCENE_FILL, 0, .2);
+        checkRegionBottomLeftCorner(yellow, blended, SCENE_FILL, 0, .2);
+    }
+
+    @Test(timeout=5000)
+    public void testNoInsets() {
+        setStyle(
+                "-fx-background-color: red, yellow;" +
+                "-fx-background-insets: 0, 0;");
+
+        BackgroundFill red = region.getBackground().getFills().get(0);
+        BackgroundFill yellow = region.getBackground().getFills().get(1);
+        checkRegionCornersAndBoundariesOfBackgroundFill(red, Color.YELLOW, SCENE_FILL);
+        checkRegionCornersAndBoundariesOfBackgroundFill(yellow, SCENE_FILL);
+    }
+
+    @Test(timeout=5000)
+    public void testYellowOnRed() {
+        setStyle(
+                "-fx-background-color: red, yellow;" +
+                "-fx-background-insets: 0, 40;");
+        checkRegionCornersAndBoundariesForFills();
+    }
+
+    // TODO to be thorough, I wonder if we can write a test where NaN or +/- Infinity can be passed via CSS to radii?
+
+    // This just plain shouldn't work.
+//    public void testImageFill() {
+//        setStyle("-fx-background-color: url('javafx/scene/layout/test20x20.png');");
+//    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/system/src/test/java/javafx/scene/layout/RegionBackgroundImageUITest.java	Mon Oct 07 16:25:34 2013 -0700
@@ -0,0 +1,1041 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javafx.scene.layout;
+
+import javafx.geometry.Bounds;
+import javafx.scene.paint.Color;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ */
+public class RegionBackgroundImageUITest extends RegionUITestBase {
+    /**************************************************************************
+     *                                                                        *
+     * Tests for aligned background images. The test image in use is chosen   *
+     * to align naturally with the edge of the test region.                   *
+     *                                                                        *
+     *************************************************************************/
+
+    @Test(timeout=5000)
+    public void alignedImage() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');");
+
+        checkCompletelyFilled(20);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_RepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-x");
+
+        checkHorizontalStripAlongTop(20, LEFT);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_RepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-y");
+
+        checkVerticalStripAlongLeft(20, TOP);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_Space() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: space space");
+
+        checkCompletelyFilled(20);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_Round() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: round");
+
+        checkCompletelyFilled(20);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_RoundSpace() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: round space");
+
+        checkCompletelyFilled(20);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenter() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: center");
+
+        checkNonRepeating(20, WIDTH / 2, HEIGHT / 2, true);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterFiftyPercent() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: 50%");
+
+        checkNonRepeating(20, WIDTH / 2, HEIGHT / 2, true);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterLeft() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: left center");
+
+        final int centerX = REGION_LEFT + 10;
+        checkNonRepeating(20, centerX, HEIGHT / 2, true);
+        assertColorEquals(Color.RED, centerX - 10, HEIGHT / 2, TOLERANCE);
+        assertColorEquals(SCENE_FILL, centerX - 11, HEIGHT / 2, TOLERANCE);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterRight() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: right center");
+
+        final int centerX = REGION_RIGHT - 10;
+        checkNonRepeating(20, centerX, HEIGHT / 2, true);
+        assertColorEquals(Color.RED, centerX + 9, HEIGHT / 2, TOLERANCE);
+        assertColorEquals(SCENE_FILL, centerX + 10, HEIGHT / 2, TOLERANCE);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterTop() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: center top");
+
+        final int centerY = (REGION_TOP + 10);
+        checkNonRepeating(20, WIDTH / 2, centerY, true);
+        assertColorEquals(Color.RED, WIDTH / 2, centerY - 10, TOLERANCE);
+        assertColorEquals(SCENE_FILL, WIDTH / 2, centerY - 11, TOLERANCE);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterBottom() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: center bottom");
+
+        final int centerY = (REGION_BOTTOM - 10);
+        checkNonRepeating(20, WIDTH / 2, centerY, true);
+        assertColorEquals(Color.RED, WIDTH / 2, centerY + 9, TOLERANCE);
+        assertColorEquals(SCENE_FILL, WIDTH / 2, centerY + 10, TOLERANCE);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionBottomRight() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: right bottom");
+
+        final int centerX = (REGION_RIGHT - 10);
+        final int centerY = (REGION_BOTTOM - 10);
+        checkNonRepeating(20, centerX, centerY, true);
+        assertColorEquals(Color.RED, centerX + 9, centerY, TOLERANCE);
+        assertColorEquals(SCENE_FILL, centerX + 10, centerY, TOLERANCE);
+        assertColorEquals(Color.RED, centerX, centerY + 9, TOLERANCE);
+        assertColorEquals(SCENE_FILL, centerX, centerY + 10, TOLERANCE);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterRepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-x;" +
+                "-fx-background-position: center");
+
+        checkHorizontalStripAlongCenter(20, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterFiftyPercentRepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-x;" +
+                "-fx-background-position: 50%");
+
+        checkHorizontalStripAlongCenter(20, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterLeftRepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-x;" +
+                "-fx-background-position: left center");
+
+        checkHorizontalStripAlongCenter(20, LEFT);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterRightRepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-x;" +
+                "-fx-background-position: right center");
+        checkHorizontalStripAlongCenter(20, LEFT);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterTopRepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-x;" +
+                "-fx-background-position: center top");
+
+        checkHorizontalStripAlongTop(20, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterBottomRepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-x;" +
+                "-fx-background-position: center bottom");
+
+        checkHorizontalStripAlongBottom(20, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionBottomRightRepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-x;" +
+                "-fx-background-position: right bottom");
+
+        checkHorizontalStripAlongBottom(20, LEFT);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterRepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-y;" +
+                "-fx-background-position: center");
+
+        checkVerticalStripAlongCenter(20, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterFiftyPercentRepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-y;" +
+                "-fx-background-position: 50%");
+
+        checkVerticalStripAlongCenter(20, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterLeftRepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-y;" +
+                "-fx-background-position: left center");
+
+        checkVerticalStripAlongLeft(20, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterRightRepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-y;" +
+                "-fx-background-position: right center");
+
+        checkVerticalStripAlongRight(20, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterTopRepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-y;" +
+                "-fx-background-position: center top");
+
+        checkVerticalStripAlongCenter(20, TOP);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionCenterBottomRepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-y;" +
+                "-fx-background-position: center bottom");
+
+        checkVerticalStripAlongCenter(20, TOP);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_PositionBottomRightRepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: repeat-y;" +
+                "-fx-background-position: right bottom");
+
+        checkVerticalStripAlongRight(20, TOP);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_Position25PercentLeft() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: left 25% center");
+
+        int offsetX = 5;
+        checkNonRepeating(20,
+                (REGION_LEFT +  (int) (.25 * REGION_WIDTH) + offsetX),
+                (REGION_TOP +  (int) (.5 * REGION_HEIGHT)), true);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_Position25PercentRight() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: right 25% center");
+
+        int offsetX = 5;
+        checkNonRepeating(20,
+                (REGION_LEFT +  (int) (.75 * REGION_WIDTH) - offsetX),
+                (REGION_TOP +  (int) (.5 * REGION_HEIGHT)), true);
+    }
+
+    // TODO should do from the top & bottom
+
+    // TODO should test that cover causes other properties to be ignored
+    @Test(timeout=5000)
+    public void alignedImage_Cover() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-size: cover;");
+
+        // The image is 20x20. To fit, it would need to be stretched to be 300x300.
+        checkNonRepeating(300, REGION_LEFT + 150, REGION_TOP + 150, false);
+    }
+
+    // TODO should test that contain causes other properties to be ignored
+    @Test(timeout=5000)
+    public void alignedImage_Contain() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-size: contain;");
+
+        // The image is 20x20. So there will be two copies, 200x200 in size
+        checkNonRepeating(200, REGION_LEFT + 100, REGION_TOP + 100, false);
+        checkNonRepeating(200, REGION_LEFT + 300, REGION_TOP + 100, false);
+    }
+
+    @Test(timeout=5000)
+    public void alignedImage_ContainNoRepeat() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test20x20.png');" +
+                "-fx-background-size: contain;" +
+                "-fx-background-repeat: no-repeat;");
+
+        checkNonRepeating(200, REGION_LEFT + 100, REGION_TOP + 100, true);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');");
+        checkCompletelyFilled(48);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_RepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-x");
+
+        checkHorizontalStripAlongTop(48, LEFT);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_RepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-y");
+
+        checkVerticalStripAlongLeft(48, TOP);
+    }
+
+    @Ignore("RT-33411: Doesn't work at present because of Prism bug where the gaps between rows are inconsistent")
+    @Test(timeout=5000)
+    public void unalignedImage_Space() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: space space");
+
+        checkEvenlyFilled(48);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_Round() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: round");
+
+        checkCompletelyFilled(50); // rounded up from 48 to 50
+    }
+
+    @Ignore("RT-33411: Doesn't work at present because of Prism bug where the gaps between rows are inconsistent")
+    @Test(timeout=5000)
+    public void unalignedImage_RoundSpace() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: round space");
+
+        // Need to update checkEvenlyFilled / checkCompletely filled to handle case like this where it is
+        // even in one dimension and spaced in the other
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenter() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: center");
+        checkNonRepeating(48, WIDTH / 2, HEIGHT / 2, true);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterFiftyPercent() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: 50%");
+        checkNonRepeating(48, WIDTH / 2, HEIGHT / 2, true);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterLeft() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: left center");
+        checkNonRepeating(48, REGION_LEFT + 24, HEIGHT / 2, true);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterRight() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: right center");
+        checkNonRepeating(48, REGION_RIGHT - 24, HEIGHT / 2, true);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterTop() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: center top");
+        checkNonRepeating(48, WIDTH / 2, REGION_TOP + 24, true);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterBottom() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: center bottom");
+        checkNonRepeating(48, WIDTH / 2, REGION_BOTTOM - 24, true);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionBottomRight() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: right bottom");
+        checkNonRepeating(48, REGION_RIGHT - 24, REGION_BOTTOM - 24, true);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterRepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-x;" +
+                "-fx-background-position: center");
+
+        checkHorizontalStripAlongCenter(48, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterFiftyPercentRepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-x;" +
+                "-fx-background-position: 50%");
+
+        checkHorizontalStripAlongCenter(48, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterLeftRepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-x;" +
+                "-fx-background-position: left center");
+
+        checkHorizontalStripAlongCenter(48, LEFT);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterRightRepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-x;" +
+                "-fx-background-position: right center");
+
+        checkHorizontalStripAlongCenter(48, RIGHT);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterTopRepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-x;" +
+                "-fx-background-position: center top");
+
+        checkHorizontalStripAlongTop(48, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterBottomRepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-x;" +
+                "-fx-background-position: center bottom");
+
+        checkHorizontalStripAlongBottom(48, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionBottomRightRepeatX() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-x;" +
+                "-fx-background-position: right bottom");
+
+        checkHorizontalStripAlongBottom(48, RIGHT);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterRepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-y;" +
+                "-fx-background-position: center");
+
+        checkVerticalStripAlongCenter(48, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterFiftyPercentRepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-y;" +
+                "-fx-background-position: 50%");
+
+        checkVerticalStripAlongCenter(48, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterLeftRepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-y;" +
+                "-fx-background-position: left center");
+
+        checkVerticalStripAlongLeft(48, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterRightRepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-y;" +
+                "-fx-background-position: right center");
+
+        checkVerticalStripAlongRight(48, CENTER);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterTopRepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-y;" +
+                "-fx-background-position: center top");
+
+        checkVerticalStripAlongCenter(48, TOP);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionCenterBottomRepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-y;" +
+                "-fx-background-position: center bottom");
+
+        checkVerticalStripAlongCenter(48, BOTTOM);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_PositionBottomRightRepeatY() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: repeat-y;" +
+                "-fx-background-position: right bottom");
+
+        checkVerticalStripAlongRight(48, BOTTOM);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_Position25PercentLeft() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: left 25% center");
+
+        int offsetX = 12;
+        checkNonRepeating(48,
+                (REGION_LEFT +  (int) (.25 * REGION_WIDTH) + offsetX),
+                (REGION_TOP +  (int) (.5 * REGION_HEIGHT)), true);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_Position25PercentRight() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-repeat: no-repeat;" +
+                "-fx-background-position: right 25% center");
+
+        int offsetX = 12;
+        checkNonRepeating(48,
+                (REGION_LEFT +  (int) (.75 * REGION_WIDTH) - offsetX),
+                (REGION_TOP +  (int) (.5 * REGION_HEIGHT)), true);
+    }
+
+    // TODO should do from the top & bottom
+
+    // TODO should test that cover causes other properties to be ignored
+
+    @Test(timeout=5000)
+    public void unalignedImage_Cover() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-size: cover;");
+
+        // The image is 48x48. To fit it would need to be stretched to 336x336
+        checkNonRepeating(336, REGION_LEFT + 168, REGION_TOP + 168, false);
+    }
+
+    // TODO should test that contain causes other properties to be ignored
+    @Test(timeout=5000)
+    public void unalignedImage_Contain() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-size: contain;");
+
+        // The image is 48x48. So there will be two copies, 200x200 in size
+        checkNonRepeating(200, REGION_LEFT + 100, REGION_TOP + 100, false);
+        checkNonRepeating(200, REGION_LEFT + 300, REGION_TOP + 100, false);
+    }
+
+    @Test(timeout=5000)
+    public void unalignedImage_ContainNoRepeat() {
+        setStyle("-fx-background-color: black;" +
+                "-fx-background-image: url('javafx/scene/layout/test48x48.png');" +
+                "-fx-background-size: contain;" +
+                "-fx-background-repeat: no-repeat;");
+
+        checkNonRepeating(200, REGION_LEFT + 100, REGION_TOP + 100, true);
+    }
+
+    // TODO need to write tests for when there are multiple images
+
+    // TODO there are probably a hundred other combinations to try, easy.
+    // And then there are another thousand combinations where some of the
+    // settings are ignored, and we need to ensure that indeed they are ignored.
+    // TODO I need to turn most of these tests into proper unit tests as well
+    // so that we know that the CSS->Region process is working correctly.
+
+    // TODO need to write tests where SPACE is the repeat but only 2 tiles fit, and where only 1 tile fits.
+
+    static final int LEFT = 0;
+    static final int RIGHT = 1;
+    static final int CENTER = 2;
+    static final int TOP = 3;
+    static final int BOTTOM = 4;
+
+    private void checkRegionFillOutsideTheseBounds(Color expectedFill, int x, int y, int w, int h) {
+        // There should be a single image in the very center, and that is all. We'll check a few other places to make
+        // sure it is all black, except for the center.
+        final double hw = w / 2.0;
+        final double hh = h / 2.0;
+        final int halfWidth = (int) hw;
+        final int halfHeight = (int) hh;
+        final int centerX = (int) (x + hw);
+        final int centerY = (int) (y + hh);
+
+        // Every pixel left of the image
+        for (int xx=centerX-halfWidth-1; xx>REGION_LEFT; xx--) {
+            assertColorEquals(expectedFill, xx, centerY, TOLERANCE);
+        }
+        // Every pixel to the right of the image
+        for (int xx=centerX+halfWidth; xx<REGION_RIGHT; xx++) {
+            assertColorEquals(expectedFill, xx, centerY, TOLERANCE);
+        }
+        // Every pixel above the image
+        for (int yy=centerY-halfHeight-1; yy>REGION_TOP; yy--) {
+            assertColorEquals(expectedFill, centerX, yy, TOLERANCE);
+        }
+        // Every pixel below the image
+        for (int yy=centerY+halfHeight; yy<REGION_TOP+REGION_HEIGHT; yy++) {
+            assertColorEquals(expectedFill, centerX, yy, TOLERANCE);
+        }
+    }
+
+    // Without gaps!
+    private void checkCompletelyFilled(int size) {
+        final int halfSize = size / 2;
+        final int numRows = (200 / size) + 1;
+        final int numCols = (300 / size) + 1;
+        for (int row=0; row<numRows; row++) {
+            for (int col=0; col<numCols; col++) {
+                int centerX = (REGION_LEFT + (size * col) + halfSize);
+                int centerY = (REGION_TOP + (size * row) + halfSize);
+                checkNonRepeating(size, centerX, centerY, false);
+            }
+        }
+
+        // Because the tiles fit perfectly, we shouldn't be able to see the background fill at all
+        checkRegionCornersAndBoundariesOfBackgroundFill(region.getBackground().getFills().get(0), Color.RED, SCENE_FILL);
+    }
+
+    // With gaps!
+    private void checkEvenlyFilled(int size) {
+        final int halfSize = size / 2;
+        final int numRows = 200 / size;
+        final int numCols = 300 / size;
+        final int rowGap = (200 - (numRows * size)) / (numRows - 1);
+        final int colGap = (300 - (numCols * size)) / (numCols - 1);
+        for (int row=0; row<numRows; row++) {
+            for (int col=0; col<numCols; col++) {
+                int centerX = (REGION_LEFT + (size * col) + (colGap * col) + halfSize);
+                int centerY = (REGION_TOP + (size * row) + (rowGap * row) + halfSize);
+                checkNonRepeating(size, centerX, centerY, false);
+                if (col > 0) {
+                    int x = centerX - halfSize - (colGap / 2);
+                    assertColorEquals(Color.BLACK, x, centerY, TOLERANCE);
+                }
+                if (row > 0) {
+                    int y = centerY - halfSize - (rowGap / 2);
+                    assertColorEquals(Color.BLACK, centerX, y, TOLERANCE);
+                }
+            }
+        }
+
+        // Because the tiles fit perfectly, we shouldn't be able to see the background fill at all
+        checkRegionCornersAndBoundariesOfBackgroundFill(region.getBackground().getFills().get(0), Color.RED, SCENE_FILL);
+    }
+
+    private void checkHorizontalStripAlongTop(int size, int where) {
+        final int halfSize = size / 2;
+        final int quarterSize = size / 4;
+        final int centerX = (REGION_LEFT + halfSize);
+        final int centerY = (REGION_TOP + halfSize);
+        final int leftX = REGION_LEFT;
+        final int topY = REGION_TOP;
+        final int rightX = REGION_RIGHT;
+
+        // The centers
+        if (where == CENTER) {
+            for (int i=WIDTH/2; i<rightX; i+=size) {
+                checkNonRepeating(size, i, centerY, false);
+            }
+            for (int i=WIDTH/2; i>leftX; i-=size) {
+                checkNonRepeating(size, i, centerY, false);
+            }
+        } else if (where == LEFT) {
+            for (int i=centerX; i<rightX; i+=size) {
+                checkNonRepeating(size, i, centerY, false);
+            }
+        } else {
+            for (int i=rightX - halfSize; i>leftX; i-=size) {
+                checkNonRepeating(size, i, centerY, false);
+            }
+        }
+        // Every pixel outside the image
+        checkRegionFillOutsideTheseBounds(Color.BLACK, leftX, topY, REGION_WIDTH, size);
+        // Should be butted up to the left and right and top edges
+        checkRegionTopBoundary(0, Color.RED, SCENE_FILL, 0, TOLERANCE);
+        // left
+        assertColorDoesNotEqual(SCENE_FILL, leftX, topY, TOLERANCE);
+        assertColorEquals(SCENE_FILL, leftX - 1, topY, TOLERANCE);
+        assertColorEquals(SCENE_FILL, leftX, topY - 1, TOLERANCE);
+        // right
+        assertColorDoesNotEqual(SCENE_FILL, (REGION_RIGHT) - 1, REGION_TOP, TOLERANCE);
+        assertColorEquals(SCENE_FILL, (REGION_RIGHT), REGION_TOP, TOLERANCE);
+        assertColorEquals(SCENE_FILL, (REGION_RIGHT), REGION_TOP-1, TOLERANCE);
+    }
+
+    private void checkHorizontalStripAlongCenter(int size, int where) {
+        final int halfSize = size / 2;
+        final int centerX = (REGION_LEFT + halfSize);
+        final int centerY = (REGION_TOP + (REGION_HEIGHT / 2));
+        final int leftX = REGION_LEFT;
+        final int rightX = REGION_RIGHT;
+
+        // The centers
+        if (where == CENTER) {
+            for (int i=WIDTH/2; i<rightX; i+=size) {
+                checkNonRepeating(size, i, centerY, false);
+            }
+            for (int i=WIDTH/2; i>leftX; i-=size) {
+                checkNonRepeating(size, i, centerY, false);
+            }
+        } else if (where == LEFT) {
+            for (int i=centerX; i<rightX; i+=size) {
+                checkNonRepeating(size, i, centerY, false);
+            }
+        } else {
+            for (int i=rightX - halfSize; i>leftX; i-=size) {
+                checkNonRepeating(size, i, centerY, false);
+            }
+        }
+        // Every pixel outside the image
+        checkRegionFillOutsideTheseBounds(Color.BLACK, leftX, centerY-halfSize, REGION_WIDTH, size);
+        // Should be butted up to the left and right edges
+        checkRegionLeftBoundary(0, null, SCENE_FILL, 0, TOLERANCE);
+        checkRegionRightBoundary(0, null, SCENE_FILL, 0, TOLERANCE);
+    }
+
+    private void checkHorizontalStripAlongBottom(int size, int where) {
+        final int halfSize = size / 2;
+        final int centerX = (REGION_LEFT + halfSize);
+        final int centerY = (REGION_BOTTOM - halfSize);
+        final int leftX = REGION_LEFT;
+        final int rightX = REGION_RIGHT;
+        final int bottomY = REGION_BOTTOM;
+
+        // The centers
+        if (where == CENTER) {
+            for (int i=WIDTH/2; i<rightX; i+=size) {
+                checkNonRepeating(size, i, centerY, false);
+            }
+            for (int i=WIDTH/2; i>leftX; i-=size) {
+                checkNonRepeating(size, i, centerY, false);
+            }
+        } else if (where == LEFT) {
+            for (int i=centerX; i<rightX; i+=size) {
+                checkNonRepeating(size, i, centerY, false);
+            }
+        } else {
+            for (int i=rightX - halfSize; i>leftX; i-=size) {
+                checkNonRepeating(size, i, centerY, false);
+            }
+        }
+        // Every pixel outside the image
+        checkRegionFillOutsideTheseBounds(Color.BLACK, leftX, bottomY - size, REGION_WIDTH, size);
+        // Should be butted up to the left and right and bottom edges
+        checkRegionBottomBoundary(0, Color.RED, SCENE_FILL, 0, TOLERANCE);
+        // left
+        assertColorDoesNotEqual(SCENE_FILL, leftX, bottomY - 1, TOLERANCE);
+        assertColorEquals(SCENE_FILL, leftX - 1, bottomY, TOLERANCE);
+        assertColorEquals(SCENE_FILL, leftX, bottomY, TOLERANCE);
+        // right
+        assertColorDoesNotEqual(SCENE_FILL, rightX - 1, bottomY - 1, TOLERANCE);
+        assertColorEquals(SCENE_FILL, rightX, bottomY - 1, TOLERANCE);
+        assertColorEquals(SCENE_FILL, rightX - 1, bottomY, TOLERANCE);
+    }
+
+    private void checkVerticalStripAlongLeft(int size, int where) {
+        final int halfSize = size / 2;
+        final int centerX = (REGION_LEFT + halfSize);
+        final int centerY = (REGION_TOP + halfSize);
+        final int leftX = REGION_LEFT;
+        final int topY = REGION_TOP;
+        final int rightX = (REGION_RIGHT);
+        final int bottomY = (REGION_BOTTOM);
+
+        // The centers
+        if (where == CENTER) {
+            for (int i=HEIGHT/2; i<bottomY; i+=size) {
+                checkNonRepeating(size, centerX, i, false);
+            }
+            for (int i=HEIGHT/2; i>topY; i-=size) {
+                checkNonRepeating(size, centerX, i, false);
+            }
+        } else if (where == TOP) {
+            for (int i=centerY; i<bottomY; i+=size) {
+                checkNonRepeating(size, centerX, i, false);
+            }
+        } else {
+            for (int i=bottomY - halfSize; i>topY; i-=size) {
+                checkNonRepeating(size, centerX, i, false);
+            }
+        }
+        // Every pixel outside the image
+        checkRegionFillOutsideTheseBounds(Color.BLACK, leftX, topY, size, REGION_HEIGHT);
+        // Should be butted up to the left and top and bottom edges
+        checkRegionLeftBoundary(0, Color.RED, SCENE_FILL, 0, TOLERANCE);
+        // Top
+        assertColorDoesNotEqual(SCENE_FILL, leftX, topY, TOLERANCE); // inside
+        assertColorEquals(SCENE_FILL, leftX - 1, topY, TOLERANCE); // outside left
+        assertColorEquals(SCENE_FILL, leftX, topY - 1, TOLERANCE); // outside top
+        // Bottom
+        assertColorDoesNotEqual(SCENE_FILL, leftX, bottomY - 1, TOLERANCE); // inside
+        assertColorEquals(SCENE_FILL, leftX - 1, bottomY - 1, TOLERANCE); // outside left
+        assertColorEquals(SCENE_FILL, leftX, bottomY, TOLERANCE); // outside bottom
+    }
+
+    private void checkVerticalStripAlongCenter(int size, int where) {
+        final int halfSize = size / 2;
+        final int centerX = (REGION_LEFT + (REGION_WIDTH / 2));
+        final int centerY = (REGION_TOP + halfSize);
+        final int leftX = REGION_LEFT;
+        final int topY = REGION_TOP;
+        final int rightX = (REGION_RIGHT);
+        final int bottomY = (REGION_BOTTOM);
+
+        // The centers
+        if (where == CENTER) {
+            for (int i=HEIGHT/2; i<bottomY; i+=size) {
+                checkNonRepeating(size, centerX, i, false);
+            }
+            for (int i=HEIGHT/2; i>topY; i-=size) {
+                checkNonRepeating(size, centerX, i, false);
+            }
+        } else if (where == TOP) {
+            for (int i=centerY; i<bottomY; i+=size) {
+                checkNonRepeating(size, centerX, i, false);
+            }
+        } else {
+            for (int i=bottomY - halfSize; i>topY; i-=size) {
+                checkNonRepeating(size, centerX, i, false);
+            }
+        }
+        // Every pixel outside the image
+        checkRegionFillOutsideTheseBounds(Color.BLACK, centerX-halfSize, topY, size, REGION_HEIGHT);
+        // Should be butted up to the top and bottom edges
+        // Top
+        assertColorDoesNotEqual(SCENE_FILL, centerX, topY, TOLERANCE); // inside
+        assertColorEquals(SCENE_FILL, centerX, topY - 1, TOLERANCE); // outside top
+        // Bottom
+        assertColorDoesNotEqual(SCENE_FILL, centerX, bottomY - 1, TOLERANCE); // inside
+        assertColorEquals(SCENE_FILL, centerX, bottomY, TOLERANCE); // outside bottom
+    }
+
+    private void checkVerticalStripAlongRight(int size, int where) {
+        final int halfSize = size / 2;
+        final int centerX = (REGION_RIGHT - halfSize);
+        final int centerY = (REGION_TOP + halfSize);
+        final int leftX = REGION_LEFT;
+        final int topY = REGION_TOP;
+        final int rightX = (REGION_RIGHT);
+        final int bottomY = (REGION_BOTTOM);
+
+        // The centers
+        if (where == CENTER) {
+            for (int i=HEIGHT/2; i<bottomY; i+=size) {
+                checkNonRepeating(size, centerX, i, false);
+            }
+            for (int i=HEIGHT/2; i>topY; i-=size) {
+                checkNonRepeating(size, centerX, i, false);
+            }
+        } else if (where == TOP) {
+            for (int i=centerY; i<bottomY; i+=size) {
+                checkNonRepeating(size, centerX, i, false);
+            }
+        } else {
+            for (int i=bottomY - halfSize; i>topY; i-=size) {
+                checkNonRepeating(size, centerX, i, false);
+            }
+        }
+        // Every pixel outside the image
+        checkRegionFillOutsideTheseBounds(Color.BLACK, rightX-size, topY, size, REGION_HEIGHT);
+        // Should be butted up to the right and top and bottom edges
+        checkRegionRightBoundary(0, Color.RED, SCENE_FILL, 0, TOLERANCE);
+        // Top
+        assertColorDoesNotEqual(SCENE_FILL, rightX - 1, topY, TOLERANCE); // inside
+        assertColorEquals(SCENE_FILL, rightX, topY, TOLERANCE); // outside right
+        assertColorEquals(SCENE_FILL, rightX - 1, topY - 1, TOLERANCE); // outside top
+        // Bottom
+        assertColorDoesNotEqual(SCENE_FILL, rightX - 1, bottomY - 1, TOLERANCE); // inside
+        assertColorEquals(SCENE_FILL, rightX, bottomY - 1, TOLERANCE); // outside right
+        assertColorEquals(SCENE_FILL, rightX - 1, bottomY, TOLERANCE); // outside bottom
+    }
+
+    private void checkNonRepeating(int size, int centerX, int centerY, boolean checkForBlack) {
+        final int halfSize = size / 2;
+        final int quarterSize = size / 4;
+        // The image
+        int x = centerX - halfSize;
+        int y = centerY - halfSize;
+        assertColorEquals(contains(x, y) ? Color.RED : SCENE_FILL, x, y, TOLERANCE);
+        x = centerX - quarterSize;
+        y = centerY - quarterSize;
+        assertColorEquals(contains(x, y) ? Color.rgb(0, 255, 0) : SCENE_FILL, x, y, TOLERANCE);
+        x = centerX;
+        y = centerY;
+        assertColorEquals(contains(x, y) ? Color.BLUE : SCENE_FILL, x, y, TOLERANCE);
+        // Every pixel outside the image
+        if (checkForBlack) checkRegionFillOutsideTheseBounds(Color.BLACK, centerX - halfSize, centerY - halfSize, size, size);
+    }
+
+    // This contains has an inclusive of minX, minY, but exclusive of maxX, maxY because when filling the pixels
+    // of a rectangle, this is what happens.
+    private boolean contains(int x, int y) {
+        final Bounds bounds = region.getBoundsInParent();
+        return x >= bounds.getMinX() && x < bounds.getMaxX() && y >= bounds.getMinY() && y < bounds.getMaxY();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/system/src/test/java/javafx/scene/layout/RegionBorderImageUITest.java	Mon Oct 07 16:25:34 2013 -0700
@@ -0,0 +1,182 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javafx.scene.layout;
+
+import org.junit.Test;
+
+/**
+ */
+public class RegionBorderImageUITest extends RegionUITestBase {
+    @Test public void dummy() {
+
+    }
+//    @Test(timeout=5000)
+//    public void test() {
+//        setStyle(
+//                "-fx-border-image-source: url('javafx/scene/layout/border.png');" +
+//                "-fx-border-image-slice: 10;" +
+//                "-fx-border-image-width: 10;" +
+//                "-fx-border-image-repeat: round;");
+//
+//        System.out.println("WHAT");
+//    }
+//
+//    @Test(timeout=5000)
+//    public void test2() {
+//        setStyle(
+//                "-fx-border-image-source: url('javafx/scene/layout/border.png');" +
+//                "-fx-border-image-slice: 10;" +
+//                "-fx-border-image-width: 10;" +
+//                "-fx-border-image-repeat: repeat;");
+//
+//        System.out.println("WHAT");
+//    }
+//
+//    @Test(timeout=5000)
+//    public void test3() {
+//        setStyle(
+//                "-fx-border-image-source: url('javafx/scene/layout/border-uneven.png');" +
+//                "-fx-border-image-slice: 11;" +
+//                "-fx-border-image-width: 11;" +
+//                "-fx-border-image-repeat: space;");
+//
+//        System.out.println("WHAT");
+//    }
+//
+    @Test(timeout=5000)
+    public void test4() {
+        setStyle(
+                "-fx-border-image-source: url('javafx/scene/layout/border-stretch.png');" +
+                "-fx-border-image-slice: 14;" +
+                "-fx-border-image-width: 14;" +
+                "-fx-border-image-repeat: stretch;");
+
+        System.out.println("WHAT");
+    }
+
+//    @Test(timeout=5000)
+//    public void differentSliceAndWidths() {
+//        setStyle(
+//                "-fx-border-image-source: url('javafx/scene/layout/border.png');" +
+//                "-fx-border-color:green;" +
+//                "-fx-border-image-repeat: repeat;" +
+//                "-fx-border-image-slice: 27;" +
+//                "-fx-border-image-width: 10 15 20 25;");
+//    }
+//
+//    @Test(timeout=5000)
+//    public void repeatX() {
+//        setStyle("-fx-border-image-source: url('javafx/scene/layout/border.png');" +
+//                        "-fx-border-image-repeat: repeat-x;" +
+//                        "-fx-border-image-slice: 28;" +
+//                        "-fx-border-image-width: 28;");
+//    }
+//
+//    @Test(timeout=5000)
+//    public void repeatY() {
+//        setStyle("-fx-border-image-source: url('javafx/scene/layout/border.png');" +
+//                        "-fx-border-image-repeat: repeat-y;" +
+//                        "-fx-border-image-slice: 28;" +
+//                        "-fx-border-image-width: 28;");
+//    }
+//
+//    @Test(timeout=5000)
+//    public void testWider() {
+//        setStyle(
+//                "-fx-border-image-source: url('javafx/scene/layout/border.png');" +
+//                "-fx-border-image-slice: 27;" +
+//                "-fx-border-image-width: 40;" +
+//                "-fx-border-image-repeat: round;");
+//    }
+//
+//    @Test(timeout=5000)
+//    public void testWider2() {
+//        setStyle(
+//                "-fx-border-image-source: url('javafx/scene/layout/border.png');" +
+//                "-fx-border-image-slice: 27;" +
+//                "-fx-border-image-width: 40;" +
+//                "-fx-border-image-repeat: repeat;");
+//    }
+//
+//    @Test(timeout=5000)
+//    public void testWider3() {
+//        setStyle(
+//                "-fx-border-image-source: url('javafx/scene/layout/border.png');" +
+//                "-fx-border-image-slice: 27;" +
+//                "-fx-border-image-width: 40;" +
+//                "-fx-border-image-repeat: space;");
+//    }
+//
+//    @Test(timeout=5000)
+//    public void testWider4() {
+//        setStyle(
+//                "-fx-border-image-source: url('javafx/scene/layout/border.png');" +
+//                "-fx-border-image-slice: 27;" +
+//                "-fx-border-image-width: 40;" +
+//                "-fx-border-image-repeat: stretch;");
+//    }
+//
+//    @Test(timeout=5000)
+//    public void repeatXWider() {
+//        setStyle("-fx-border-image-source: url('javafx/scene/layout/border.png');" +
+//                        "-fx-border-image-repeat: repeat-x;" +
+//                        "-fx-border-image-slice: 28;" +
+//                        "-fx-border-image-width: 40;");
+//    }
+//
+//    @Test(timeout=5000)
+//    public void repeatYWider() {
+//        setStyle("-fx-border-image-source: url('javafx/scene/layout/border.png');" +
+//                        "-fx-border-image-repeat: repeat-y;" +
+//                        "-fx-border-image-slice: 28;" +
+//                        "-fx-border-image-width: 40;");
+//    }
+
+//    @Test(timeout=5000)
+//    public void withInsets() {
+//        setStyle(
+//                "-fx-border-image-source: url('javafx/scene/layout/popover-no-arrow-empty.png');" +
+//                "-fx-border-image-slice: 78 50 60 50;" +
+//                "-fx-border-image-width: 78 50 60 50;");
+//    }
+//
+//    @Test(timeout=5000)
+//    public void withInsets2() {
+//        setStyle(
+//                "-fx-border-image-source: url('javafx/scene/layout/popover-no-arrow-empty.png');" +
+//                "-fx-border-image-slice: 78 50 60 50;" +
+//                "-fx-border-image-width: 78 50 60 50;" +
+//                "-fx-border-image-insets: -27 -37 -47 -37;");
+//    }
+//
+//    @Test(timeout=5000)
+//    public void button() {
+//        setStyle(
+//                "-fx-border-image-source: url('javafx/scene/layout/BlackButton.png');" +
+//                "-fx-border-image-slice: 25 95 25 95 fill;" +
+//                "-fx-border-image-width: 25 95 25 95;" +
+//                "-fx-border-image-repeat: stretch;");
+//    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/system/src/test/java/javafx/scene/layout/RegionBorderStrokeUITest.java	Mon Oct 07 16:25:34 2013 -0700
@@ -0,0 +1,1004 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javafx.scene.layout;
+
+import org.junit.Test;
+
+/**
+ */
+public class RegionBorderStrokeUITest extends RegionUITestBase {
+
+    @Test public void dummy() {
+
+    }
+//    /**************************************************************************
+//     *                                                                        *
+//     * Tests for a color filled stroke                                        *
+//     *                                                                        *
+//     *************************************************************************/
+//
+////    public void color_BorderWidth_Thin(Region region) {
+////        region.setStyle("-fx-background-color: lightgrey;" +
+////                        "-fx-border-style: solid;" +
+////                        "-fx-border-width: thin;" +
+////                        "-fx-border-color: red;");
+////    }
+//
+//    public void color_BorderWidth_Thin1(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-width: 1;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+////    public void color_BorderWidth_Medium(Region region) {
+////        region.setStyle("-fx-background-color: lightgrey;" +
+////                        "-fx-border-style: solid;" +
+////                        "-fx-border-width: medium;" +
+////                        "-fx-border-color: red;");
+////    }
+//
+//    public void color_BorderWidth_Medium2(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-width: 3;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+////    public void color_BorderWidth_Thick(Region region) {
+////        region.setStyle("-fx-background-color: lightgrey;" +
+////                        "-fx-border-style: solid;" +
+////                        "-fx-border-width: thick;" +
+////                        "-fx-border-color: red;");
+////    }
+//
+//    public void color_BorderWidth_Thick2(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_Solid(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_SolidPhase5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid phase 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_SolidCentered(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid centered;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_SolidInside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid inside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_SolidOutside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid outside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_SolidLineJoinBevel(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-join bevel;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_SolidLineJoinRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-join round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_SolidLineJoinMiter5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-join miter 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_SolidLineCapSquare(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-cap square;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_SolidLineCapButt(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-cap butt;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_SolidLineCapRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-cap round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_Dashed(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DashedPhase5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed phase 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DashedCentered(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed centered;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DashedInside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed inside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DashedOutside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed outside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DasheddLineJoinBevel(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-join bevel;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DashedLineJoinRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-join round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DashedLineJoinMiter5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-join miter 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DashedLineCapSquare(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-cap square;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DashedLineCapButt(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-cap butt;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DashedLineCapRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-cap round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_Dotted(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DottedPhase5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted phase 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DottedCentered(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted centered;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DottedInside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted inside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DottedOutside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted outside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DotteddLineJoinBevel(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-join bevel;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DottedLineJoinRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-join round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DottedLineJoinMiter5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-join miter 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DottedLineCapSquare(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-cap square;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DottedLineCapButt(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-cap butt;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_Style_DottedLineCapRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-cap round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: red;");
+//    }
+//
+//    public void color_MultipleInsetBorders(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-color: red, green, blue;" +
+//                        "-fx-border-width: 5, 10, 15;" +
+//                        "-fx-border-insets: 0, 5, 15;");
+//    }
+//
+//    public void color_UniformBorderRadius(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-background-radius: 15;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-radius: 15;");
+//    }
+//
+//    public void color_NonuniformBorderRadius(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-background-radius: 25 20 25 30;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-radius: 15 20 25 30;");
+//    }
+//
+//    public void color_NonuniformBorderWidths_uniformRadius(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-background-radius: 15;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 5 10 15 20;" +
+//                        "-fx-border-radius: 15;");
+//    }
+//
+//    public void color_NonuniformBorderWidths_nonuniformRadius(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-background-radius: 15 20 25 30;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 5 10 15 20;" +
+//                        "-fx-border-radius: 15 20 25 30;");
+//    }
+//
+//    /**************************************************************************
+//     *                                                                        *
+//     * Tests for an image-pattern filled stroke                               *
+//     *                                                                        *
+//     *************************************************************************/
+//
+////    public void image_BorderWidth_Thin(Region region) {
+////        region.setStyle("-fx-background-color: lightgrey;" +
+////                        "-fx-border-style: solid;" +
+////                        "-fx-border-width: thin;" +
+////                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+////    }
+//
+//    public void image_BorderWidth_Thin1(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-width: 1;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+////    public void image_BorderWidth_Medium(Region region) {
+////        region.setStyle("-fx-background-color: lightgrey;" +
+////                        "-fx-border-style: solid;" +
+////                        "-fx-border-width: medium;" +
+////                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+////    }
+//
+//    public void image_BorderWidth_Medium2(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-width: 3;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+////    public void image_BorderWidth_Thick(Region region) {
+////        region.setStyle("-fx-background-color: lightgrey;" +
+////                        "-fx-border-style: solid;" +
+////                        "-fx-border-width: thick;" +
+////                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+////    }
+//
+//    public void image_BorderWidth_Thick2(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_Solid(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_SolidPhase5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid phase 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_SolidCentered(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid centered;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_SolidInside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid inside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_SolidOutside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid outside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_SolidLineJoinBevel(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-join bevel;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_SolidLineJoinRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-join round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_SolidLineJoinMiter5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-join miter 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_SolidLineCapSquare(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-cap square;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_SolidLineCapButt(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-cap butt;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_SolidLineCapRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-cap round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_Dashed(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DashedPhase5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed phase 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DashedCentered(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed centered;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DashedInside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed inside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DashedOutside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed outside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DasheddLineJoinBevel(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-join bevel;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DashedLineJoinRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-join round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DashedLineJoinMiter5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-join miter 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DashedLineCapSquare(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-cap square;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DashedLineCapButt(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-cap butt;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DashedLineCapRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-cap round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_Dotted(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DottedPhase5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted phase 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DottedCentered(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted centered;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DottedInside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted inside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DottedOutside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted outside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DotteddLineJoinBevel(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-join bevel;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DottedLineJoinRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-join round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DottedLineJoinMiter5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-join miter 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DottedLineCapSquare(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-cap square;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DottedLineCapButt(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-cap butt;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_Style_DottedLineCapRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-cap round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');");
+//    }
+//
+//    public void image_MultipleInsetBorders(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-color: red, green, blue;" +
+//                        "-fx-border-width: 5, 10, 15;" +
+//                        "-fx-border-insets: 0, 5, 15;");
+//    }
+//
+//    public void image_UniformBorderRadius(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-background-radius: 15;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-radius: 15;");
+//    }
+//
+//    public void image_NonuniformBorderRadius(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-background-radius: 25 20 25 30;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-radius: 15 20 25 30;");
+//    }
+//
+//    public void image_NonuniformBorderWidths_uniformRadius(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-background-radius: 15;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
+//                        "-fx-border-width: 5 10 15 20;" +
+//                        "-fx-border-radius: 15;");
+//    }
+//
+//    public void image_NonuniformBorderWidths_nonuniformRadius(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-background-radius: 15 20 25 30;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
+//                        "-fx-border-width: 5 10 15 20;" +
+//                        "-fx-border-radius: 15 20 25 30;");
+//    }
+//
+//    /**************************************************************************
+//     *                                                                        *
+//     * Tests for a linear filled stroke                                       *
+//     *                                                                        *
+//     *************************************************************************/
+//
+////    public void linear_BorderWidth_Thin(Region region) {
+////        region.setStyle("-fx-background-color: lightgrey;" +
+////                        "-fx-border-style: solid;" +
+////                        "-fx-border-width: thin;" +
+////                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+////    }
+//
+//    public void linear_BorderWidth_Thin1(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-width: 1;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+////    public void linear_BorderWidth_Medium(Region region) {
+////        region.setStyle("-fx-background-color: lightgrey;" +
+////                        "-fx-border-style: solid;" +
+////                        "-fx-border-width: medium;" +
+////                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+////    }
+//
+//    public void linear_BorderWidth_Medium2(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-width: 3;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+////    public void linear_BorderWidth_Thick(Region region) {
+////        region.setStyle("-fx-background-color: lightgrey;" +
+////                        "-fx-border-style: solid;" +
+////                        "-fx-border-width: thick;" +
+////                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+////    }
+//
+//    public void linear_BorderWidth_Thick2(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_Solid(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_SolidPhase5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid phase 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_SolidCentered(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid centered;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_SolidInside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid inside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_SolidOutside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid outside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_SolidLineJoinBevel(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-join bevel;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_SolidLineJoinRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-join round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_SolidLineJoinMiter5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-join miter 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_SolidLineCapSquare(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-cap square;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_SolidLineCapButt(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-cap butt;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_SolidLineCapRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid line-cap round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_Dashed(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DashedPhase5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed phase 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DashedCentered(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed centered;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DashedInside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed inside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DashedOutside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed outside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DasheddLineJoinBevel(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-join bevel;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DashedLineJoinRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-join round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DashedLineJoinMiter5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-join miter 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DashedLineCapSquare(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-cap square;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DashedLineCapButt(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-cap butt;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DashedLineCapRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dashed line-cap round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_Dotted(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DottedPhase5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted phase 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DottedCentered(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted centered;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DottedInside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted inside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DottedOutside(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted outside;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DotteddLineJoinBevel(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-join bevel;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DottedLineJoinRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-join round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DottedLineJoinMiter5(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-join miter 5;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DottedLineCapSquare(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-cap square;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DottedLineCapButt(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-cap butt;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_Style_DottedLineCapRound(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: dotted line-cap round;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);");
+//    }
+//
+//    public void linear_MultipleInsetBorders(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%), green, blue;" +
+//                        "-fx-border-width: 5, 10, 15;" +
+//                        "-fx-border-insets: 0, 5, 15;");
+//    }
+//
+//    public void linear_UniformBorderRadius(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-background-radius: 15;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-radius: 15;");
+//    }
+//
+//    public void linear_NonuniformBorderRadius(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-background-radius: 25 20 25 30;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-border-radius: 15 20 25 30;");
+//    }
+//
+//    public void linear_NonuniformBorderWidths_uniformRadius(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-background-radius: 15;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-border-width: 5 10 15 20;" +
+//                        "-fx-border-radius: 15;");
+//    }
+//
+//    public void linear_NonuniformBorderWidths_nonuniformRadius(Region region) {
+//        region.setStyle("-fx-background-color: lightgrey;" +
+//                        "-fx-background-radius: 15 20 25 30;" +
+//                        "-fx-border-style: solid;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-border-width: 5 10 15 20;" +
+//                        "-fx-border-radius: 15 20 25 30;");
+//    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/system/src/test/java/javafx/scene/layout/RegionShapeUITest.java	Mon Oct 07 16:25:34 2013 -0700
@@ -0,0 +1,934 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javafx.scene.layout;
+
+import org.junit.Test;
+
+/**
+ */
+public class RegionShapeUITest extends RegionUITestBase {
+    private static final String ARROW = "\"M0 0 L100 0 L50 100 Z\"";
+
+
+    @Test public void dummy() { }
+
+//    /**************************************************************************
+//     *                                                                        *
+//     * Tests for background fills. We start with a series of simple tests     *
+//     * with a single solid fill, to exercise the most basic aspects of the    *
+//     * shape support (such as making sure the shape is positioned in the      *
+//     * expected places, etc).                                                 *
+//     *                                                                        *
+//     *************************************************************************/
+//
+//    public void noFills(Region region) {
+//        region.setStyle("-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidFill(Region region) {
+//        region.setStyle("-fx-background-color: red;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidFill_NotScaled(Region region) {
+//        region.setStyle("-fx-background-color: red;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidFill_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-background-color: red;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void transparentFill(Region region) {
+//        region.setStyle("-fx-background-color: rgba(255, 0, 0, .2);" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void transparentFill_NotScaled(Region region) {
+//        region.setStyle("-fx-background-color: rgba(255, 0, 0, .2);" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void transparentFill_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-background-color: rgba(255, 0, 0, .2);" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    /**************************************************************************
+//     *                                                                        *
+//     * Tests for more complex fill scenarios, including the use of image      *
+//     * fills and gradient fills                                               *
+//     *                                                                        *
+//     *************************************************************************/
+//
+//    public void twoSolidFills(Region region) {
+//        region.setStyle("-fx-background-color: red, green;" +
+//                        "-fx-background-insets: 0, 30;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void twoSolidFills_NotScaled(Region region) {
+//        region.setStyle("-fx-background-color: red, green;" +
+//                        "-fx-background-insets: 0, 30;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void twoSolidFills_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-background-color: red, green;" +
+//                        "-fx-background-insets: 0, 30;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void twoSolidFills_independentInsets(Region region) {
+//        region.setStyle("-fx-background-color: red, green;" +
+//                        "-fx-background-insets: 0, 10 20 30 40;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void twoSolidFills_independentInsets_NotScaled(Region region) {
+//        region.setStyle("-fx-background-color: red, green;" +
+//                        "-fx-background-insets: 0, 10 20 30 40;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void twoSolidFills_independentInsets_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-background-color: red, green;" +
+//                        "-fx-background-insets: 0, 10 20 30 40;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void linearGradientFill(Region region) {
+//        region.setStyle("-fx-background-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    // Test this to make sure the gradient is relative to the shape and not the position
+//    // of the shape in the region
+//    public void linearGradientFill_NotScaled(Region region) {
+//        region.setStyle("-fx-background-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    // Test this to make sure the gradient is relative to the shape and not the position
+//    // of the shape in the region
+//    public void linearGradientFill_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-background-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void imageFill(Region region) {
+//        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void imageFill_NotScaled(Region region) {
+//        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void imageFill_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void imageFill_cover(Region region) {
+//        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
+//                        "-fx-background-size: cover;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void imageFill_cover_NotScaled(Region region) {
+//        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
+//                        "-fx-background-size: cover;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void imageFill_cover_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
+//                        "-fx-background-size: cover;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void multipleFills(Region region) {
+//        region.setStyle("-fx-background-color: red, repeating-image-pattern('region/test20x20.png'), blue;" +
+//                        "-fx-background-insets: 0, 20, 40;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void multipleFills_NotScaled(Region region) {
+//        region.setStyle("-fx-background-color: red, repeating-image-pattern('region/test20x20.png'), blue;" +
+//                        "-fx-background-insets: 0, 20, 40;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void multipleFills_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-background-color: red, repeating-image-pattern('region/test20x20.png'), blue;" +
+//                        "-fx-background-insets: 0, 20, 40;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    /**************************************************************************
+//     *                                                                        *
+//     * Tests for strokes.                                                     *
+//     *                                                                        *
+//     *************************************************************************/
+//
+//    public void solidStroke(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidStroke_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidStroke_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    // TODO These should work, but presently the parser doesn't support thin, medium, and thick, I think.
+////    public void solidStroke_Thin(Region region) {
+////        region.setStyle("-fx-border-style: solid;" +
+////                        "-fx-background-color: lightgray;" +
+////                        "-fx-border-color: red;" +
+////                        "-fx-border-width: thin;" +
+////                        "-fx-shape: " + ARROW + ";");
+////    }
+////
+////    public void solidStroke_Thin_NotScaled(Region region) {
+////        region.setStyle("-fx-border-style: solid;" +
+////                        "-fx-background-color: lightgray;" +
+////                        "-fx-border-color: red;" +
+////                        "-fx-border-width: thin;" +
+////                        "-fx-scale-shape: false;" +
+////                        "-fx-shape: " + ARROW + ";");
+////    }
+////
+////    public void solidStroke_Thin_NotScaledAndNotCentered(Region region) {
+////        region.setStyle("-fx-border-style: solid;" +
+////                        "-fx-background-color: lightgray;" +
+////                        "-fx-border-color: red;" +
+////                        "-fx-border-width: thin;" +
+////                        "-fx-position-shape: false;" +
+////                        "-fx-scale-shape: false;" +
+////                        "-fx-shape: " + ARROW + ";");
+////    }
+////
+////    public void solidStroke_Medium(Region region) {
+////        region.setStyle("-fx-border-style: solid;" +
+////                        "-fx-background-color: lightgray;" +
+////                        "-fx-border-color: red;" +
+////                        "-fx-border-width: medium;" +
+////                        "-fx-shape: " + ARROW + ";");
+////    }
+////
+////    public void solidStroke_Medium_NotScaled(Region region) {
+////        region.setStyle("-fx-border-style: solid;" +
+////                        "-fx-background-color: lightgray;" +
+////                        "-fx-border-color: red;" +
+////                        "-fx-border-width: medium;" +
+////                        "-fx-scale-shape: false;" +
+////                        "-fx-shape: " + ARROW + ";");
+////    }
+////
+////    public void solidStroke_Medium_NotScaledAndNotCentered(Region region) {
+////        region.setStyle("-fx-border-style: solid;" +
+////                        "-fx-background-color: lightgray;" +
+////                        "-fx-border-color: red;" +
+////                        "-fx-border-width: medium;" +
+////                        "-fx-position-shape: false;" +
+////                        "-fx-scale-shape: false;" +
+////                        "-fx-shape: " + ARROW + ";");
+////    }
+////
+////    public void solidStroke_Thick(Region region) {
+////        region.setStyle("-fx-border-style: solid;" +
+////                        "-fx-background-color: lightgray;" +
+////                        "-fx-border-color: red;" +
+////                        "-fx-border-width: thick;" +
+////                        "-fx-shape: " + ARROW + ";");
+////    }
+////
+////    public void solidStroke_Thick_NotScaled(Region region) {
+////        region.setStyle("-fx-border-style: solid;" +
+////                        "-fx-background-color: lightgray;" +
+////                        "-fx-border-color: red;" +
+////                        "-fx-border-width: thick;" +
+////                        "-fx-scale-shape: false;" +
+////                        "-fx-shape: " + ARROW + ";");
+////    }
+////
+////    public void solidStroke_Thick_NotScaledAndNotCentered(Region region) {
+////        region.setStyle("-fx-border-style: solid;" +
+////                        "-fx-background-color: lightgray;" +
+////                        "-fx-border-color: red;" +
+////                        "-fx-border-width: thick;" +
+////                        "-fx-position-shape: false;" +
+////                        "-fx-scale-shape: false;" +
+////                        "-fx-shape: " + ARROW + ";");
+////    }
+//
+//    public void solidStroke_1(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 1;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidStroke_1_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 1;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidStroke_1_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 1;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidStroke_3(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 3;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidStroke_3_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 3;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidStroke_3_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 3;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidStroke_5(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidStroke_5_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidStroke_5_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidTranslucentStroke_5(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: rgba(255, 0, 0, .3);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidTranslucentStroke_5_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: rgba(255, 0, 0, .3);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidTranslucentStroke_5_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: rgba(255, 0, 0, .3);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidLinearGradientStroke_5(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidLinearGradientStroke_5_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidLinearGradientStroke_5_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidImageStroke_5(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidImageStroke_5_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void solidImageStroke_5_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: solid;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedStroke_1(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 1;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedStroke_1_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 1;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedStroke_1_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 1;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedStroke_3(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 3;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedStroke_3_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 3;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedStroke_3_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 3;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedStroke_5(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedStroke_5_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedStroke_5_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedTranslucentStroke_5(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: rgba(255, 0, 0, .3);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedTranslucentStroke_5_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: rgba(255, 0, 0, .3);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedTranslucentStroke_5_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: rgba(255, 0, 0, .3);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedLinearGradientStroke_5(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedLinearGradientStroke_5_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedLinearGradientStroke_5_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedImageStroke_5(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedImageStroke_5_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dashedImageStroke_5_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: dashed;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedStroke_1(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 1;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedStroke_1_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 1;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedStroke_1_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 1;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedStroke_3(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 3;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedStroke_3_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 3;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedStroke_3_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 3;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedStroke_5(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedStroke_5_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedStroke_5_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: red;" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedTranslucentStroke_5(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: rgba(255, 0, 0, .3);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedTranslucentStroke_5_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: rgba(255, 0, 0, .3);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedTranslucentStroke_5_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: rgba(255, 0, 0, .3);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedLinearGradientStroke_5(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedLinearGradientStroke_5_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedLinearGradientStroke_5_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: linear-gradient(to bottom, red 0%, blue 100%);" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedImageStroke_5(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedImageStroke_5_NotScaled(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    public void dottedImageStroke_5_NotScaledAndNotCentered(Region region) {
+//        region.setStyle("-fx-border-style: dotted;" +
+//                        "-fx-background-color: lightgray;" +
+//                        "-fx-border-color: repeating-image-pattern('region/test20x20.png');" +
+//                        "-fx-border-width: 5;" +
+//                        "-fx-position-shape: false;" +
+//                        "-fx-scale-shape: false;" +
+//                        "-fx-shape: " + ARROW + ";");
+//    }
+//
+//    // TODO need to do more complete testing which includes the full range of available
+//    // properties for a border stroke
+////    public void shape_arrow_stroke(Region region) {
+////        region.setStyle("-fx-border-style: solid;" +
+////                        "-fx-background-color: grey;" +
+////                        "-fx-border-color: rgba(255, 0, 0, .2);" +
+////                        "-fx-border-width: 5;" +
+////                        "-fx-shape: " + ARROW + ";");
+////    }
+//
+//    /**************************************************************************
+//     *                                                                        *
+//     * Tests for parameters to background fills, background images,           *
+//     * border strokes, and border images that should be ignored by the        *
+//     * region when drawing a shape, and have no effect whatsoever.            *
+//     *                                                                        *
+//     *************************************************************************/
+//
+//    // This is a test case that should have no effect
+////    public void shape_arrow_imageFill_repeatX(Region region) {
+////        region.setStyle("-fx-background-image: url('region/test20x20.png');" +
+////                        "-fx-background-repeat: repeat-x;" +
+////                        "-fx-shape: " + ARROW + ";");
+////    }
+//
+////    public void shape_arrow_RadiusIgnored(Region region) {
+////        region.setStyle("-fx-background-color: red;" +
+////                        "-fx-background-radius: 300;" +
+////                        "-fx-shape: " + ARROW + ";");
+////    }
+//
+//    /**************************************************************************
+//     *                                                                        *
+//     * Shapes that are larger than the region, or defined outside the bounds  *
+//     * of the region.                                                         *
+//     *                                                                        *
+//     *************************************************************************/
+//
+//    public void shapeLargerThanRegion_Centered(Region region) {
+//        region.setStyle(
+//                "-fx-border-color:blue;" +
+//                "-fx-shape:'M 0 0 L 400 0 L 200 400 Z';" +
+//                "-fx-scale-shape: false;" +
+//                "-fx-background-color: red;");
+//    }
+//
+//    public void shapeLargerThanRegion_Scaled(Region region) {
+//        region.setStyle(
+//                "-fx-border-color:blue;" +
+//                "-fx-shape:'M 0 0 L 400 0 L 200 400 Z';" +
+//                "-fx-position-shape: false;" +
+//                "-fx-background-color: red;");
+//    }
+//
+//    public void shapeDefinedOutsideRegion_Centered(Region region) {
+//        region.setStyle(
+//                "-fx-border-color:blue;" +
+//                "-fx-shape:'M 400 400 L 450 400 L 425 450 Z';" +
+//                "-fx-scale-shape: false;" +
+//                "-fx-background-color: red;");
+//    }
+//
+//    public void shapeDefinedOutsideRegion_ScaledCentered(Region region) {
+//        region.setStyle(
+//                "-fx-border-color:blue;" +
+//                "-fx-shape:'M 400 400 L 450 400 L 425 450 Z';" +
+//                "-fx-background-color: red;");
+//    }
+//
+//    public void shapeDefinedOutsideRegion_Centered_Negative(Region region) {
+//        region.setStyle(
+//                "-fx-border-color:blue;" +
+//                "-fx-shape:'M -400 -400 L -350 -400 L -375 -350 Z';" +
+//                "-fx-scale-shape: false;" +
+//                "-fx-background-color: red;");
+//    }
+//
+//    public void shapeDefinedOutsideRegion_ScaledCentered_Negative(Region region) {
+//        region.setStyle(
+//                "-fx-border-color:blue;" +
+//                "-fx-shape:'M -400 -400 L -350 -400 L -375 -350 Z';" +
+//                "-fx-background-color: red;");
+//    }
+//
+//    public void shapeDefinedOutsideRegion_Centered_Insets(Region region) {
+//        region.setStyle(
+//                "-fx-border-color:blue;" +
+//                "-fx-shape:'M 400 400 L 450 400 L 425 450 Z';" +
+//                "-fx-scale-shape: false;" +
+//                "-fx-background-color: red;" +
+//                "-fx-background-insets: 10");
+//    }
+//
+//    public void shapeDefinedOutsideRegion_Centered_Outsets(Region region) {
+//        region.setStyle(
+//                "-fx-border-color:blue;" +
+//                "-fx-shape:'M 400 400 L 450 400 L 425 450 Z';" +
+//                "-fx-scale-shape: false;" +
+//                "-fx-background-color: red;" +
+//                "-fx-background-insets: -10");
+//    }
+//
+//    public void shapeNotCenteredOrScaled_Insets(Region region) {
+//        region.setStyle(
+//                "-fx-border-color:blue;" +
+//                "-fx-shape:'M 100 -50 L 200 -50 L 150 100 Z';" +
+//                "-fx-scale-shape: false;" +
+//                "-fx-position-shape: false;" +
+//                "-fx-background-color: red;" +
+//                "-fx-background-insets: 10");
+//    }
+//
+//    /**************************************************************************
+//     *                                                                        *
+//     * Tests for edge conditions                                              *
+//     *                                                                        *
+//     *************************************************************************/
+//
+    // TODO Need to write a test for what the rendering is like for an Image that hasn't finished loading yet.
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/system/src/test/java/javafx/scene/layout/RegionUITestBase.java	Mon Oct 07 16:25:34 2013 -0700
@@ -0,0 +1,393 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package javafx.scene.layout;
+
+import javafx.scene.Group;
+import javafx.scene.Scene;
+import javafx.scene.paint.Color;
+import javafx.scene.paint.Paint;
+import javafx.stage.Stage;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicReference;
+import testharness.VisualTestBase;
+
+/**
+ */
+public abstract class RegionUITestBase extends VisualTestBase {
+    static final int WIDTH = 400;
+    static final int HEIGHT = 300;
+    static final int REGION_TOP = 50;
+    static final int REGION_LEFT = 50;
+    static final int REGION_RIGHT = 350;
+    static final int REGION_BOTTOM = 250;
+    static final int REGION_WIDTH = 300;
+    static final int REGION_HEIGHT = 200;
+    static final Color SCENE_FILL = Color.WHITE;
+
+    protected Stage stage;
+    protected Scene scene;
+    protected Group root;
+    protected Region region;
+
+    @Override
+    public void doSetup() {
+        super.doSetup();
+        runAndWait(new Runnable() {
+            @Override public void run() {
+                stage = getStage();
+                region = new Region();
+                region.setPrefSize(REGION_WIDTH, REGION_HEIGHT);
+                region.relocate(REGION_LEFT, REGION_TOP);
+                scene = new Scene(root = new Group(region), WIDTH, HEIGHT);
+                scene.setFill(SCENE_FILL);
+                stage.setScene(scene);
+                stage.show();
+            }
+        });
+    }
+
+    protected void setStyle(final String style) {
+        runAndWait(new Runnable() {
+            @Override public void run() {
+                region.setStyle(style);
+            }
+        });
+        waitFirstFrame();
+    }
+
+    static final double TOLERANCE = 0.07;
+
+    protected void assertColorEquals(Color expected, int x, int y, double tolerance) {
+        Color actual = getColor(x, y);
+        try {
+            assertColorEquals(expected, actual, tolerance);
+        } catch (AssertionError error) {
+            throw new AssertionError(error.getMessage() + " at position x=" + x + ", y=" + y);
+        }
+    }
+
+    protected void assertColorDoesNotEqual(Color notExpected, int x, int y, double tolerance) {
+        Color actual = getColor(x, y);
+        assertColorDoesNotEqual(notExpected, actual, tolerance);
+    }
+
+    private Color getColor(int x, int y) {
+        AtomicReference<Color> color = new AtomicReference<>();
+        runAndWait(new Runnable() {
+            @Override
+            public void run() {
+                color.set(getColor(scene, x, y));
+            }
+        });
+        return color.get();
+    }
+
+    /**
+     * Using the information available in Background and Border for the region,
+     * this method will check that the scene color is used for those places that
+     * are outside the region boundary (including the empty part of a rounded corner)
+     * and that the expected color is used for the interior of the region. If the
+     * given expected color is null, then this test will just make sure that
+     * the color IS NOT the scene background. For example, when doing a gradient fill
+     * or image fill it might not be possible to really know the expected color, but
+     * at least we can make sure we're not seeing the scene background color.
+     */
+    protected void checkRegionCornersAndBoundariesForFills() {
+        Background background = region.getBackground();
+        Border border = region.getBorder();
+        if (border != null) {
+            throw new AssertionError("No implementation of this method for borders yet");
+        }
+
+        if (region.getShape() != null) {
+            throw new AssertionError("No implementation of this method for regions with a shape yet");
+        }
+
+        Paint lastFill = SCENE_FILL;
+        for (BackgroundFill fill : background.getFills()) {
+            checkRegionCornersAndBoundariesOfBackgroundFill(fill, lastFill);
+            lastFill = fill.getFill();
+        }
+    }
+
+    protected void checkRegionLeftBoundary(BackgroundFill fill, Paint outsideFill) {
+        checkRegionLeftBoundary(fill, fill.getFill(), outsideFill);
+    }
+
+    protected void checkRegionLeftBoundary(BackgroundFill fill, Paint insideFill, Paint outsideFill) {
+        checkRegionLeftBoundary(fill, insideFill, outsideFill, 1, TOLERANCE);
+    }
+
+    protected void checkRegionLeftBoundary(BackgroundFill fill, Paint insideFill, Paint outsideFill, int distance, double tolerance) {
+        checkRegionLeftBoundary(fill.getInsets().getLeft(), insideFill, outsideFill, distance, tolerance);
+    }
+
+    protected void checkRegionLeftBoundary(Paint outsideFill) {
+        checkRegionLeftBoundary(0, null, outsideFill, 1, TOLERANCE);
+    }
+
+    protected void checkRegionLeftBoundary(double leftInset, Paint insideFill, Paint outsideFill, int distance, double tolerance) {
+        List<TestParameters> params = new ArrayList<>();
+        final int x1 = (int) (region.getLayoutX() + leftInset);
+        final int midY = HEIGHT / 2;
+        params.add(new TestParameters(outsideFill, insideFill, x1 - 1 - distance, midY, tolerance)); // left outside
+        params.add(new TestParameters(insideFill, outsideFill, x1 + distance, midY, tolerance)); // left inside
+        runTests(params);
+    }
+
+    protected void checkRegionTopBoundary(BackgroundFill fill, Paint outsideFill) {
+        checkRegionTopBoundary(fill, fill.getFill(), outsideFill);
+    }
+
+    protected void checkRegionTopBoundary(BackgroundFill fill, Paint insideFill, Paint outsideFill) {
+        checkRegionTopBoundary(fill, insideFill, outsideFill, 1, TOLERANCE);
+    }
+
+    protected void checkRegionTopBoundary(BackgroundFill fill, Paint insideFill, Paint outsideFill, int distance, double tolerance) {
+        double outermostTop = fill.getInsets().getTop();
+        checkRegionTopBoundary(outermostTop, insideFill, outsideFill, distance, tolerance);
+    }
+
+    protected void checkRegionTopBoundary(Paint outsideFill) {
+        checkRegionTopBoundary(0, null, outsideFill, 1, TOLERANCE);
+    }
+
+    protected void checkRegionTopBoundary(double topInset, Paint insideFill, Paint outsideFill, int distance, double tolerance) {
+        List<TestParameters> params = new LinkedList<>();
+        final int y1 = (int) (region.getLayoutY() + topInset);
+        final int midX = WIDTH / 2;
+        params.add(new TestParameters(outsideFill, insideFill, midX, y1 - 1 - distance, tolerance)); // top outside
+        params.add(new TestParameters(insideFill, outsideFill, midX, y1 + distance, tolerance)); // top inside
+        runTests(params);
+    }
+
+    protected void checkRegionRightBoundary(BackgroundFill fill, Paint outsideFill) {
+        checkRegionRightBoundary(fill, fill.getFill(), outsideFill);
+    }
+
+    protected void checkRegionRightBoundary(BackgroundFill fill, Paint insideFill, Paint outsideFill) {
+        checkRegionRightBoundary(fill, insideFill, outsideFill, 1, TOLERANCE);
+    }
+
+    protected void checkRegionRightBoundary(BackgroundFill fill, Paint insideFill, Paint outsideFill, int distance, double tolerance) {
+        double outermostRight = fill.getInsets().getRight();
+        checkRegionRightBoundary(outermostRight, insideFill, outsideFill, distance, tolerance);
+    }
+
+    protected void checkRegionRightBoundary(Paint outsideFill) {
+        checkRegionRightBoundary(0, null, outsideFill, 1, TOLERANCE);
+    }
+
+    protected void checkRegionRightBoundary(double rightInset, Paint insideFill, Paint outsideFill, int distance, double tolerance) {
+        List<TestParameters> params = new LinkedList<>();
+        final int x2 = (int) Math.ceil(region.getLayoutX() + region.getWidth() - rightInset);
+        final int midY = HEIGHT / 2;
+        params.add(new TestParameters(outsideFill, insideFill, x2 + distance, midY, tolerance)); // right outside
+        params.add(new TestParameters(insideFill, outsideFill, x2 - 1 - distance, midY, tolerance)); // right inside
+        runTests(params);
+    }
+
+    protected void checkRegionBottomBoundary(BackgroundFill fill, Paint outsideFill) {
+        checkRegionBottomBoundary(fill, fill.getFill(), outsideFill);
+    }
+
+    protected void checkRegionBottomBoundary(BackgroundFill fill, Paint insideFill, Paint outsideFill) {
+        checkRegionBottomBoundary(fill, insideFill, outsideFill, 1, TOLERANCE);
+    }
+
+    protected void checkRegionBottomBoundary(BackgroundFill fill, Paint insideFill, Paint outsideFill, int distance, double tolerance) {
+        double outermostBottom = fill.getInsets().getBottom();
+        checkRegionBottomBoundary(outermostBottom, insideFill, outsideFill, distance, tolerance);
+    }
+
+    protected void checkRegionBottomBoundary(Paint outsideFill) {
+        checkRegionBottomBoundary(0, null, outsideFill, 0, TOLERANCE);
+    }
+
+    protected void checkRegionBottomBoundary(double bottomInset, Paint insideFill, Paint outsideFill, int distance, double tolerance) {
+        List<TestParameters> params = new LinkedList<>();
+        final int y2 = (int) Math.ceil(region.getLayoutY() + region.getHeight() - bottomInset);
+        final int midX = WIDTH / 2;
+        params.add(new TestParameters(outsideFill, insideFill, midX, y2 + distance, tolerance)); // bottom outside
+        params.add(new TestParameters(insideFill, outsideFill, midX, y2 - 1 - distance, tolerance)); // bottom inside
+        runTests(params);
+    }
+
+    // .5 * 1/Math.sqrt(2). If you multiply this value by the diameter of the
+    // circle, then you will get half the length of the side of the square which
+    // is inscribed within the circle. This will tell me the point of the arc where
+    // I want to do my testing.
+    static final float HALF_SQRT_HALF = .35355339059327f;
+
+    protected void checkRegionTopLeftCorner(BackgroundFill fill, Paint outsideFill) {
+        checkRegionTopLeftCorner(fill, fill.getFill(), outsideFill);
+    }
+
+    protected void checkRegionTopLeftCorner(BackgroundFill fill, Paint insideFill, Paint outsideFill) {
+        checkRegionTopLeftCorner(fill, insideFill, outsideFill, 1, TOLERANCE);
+    }
+
+    protected void checkRegionTopLeftCorner(BackgroundFill fill, Paint insideFill, Paint outsideFill, int distance, double tolerance) {
+        List<TestParameters> params = new LinkedList<>();
+
+        // Now check the corners of each side. Each corner is a quarter-ellipse. What needs to be done is,
+        // for each background fill, figure out the x,y that constitutes the center of the arc (45 degrees)
+        // and then, for each point, find the one that is closest to the corner of the window. That point
+        // will be the one that constitutes the edge of the arc, and we can then test just outside that point
+        // and just inside that point.
+
+        final CornerRadii radii = fill.getRadii();
+        double hr = radii.getTopLeftHorizontalRadius();
+        double h = radii.isTopLeftHorizontalRadiusAsPercentage() ? hr * region.getWidth() : hr;
+        double vr = radii.getTopLeftVerticalRadius();
+        double v = radii.isTopLeftVerticalRadiusAsPercentage() ? vr * region.getHeight() : vr;
+        double topLeftX = region.getLayoutX() + (fill.getInsets().getLeft() + (h - h * 2 * HALF_SQRT_HALF));
+        double topLeftY = region.getLayoutY() + (fill.getInsets().getTop() + (v - v * 2 * HALF_SQRT_HALF));
+        params.add(new TestParameters(outsideFill, insideFill, (int) topLeftX - 1 - distance, (int) topLeftY - 1 - distance, tolerance)); // outside
+        params.add(new TestParameters(insideFill, outsideFill, (int) topLeftX + distance, (int) topLeftY + distance, tolerance)); // inside
+        runTests(params);
+    }
+
+    protected void checkRegionTopRightCorner(BackgroundFill fill, Paint outsideFill) {
+        checkRegionTopRightCorner(fill, fill.getFill(), outsideFill);
+    }
+
+    protected void checkRegionTopRightCorner(BackgroundFill fill, Paint insideFill, Paint outsideFill) {
+        checkRegionTopRightCorner(fill, insideFill, outsideFill, 1, TOLERANCE);
+    }
+
+    protected void checkRegionTopRightCorner(BackgroundFill fill, Paint insideFill, Paint outsideFill, int distance, double tolerance) {
+        List<TestParameters> params = new LinkedList<>();
+        final CornerRadii radii = fill.getRadii();
+        double hr = radii.getTopRightHorizontalRadius();
+        double h = radii.isTopRightHorizontalRadiusAsPercentage() ? hr * region.getWidth() : hr;
+        double vr = radii.getTopRightVerticalRadius();
+        double v = radii.isTopRightVerticalRadiusAsPercentage() ? vr * region.getHeight() : vr;
+        double topRightX = region.getLayoutX() + region.getWidth() - (fill.getInsets().getRight() + (h - h * 2 * HALF_SQRT_HALF));
+        double topRightY = region.getLayoutY() + (fill.getInsets().getTop() + (v - v * 2 * HALF_SQRT_HALF));
+        params.add(new TestParameters(outsideFill, insideFill, (int) Math.ceil(topRightX + distance), (int) topRightY - 1 - distance, tolerance)); // outside
+        params.add(new TestParameters(insideFill, outsideFill, (int) Math.ceil(topRightX - distance) - 1, (int) topRightY + distance, tolerance)); // inside
+        runTests(params);
+    }
+
+    protected void checkRegionBottomRightCorner(BackgroundFill fill, Paint outsideFill) {
+        checkRegionBottomRightCorner(fill, fill.getFill(), outsideFill);
+    }
+
+    protected void checkRegionBottomRightCorner(BackgroundFill fill, Paint insideFill, Paint outsideFill) {
+        checkRegionBottomRightCorner(fill, insideFill, outsideFill, 1, TOLERANCE);
+    }
+
+    protected void checkRegionBottomRightCorner(BackgroundFill fill, Paint insideFill, Paint outsideFill, int distance, double tolerance) {
+        List<TestParameters> params = new LinkedList<>();
+        final CornerRadii radii = fill.getRadii();
+        double hr = radii.getBottomRightHorizontalRadius();
+        double h = radii.isBottomRightHorizontalRadiusAsPercentage() ? hr * region.getWidth() : hr;
+        double vr = radii.getBottomRightVerticalRadius();
+        double v = radii.isBottomRightVerticalRadiusAsPercentage() ? vr * region.getHeight() : vr;
+        double bottomRightX = region.getLayoutX() + region.getWidth() - (fill.getInsets().getRight() + (h - h * 2 * HALF_SQRT_HALF));
+        double bottomRightY = region.getLayoutY() + region.getHeight() - (fill.getInsets().getBottom() + (v - v * 2 * HALF_SQRT_HALF));
+        params.add(new TestParameters(outsideFill, insideFill, (int) Math.ceil(bottomRightX + distance), (int) Math.ceil(bottomRightY + distance), tolerance)); // outside
+        params.add(new TestParameters(insideFill, outsideFill, (int) Math.ceil(bottomRightX - distance) - 1, (int) Math.ceil(bottomRightY - distance) - 1, tolerance)); // inside
+        runTests(params);
+    }
+
+    protected void checkRegionBottomLeftCorner(BackgroundFill fill, Paint outsideFill) {
+        checkRegionBottomLeftCorner(fill, fill.getFill(), outsideFill);
+    }
+
+    protected void checkRegionBottomLeftCorner(BackgroundFill fill, Paint insideFill, Paint outsideFill) {
+        checkRegionBottomLeftCorner(fill, insideFill, outsideFill, 1, TOLERANCE);
+    }
+
+    protected void checkRegionBottomLeftCorner(BackgroundFill fill, Paint insideFill, Paint outsideFill, int distance, double tolerance) {
+        List<TestParameters> params = new LinkedList<>();
+        final CornerRadii radii = fill.getRadii();
+        double hr = radii.getBottomLeftHorizontalRadius();
+        double h = radii.isBottomLeftHorizontalRadiusAsPercentage() ? hr * region.getWidth() : hr;
+        double vr = radii.getBottomLeftVerticalRadius();
+        double v = radii.isBottomLeftVerticalRadiusAsPercentage() ? vr * region.getHeight() : vr;
+        double bottomLeftX = region.getLayoutX() + (fill.getInsets().getLeft() + (h - h * 2 * HALF_SQRT_HALF));
+        double bottomLeftY = region.getLayoutY() + region.getHeight() - (fill.getInsets().getBottom() + (v - v * 2 * HALF_SQRT_HALF));
+        params.add(new TestParameters(outsideFill, insideFill, (int) bottomLeftX - 1 - distance, (int) Math.ceil(bottomLeftY + distance), tolerance)); // outside
+        params.add(new TestParameters(insideFill, outsideFill, (int) bottomLeftX + distance, (int) Math.ceil(bottomLeftY - 1 - distance), tolerance)); // inside
+        runTests(params);
+    }
+
+    protected void checkRegionCornersAndBoundariesOfBackgroundFill(BackgroundFill fill, Paint outsideFill) {
+        checkRegionCornersAndBoundariesOfBackgroundFill(fill, fill.getFill(), outsideFill);
+    }
+
+    protected void checkRegionCornersAndBoundariesOfBackgroundFill(BackgroundFill fill, Paint insideFill, Paint lastFill) {
+        checkRegionCornersAndBoundariesOfBackgroundFill(fill, insideFill, lastFill, 1, TOLERANCE);
+    }
+
+    protected void checkRegionCornersAndBoundariesOfBackgroundFill(BackgroundFill fill, Paint insideFill, Paint lastFill, int distance, double tolerance) {
+        checkRegionLeftBoundary(fill, insideFill, lastFill, distance, tolerance);
+        checkRegionTopLeftCorner(fill, insideFill, lastFill, distance, tolerance);
+        checkRegionTopBoundary(fill, insideFill, lastFill, distance, tolerance);
+        checkRegionTopRightCorner(fill, insideFill, lastFill, distance, tolerance);
+        checkRegionRightBoundary(fill, insideFill, lastFill, distance, tolerance);
+        checkRegionBottomRightCorner(fill, insideFill, lastFill, distance, tolerance);
+        checkRegionBottomBoundary(fill, insideFill, lastFill, distance, tolerance);
+        checkRegionBottomLeftCorner(fill, insideFill, lastFill, distance, tolerance);
+    }
+
+    private void runTests(List<TestParameters> params) {
+        for (TestParameters p : params) {
+            boolean exactMatch = p.expected instanceof Color;
+            if (exactMatch) {
+                assertColorEquals((Color) p.expected, p.x, p.y, p.tolerance);
+            } else {
+                if (!(p.notExpected instanceof Color) ||
+                        p.expected == p.notExpected ||
+                        (p.expected != null && p.expected.equals(p.notExpected))) {
+                    // I won't be able to distinguish, so just have to skip
+                    System.err.println("WARNING: Had to skip RegionUITest case because there was not an easy " +
+                            "way to distinguish pass vs. fail");
+                    continue;
+                }
+                assertColorDoesNotEqual((Color) p.notExpected, p.x, p.y, p.tolerance);
+            }
+        }
+    }
+
+    private static final class TestParameters {
+        Paint expected;
+        Paint notExpected;
+        int x, y;
+        double tolerance;
+
+        TestParameters(Paint expected, Paint notExpected, int x, int y, double tolerance) {
+            this.expected = expected;
+            this.notExpected = notExpected;
+            this.x = x;
+            this.y = y;
+            this.tolerance = tolerance;
+        }
+    }
+}
--- a/tests/system/src/test/java/testharness/VisualTestBase.java	Mon Oct 07 16:23:57 2013 -0700
+++ b/tests/system/src/test/java/testharness/VisualTestBase.java	Mon Oct 07 16:25:34 2013 -0700
@@ -24,25 +24,26 @@
  */
 package testharness;
 
-import com.sun.glass.ui.Robot;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
 import javafx.animation.AnimationTimer;
 import javafx.application.Application;
 import javafx.application.Platform;
 import javafx.scene.Scene;
 import javafx.scene.paint.Color;
 import javafx.stage.Stage;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import com.sun.glass.ui.Robot;
 import junit.framework.AssertionFailedError;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import util.Util;
-
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 import static util.Util.TIMEOUT;
 
 /**
@@ -183,6 +184,18 @@
                     + " but was:" + colorToString(actual));
         }
     }
+
+    protected void assertColorDoesNotEqual(Color notExpected, Color actual, double delta) {
+        double deltaRed = Math.abs(notExpected.getRed() - actual.getRed());
+        double deltaGreen = Math.abs(notExpected.getGreen() - actual.getGreen());
+        double deltaBlue = Math.abs(notExpected.getBlue() - actual.getBlue());
+        double deltaOpacity = Math.abs(notExpected.getOpacity() - actual.getOpacity());
+        if (deltaRed < delta && deltaGreen < delta && deltaBlue < delta && deltaOpacity < delta) {
+            throw new AssertionFailedError("not expected:" + colorToString(notExpected)
+                    + " but was:" + colorToString(actual));
+        }
+    }
+
     private AnimationTimer timer;
 
     private void frameWait(int n) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/system/src/test/resources/javafx/scene/layout/RegionBackgroundImageUITest.html	Mon Oct 07 16:25:34 2013 -0700
@@ -0,0 +1,69 @@
+<html>
+<body>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-x;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-y;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: space space;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: round;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: round space;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: 50%;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: left center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: right center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: center top;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: center bottom;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: right bottom;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-x; background-position: center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-x; background-position: 50%;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-x; background-position: left center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-x; background-position: right center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-x; background-position: center top;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-x; background-position: center bottom;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-x; background-position: right bottom;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-y; background-position: center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-y; background-position: 50%;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-y; background-position: left center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-y; background-position: right center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-y; background-position: center top;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-y; background-position: center bottom;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: repeat-y; background-position: right bottom;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: left 25% center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: right 25% center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-size: cover;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-size: contain;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test20x20.png'); width:300px; height:200px;  background-size: contain; background-repeat: no-repeat;"></div><div style="height:10px;"></div>
+
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-x;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-y;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: space space;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: round;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: round space;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: 50%;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: left center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: right center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: center top;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: center bottom;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: right bottom;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-x; background-position: center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-x; background-position: 50%;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-x; background-position: left center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-x; background-position: right center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-x; background-position: center top;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-x; background-position: center bottom;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-x; background-position: right bottom;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-y; background-position: center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-y; background-position: 50%;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-y; background-position: left center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-y; background-position: right center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-y; background-position: center top;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-y; background-position: center bottom;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: repeat-y; background-position: right bottom;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: left 25% center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-repeat: no-repeat; background-position: right 25% center;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-size: cover;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-size: contain;"></div><div style="height:10px;"></div>
+    <div style="background-color: black; background-image: url('test48x48.png'); width:300px; height:200px;  background-size: contain; background-repeat: no-repeat;"></div><div style="height:10px;"></div>
+</body>
+</html>
Binary file tests/system/src/test/resources/javafx/scene/layout/border-stretch.png has changed
Binary file tests/system/src/test/resources/javafx/scene/layout/border-uneven.png has changed
Binary file tests/system/src/test/resources/javafx/scene/layout/border.png has changed
Binary file tests/system/src/test/resources/javafx/scene/layout/test20x20.png has changed
Binary file tests/system/src/test/resources/javafx/scene/layout/test20x20@2x.png has changed
Binary file tests/system/src/test/resources/javafx/scene/layout/test48x48.png has changed
Binary file tests/system/src/test/resources/javafx/scene/layout/test48x48@2x.png has changed