1 /* 2 * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package test.javafx.scene.layout; 27 28 import test.com.sun.javafx.pgstub.StubImageLoaderFactory; 29 import test.com.sun.javafx.pgstub.StubPlatformImageInfo; 30 import test.com.sun.javafx.pgstub.StubToolkit; 31 import com.sun.javafx.tk.Toolkit; 32 import javafx.geometry.Insets; 33 import javafx.geometry.Side; 34 import javafx.scene.Scene; 35 import javafx.scene.paint.Color; 36 import org.junit.Before; 37 import org.junit.Ignore; 38 import org.junit.Test; 39 40 import java.net.MalformedURLException; 41 import java.net.URI; 42 import java.net.URISyntaxException; 43 import java.net.URL; 44 import javafx.scene.layout.BackgroundFill; 45 import javafx.scene.layout.BackgroundImage; 46 import javafx.scene.layout.BackgroundPosition; 47 import javafx.scene.layout.BackgroundRepeat; 48 import javafx.scene.layout.BackgroundSize; 49 import javafx.scene.layout.BorderImage; 50 import javafx.scene.layout.BorderRepeat; 51 import javafx.scene.layout.BorderStroke; 52 import javafx.scene.layout.BorderStrokeStyle; 53 import javafx.scene.layout.BorderWidths; 54 import javafx.scene.layout.CornerRadii; 55 import javafx.scene.layout.Region; 56 57 import static javafx.scene.layout.BackgroundSize.*; 58 import static org.junit.Assert.*; 59 60 /** 61 * All of these tests are based on information contained in the CSS 3 borders 62 * and backgrounds specification: http://www.w3.org/TR/css3-background/ 63 * 64 * The "Example" tests are pulled directly from one of the examples in the 65 * spec, and is numbered such as example1_3, meaning "Example 1" in the spec 66 * which is a box with multiple declarations, so declaration 3 (or whatnot). 67 */ 68 public class RegionCSSTest { 69 // The color is drawn behind any background images. 70 // The background color is clipped according to the ???background-clip??? value associated with the bottom-most background image. 71 // Background images are drawn such that the first specified is on "top", closer to the user. But our BackgroundFill's are completely backwards from that! 72 73 // Test "none" in terms of supplying an insets to the first and third but not specifying the second? 74 // Failures to load images should result in "none" equivalence, not in exceptions 75 // 76 private Region region; 77 private Scene scene; 78 private static final String NL = System.getProperty("line.separator"); 79 80 private void processCSS() { 81 scene.getRoot().applyCss(); 82 } 83 84 private static void installImage(final String str) { 85 86 if (str == null || str.trim().isEmpty()) return; 87 88 URL imageUrl = null; 89 90 try { 91 92 URI uri = new URI(str.trim()); 93 94 // if url doesn't have a scheme 95 if (uri.isAbsolute() == false) { 96 97 final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); 98 final String path = uri.getPath(); 99 100 URL resource = null; 101 102 if (path.startsWith("/")) { 103 resource = contextClassLoader.getResource(path.substring(1)); 104 } else { 105 resource = contextClassLoader.getResource(path); 106 } 107 108 imageUrl = resource; 109 110 } else { 111 // else, url does have a scheme 112 imageUrl = uri.toURL(); 113 } 114 115 } catch (MalformedURLException malf) { 116 117 } catch (URISyntaxException urise) { 118 } 119 120 if (imageUrl != null) { 121 122 StubImageLoaderFactory imageLoaderFactory = 123 ((StubToolkit) Toolkit.getToolkit()).getImageLoaderFactory(); 124 125 imageLoaderFactory.registerImage( 126 imageUrl.toExternalForm(), new StubPlatformImageInfo(100, 100)); 127 } 128 129 } 130 131 @Before public void setUp() { 132 region = new Region(); 133 scene = new Scene(region); 134 135 installImage("test/javafx/scene/layout/red.png"); 136 installImage("test/javafx/scene/layout/green.png"); 137 installImage("test/javafx/scene/layout/blue.png"); 138 installImage("test/javafx/scene/layout/center-btn.png"); 139 } 140 141 /************************************************************************** 142 * * 143 * Basic tests * 144 * * 145 *************************************************************************/ 146 147 @Test public void nothingSpecified() { 148 region.setStyle("-fx-padding: 1;"); 149 processCSS(); 150 151 assertEquals(new Insets(1), region.getPadding()); 152 assertNull(region.getBackground()); 153 assertNull(region.getBorder()); 154 } 155 156 /************************************************************************** 157 * * 158 * Background Color tests * 159 * * 160 * These include -fx-background-color, -fx-background-radius, and * 161 * -fx-background-insets. * 162 * * 163 *************************************************************************/ 164 165 @Test public void fillIsNull() { 166 region.setStyle("-fx-background-color: null;"); 167 processCSS(); 168 169 assertEquals(new Insets(0), region.getPadding()); 170 assertNull(region.getBackground()); 171 assertNull(region.getBorder()); 172 } 173 174 @Test public void fillIsTransparent() { 175 region.setStyle("-fx-background-color: transparent;"); 176 processCSS(); 177 178 assertNull(region.getBorder()); 179 assertEquals(1, region.getBackground().getFills().size(), 0); 180 181 BackgroundFill fill = region.getBackground().getFills().get(0); 182 BackgroundFill expected = new BackgroundFill(Color.TRANSPARENT, null, null); 183 assertEquals(expected, fill); 184 } 185 186 @Test public void fillIsSpecifiedOnly() { 187 region.setStyle("-fx-background-color: purple;"); 188 processCSS(); 189 190 assertNull(region.getBorder()); 191 assertEquals(1, region.getBackground().getFills().size(), 0); 192 193 BackgroundFill fill = region.getBackground().getFills().get(0); 194 BackgroundFill expected = new BackgroundFill(Color.PURPLE, null, null); 195 assertEquals(expected, fill); 196 } 197 198 @Test public void insetsIsSpecifiedOnly() { 199 region.setStyle("-fx-background-insets: 1;"); 200 processCSS(); 201 202 assertNull(region.getBackground()); 203 assertNull(region.getBorder()); 204 } 205 206 @Test public void radiusIsSpecifiedOnly() { 207 region.setStyle("-fx-background-radius: 1;"); 208 processCSS(); 209 210 assertNull(region.getBackground()); 211 assertNull(region.getBorder()); 212 } 213 214 @Test public void testWithExcessInsets() { 215 region.setStyle( 216 "-fx-background-color: red;" + 217 "-fx-background-insets: 0 0 -1 0, 0, 1, 2;"); 218 processCSS(); 219 220 assertEquals(1, region.getBackground().getFills().size(), 0); 221 assertEquals(0, region.getBackground().getImages().size(), 0); 222 assertNull(region.getBorder()); 223 224 BackgroundFill fill = region.getBackground().getFills().get(0); 225 BackgroundFill expected = new BackgroundFill(Color.RED, null, new Insets(0, 0, -1, 0)); 226 assertEquals(expected, fill); 227 } 228 229 @Test public void testWithExcessRadius() { 230 region.setStyle( 231 "-fx-background-color: red;" + 232 "-fx-background-radius: 0 0 0 0, 0, 1, 2;"); 233 processCSS(); 234 235 assertEquals(1, region.getBackground().getFills().size(), 0); 236 assertEquals(0, region.getBackground().getImages().size(), 0); 237 assertNull(region.getBorder()); 238 239 BackgroundFill fill = region.getBackground().getFills().get(0); 240 BackgroundFill expected = new BackgroundFill(Color.RED, new CornerRadii(0), null); 241 assertEquals(expected, fill); 242 } 243 244 @Test public void backgroundScenario1() { 245 region.setStyle( 246 "-fx-background-color: red;" + 247 "-fx-background-insets: 0 0 -1 0, 0, 1, 2;" + 248 "-fx-background-radius: 1 2 3 4;" + 249 "-fx-padding: 10 20 30 40;"); 250 processCSS(); 251 252 assertEquals(new Insets(10, 20, 30, 40), region.getPadding()); 253 assertEquals(1, region.getBackground().getFills().size(), 0); 254 assertEquals(0, region.getBackground().getImages().size(), 0); 255 assertNull(region.getBorder()); 256 257 BackgroundFill fill = region.getBackground().getFills().get(0); 258 BackgroundFill expected = new BackgroundFill(Color.RED, new CornerRadii(1, 2, 3, 4, false), new Insets(0, 0, -1, 0)); 259 assertEquals(expected, fill); 260 } 261 262 @Test public void backgroundScenario2() { 263 region.setStyle( 264 "-fx-background-color: red, green, blue, yellow;" + 265 "-fx-background-insets: 0 0 -1 0, 1;" + 266 "-fx-background-radius: 1 2 3 4, 5, 6 7 8 9;" + 267 "-fx-padding: 10 20 30 40;"); 268 processCSS(); 269 270 assertEquals(new Insets(10, 20, 30, 40), region.getPadding()); 271 assertEquals(4, region.getBackground().getFills().size(), 0); 272 assertEquals(0, region.getBackground().getImages().size(), 0); 273 assertNull(region.getBorder()); 274 275 BackgroundFill fill = region.getBackground().getFills().get(0); 276 BackgroundFill expected = new BackgroundFill(Color.RED, new CornerRadii(1, 2, 3, 4, false), new Insets(0, 0, -1, 0)); 277 assertEquals(expected, fill); 278 279 fill = region.getBackground().getFills().get(1); 280 expected = new BackgroundFill(Color.GREEN, new CornerRadii(5), new Insets(1)); 281 assertEquals(expected, fill); 282 283 fill = region.getBackground().getFills().get(2); 284 expected = new BackgroundFill(Color.BLUE, new CornerRadii(6, 7, 8, 9, false), new Insets(1)); 285 assertEquals(expected, fill); 286 287 fill = region.getBackground().getFills().get(3); 288 expected = new BackgroundFill(Color.YELLOW, new CornerRadii(6, 7, 8, 9, false), new Insets(1)); 289 assertEquals(expected, fill); 290 } 291 292 @Test public void backgroundScenario3() { 293 region.setStyle( 294 "-fx-background-color: red, green, blue, yellow;" + 295 "-fx-background-insets: 0 0 -1 0, 0, 1, 2;" + 296 "-fx-background-radius: 1 2 3 4;" + 297 "-fx-padding: 10 20 30 40;"); 298 processCSS(); 299 300 assertEquals(new Insets(10, 20, 30, 40), region.getPadding()); 301 assertEquals(4, region.getBackground().getFills().size(), 0); 302 303 BackgroundFill fill = region.getBackground().getFills().get(0); 304 BackgroundFill expected = new BackgroundFill(Color.RED, new CornerRadii(1, 2, 3, 4, false), new Insets(0, 0, -1, 0)); 305 assertEquals(expected, fill); 306 307 fill = region.getBackground().getFills().get(1); 308 expected = new BackgroundFill(Color.GREEN, new CornerRadii(1, 2, 3, 4, false), new Insets(0)); 309 assertEquals(expected, fill); 310 311 fill = region.getBackground().getFills().get(2); 312 expected = new BackgroundFill(Color.BLUE, new CornerRadii(1, 2, 3, 4, false), new Insets(1)); 313 assertEquals(expected, fill); 314 315 fill = region.getBackground().getFills().get(3); 316 expected = new BackgroundFill(Color.YELLOW, new CornerRadii(1, 2, 3, 4, false), new Insets(2)); 317 assertEquals(expected, fill); 318 } 319 320 /** 321 * From the specification: http://www.w3.org/TR/css3-background/ 322 * This is "Example 1", except modified for multiple background fills 323 */ 324 @Test public void specExample1_ModifiedForBackgroundFill() { 325 region.setStyle( 326 "-fx-background-color: red, green, blue;" + 327 "-fx-background-insets: 1, 2, 3, 4;" + // An extra value here, which should be ignored 328 "-fx-background-radius: 1;"); 329 processCSS(); 330 331 assertEquals(3, region.getBackground().getFills().size()); 332 333 BackgroundFill fill = region.getBackground().getFills().get(0); 334 BackgroundFill expected = new BackgroundFill(Color.RED, new CornerRadii(1), new Insets(1)); 335 assertEquals(expected, fill); 336 337 fill = region.getBackground().getFills().get(1); 338 expected = new BackgroundFill(Color.GREEN, new CornerRadii(1), new Insets(2)); 339 assertEquals(expected, fill); 340 341 fill = region.getBackground().getFills().get(2); 342 expected = new BackgroundFill(Color.BLUE, new CornerRadii(1), new Insets(3)); 343 assertEquals(expected, fill); 344 } 345 346 // See example 23 in http://www.w3.org/TR/css3-background/#the-border-radius 347 @Test public void testBackgroundRadiusWithHorizontalAndVerticalRadii() { 348 349 region.setStyle("-fx-background-color: black; -fx-background-radius: 2px 1px 4px / 0.5px 3px;"); 350 processCSS(); 351 352 assertNull(region.getBorder()); 353 assertEquals(1, region.getBackground().getFills().size(), 0); 354 assertEquals(0, region.getBackground().getImages().size(), 0); 355 356 BackgroundFill fill = region.getBackground().getFills().get(0); 357 BackgroundFill expected = new BackgroundFill(Color.BLACK, 358 new CornerRadii(2, .5, 3, 1, 4, .5, 3, 1, false, false, false, false, false, false, false, false), 359 Insets.EMPTY); 360 361 assertEquals(expected, fill); 362 363 } 364 365 366 /************************************************************************** 367 * * 368 * Background Image tests * 369 * * 370 * These include -fx-background-image, -fx-background-repeat, * 371 * -fx-background-position, -fx-background-clip, -fx-background-origin, * 372 * and -fx-background-size. -fx-background-attachment does not yet exist * 373 * and is not supported. * 374 * * 375 *************************************************************************/ 376 377 378 /** 379 * From the specification: http://www.w3.org/TR/css3-background/. 380 * 381 * This is something of a comprehensive test, whereas most of the unit tests 382 * in this file are checking one specific aspect of the functionality tested 383 * herein. 384 */ 385 @Test public void specExample1() { 386 region.setStyle( 387 "-fx-background-image: url(test/javafx/scene/layout/red.png), url(test/javafx/scene/layout/green.png), url(test/javafx/scene/layout/blue.png);" + 388 "-fx-background-position: center center, 20% 80%, top left, bottom right;" + 389 // TODO re-enable once I know how to test for background-origin 390 //"-fx-background-origin: border-box, content-box;" + 391 "-fx-background-repeat: no-repeat;"); 392 processCSS(); 393 394 assertEquals(0, region.getBackground().getFills().size(), 0); 395 assertEquals(3, region.getBackground().getImages().size(), 0); 396 assertNull(region.getBorder()); 397 398 BackgroundImage image = region.getBackground().getImages().get(0); 399 BackgroundImage expected = new BackgroundImage(image.getImage(), 400 BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, 401 new BackgroundPosition(Side.LEFT, .5, true, Side.TOP, .5, true), 402 BackgroundSize.DEFAULT); 403 assertEquals(expected, image); 404 405 image = region.getBackground().getImages().get(1); 406 expected = new BackgroundImage(image.getImage(), 407 BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, 408 new BackgroundPosition(Side.LEFT, .2, true, Side.TOP, .8, true), 409 BackgroundSize.DEFAULT); 410 assertEquals(expected, image); 411 412 image = region.getBackground().getImages().get(2); 413 expected = new BackgroundImage(image.getImage(), 414 BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, 415 BackgroundPosition.DEFAULT, 416 BackgroundSize.DEFAULT); 417 assertEquals(expected, image); 418 } 419 420 @Test public void backgroundImageRepeat_repeatX() { 421 region.setStyle( 422 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 423 "-fx-background-repeat: repeat-x;"); 424 processCSS(); 425 426 assertEquals(0, region.getBackground().getFills().size(), 0); 427 assertEquals(1, region.getBackground().getImages().size(), 0); 428 assertNull(region.getBorder()); 429 430 BackgroundImage image = region.getBackground().getImages().get(0); 431 BackgroundImage expected = new BackgroundImage(image.getImage(), 432 BackgroundRepeat.REPEAT, BackgroundRepeat.NO_REPEAT, 433 BackgroundPosition.DEFAULT, 434 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 435 assertEquals(expected, image); 436 } 437 438 @Test public void backgroundImageRepeat_repeatY() { 439 region.setStyle( 440 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 441 "-fx-background-repeat: repeat-y;"); 442 processCSS(); 443 444 assertEquals(0, region.getBackground().getFills().size(), 0); 445 assertEquals(1, region.getBackground().getImages().size(), 0); 446 assertNull(region.getBorder()); 447 448 BackgroundImage image = region.getBackground().getImages().get(0); 449 BackgroundImage expected = new BackgroundImage(image.getImage(), 450 BackgroundRepeat.NO_REPEAT, BackgroundRepeat.REPEAT, 451 BackgroundPosition.DEFAULT, 452 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 453 assertEquals(expected, image); 454 } 455 456 @Test public void backgroundImageRepeat_repeat() { 457 region.setStyle( 458 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 459 "-fx-background-repeat: repeat;"); 460 processCSS(); 461 462 assertEquals(0, region.getBackground().getFills().size(), 0); 463 assertEquals(1, region.getBackground().getImages().size(), 0); 464 assertNull(region.getBorder()); 465 466 BackgroundImage image = region.getBackground().getImages().get(0); 467 BackgroundImage expected = new BackgroundImage(image.getImage(), 468 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 469 BackgroundPosition.DEFAULT, 470 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 471 assertEquals(expected, image); 472 } 473 474 @Test public void backgroundImageRepeat_space() { 475 region.setStyle( 476 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 477 "-fx-background-repeat: space;"); 478 processCSS(); 479 480 assertEquals(0, region.getBackground().getFills().size(), 0); 481 assertEquals(1, region.getBackground().getImages().size(), 0); 482 assertNull(region.getBorder()); 483 484 BackgroundImage image = region.getBackground().getImages().get(0); 485 BackgroundImage expected = new BackgroundImage(image.getImage(), 486 BackgroundRepeat.SPACE, BackgroundRepeat.SPACE, 487 BackgroundPosition.DEFAULT, 488 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 489 assertEquals(expected, image); 490 } 491 492 @Test public void backgroundImageRepeat_round() { 493 region.setStyle( 494 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 495 "-fx-background-repeat: round;"); 496 processCSS(); 497 498 assertEquals(0, region.getBackground().getFills().size(), 0); 499 assertEquals(1, region.getBackground().getImages().size(), 0); 500 assertNull(region.getBorder()); 501 502 BackgroundImage image = region.getBackground().getImages().get(0); 503 BackgroundImage expected = new BackgroundImage(image.getImage(), 504 BackgroundRepeat.ROUND, BackgroundRepeat.ROUND, 505 BackgroundPosition.DEFAULT, 506 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 507 assertEquals(expected, image); 508 } 509 510 @Test public void backgroundImageRepeat_noRepeat() { 511 region.setStyle( 512 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 513 "-fx-background-repeat: no-repeat;"); 514 processCSS(); 515 516 assertEquals(0, region.getBackground().getFills().size(), 0); 517 assertEquals(1, region.getBackground().getImages().size(), 0); 518 assertNull(region.getBorder()); 519 520 BackgroundImage image = region.getBackground().getImages().get(0); 521 BackgroundImage expected = new BackgroundImage(image.getImage(), 522 BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, 523 BackgroundPosition.DEFAULT, 524 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 525 assertEquals(expected, image); 526 } 527 528 @Test public void backgroundImageRepeat_repeat_space() { 529 region.setStyle( 530 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 531 "-fx-background-repeat: repeat space;"); 532 processCSS(); 533 534 assertEquals(0, region.getBackground().getFills().size(), 0); 535 assertEquals(1, region.getBackground().getImages().size(), 0); 536 assertNull(region.getBorder()); 537 538 BackgroundImage image = region.getBackground().getImages().get(0); 539 BackgroundImage expected = new BackgroundImage(image.getImage(), 540 BackgroundRepeat.REPEAT, BackgroundRepeat.SPACE, 541 BackgroundPosition.DEFAULT, 542 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 543 assertEquals(expected, image); 544 } 545 546 @Test public void backgroundImageRepeat_round_noRepeat() { 547 region.setStyle( 548 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 549 "-fx-background-repeat: round no-repeat;"); 550 processCSS(); 551 552 assertEquals(0, region.getBackground().getFills().size(), 0); 553 assertEquals(1, region.getBackground().getImages().size(), 0); 554 assertNull(region.getBorder()); 555 556 BackgroundImage image = region.getBackground().getImages().get(0); 557 BackgroundImage expected = new BackgroundImage(image.getImage(), 558 BackgroundRepeat.ROUND, BackgroundRepeat.NO_REPEAT, 559 BackgroundPosition.DEFAULT, 560 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 561 assertEquals(expected, image); 562 } 563 564 // try "center left" 565 // try "50% left" -- shouldn't work 566 // try 3 values... remaining one should be 0 567 // If only one value is specified, the second value is assumed to be ???center??? -- whatever this means... 568 @Test public void backgroundImagePosition_right_bottom() { 569 region.setStyle( 570 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 571 "-fx-background-position: right 20px bottom 10px;"); 572 processCSS(); 573 574 assertEquals(0, region.getBackground().getFills().size(), 0); 575 assertEquals(1, region.getBackground().getImages().size(), 0); 576 assertNull(region.getBorder()); 577 578 BackgroundImage image = region.getBackground().getImages().get(0); 579 BackgroundImage expected = new BackgroundImage(image.getImage(), 580 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 581 new BackgroundPosition(Side.RIGHT, 20, false, Side.BOTTOM, 10, false), 582 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 583 assertEquals(expected, image); 584 } 585 586 private static String dump(BackgroundImage image) { 587 StringBuilder b = new StringBuilder("BackgroundImage["); 588 b.append(NL + " image: " + image.getImage()); 589 b.append(NL + " position: " + dump(image.getPosition())); 590 b.append(NL + " repeat-x: " + image.getRepeatX()); 591 b.append(NL + " repeat-y: " + image.getRepeatY()); 592 b.append(NL + " size: " + dump(image.getSize())); 593 b.append(NL + "]"); 594 return b.toString(); 595 } 596 597 private static String dump(BackgroundSize size) { 598 StringBuilder b = new StringBuilder("BackgroundSize["); 599 b.append(NL + " width: " + size.getWidth()); 600 b.append(NL + " height: " + size.getHeight()); 601 b.append(NL + " widthAsPercentage: " + size.isHeightAsPercentage()); 602 b.append(NL + " heightAsPercentage: " + size.isWidthAsPercentage()); 603 b.append(NL + " contain: " + size.isContain()); 604 b.append(NL + " cover: " + size.isCover()); 605 b.append(NL + " ]"); 606 return b.toString(); 607 } 608 609 private static String dump(BackgroundPosition position) { 610 StringBuilder b = new StringBuilder("BackgroundPosition["); 611 b.append(NL + " hSide: " + position.getHorizontalSide()); 612 b.append(NL + " hPosition: " + position.getHorizontalPosition()); 613 b.append(NL + " hAsPercentage: " + position.isHorizontalAsPercentage()); 614 b.append(NL + " vSide: " + position.getVerticalSide()); 615 b.append(NL + " vPosition: " + position.getVerticalPosition()); 616 b.append(NL + " vAsPercentage: " + position.isVerticalAsPercentage()); 617 b.append(NL + " ]"); 618 return b.toString(); 619 } 620 621 @Test public void backgroundImagePosition_bottom_right() { 622 region.setStyle( 623 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 624 "-fx-background-position: bottom 10px right 20px;"); 625 processCSS(); 626 627 assertEquals(0, region.getBackground().getFills().size(), 0); 628 assertEquals(1, region.getBackground().getImages().size(), 0); 629 assertNull(region.getBorder()); 630 631 BackgroundImage image = region.getBackground().getImages().get(0); 632 BackgroundImage expected = new BackgroundImage(image.getImage(), 633 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 634 new BackgroundPosition(Side.RIGHT, 20, false, Side.BOTTOM, 10, false), 635 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 636 assertEquals(expected, image); 637 } 638 639 @Test public void backgroundImagePosition_top() { 640 region.setStyle( 641 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 642 "-fx-background-position: top;"); 643 processCSS(); 644 645 assertEquals(0, region.getBackground().getFills().size(), 0); 646 assertEquals(1, region.getBackground().getImages().size(), 0); 647 assertNull(region.getBorder()); 648 649 BackgroundImage image = region.getBackground().getImages().get(0); 650 BackgroundImage expected = new BackgroundImage(image.getImage(), 651 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 652 new BackgroundPosition(Side.LEFT, .5, true, Side.TOP, 0, true), 653 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 654 assertEquals(expected, image); 655 } 656 657 @Test public void backgroundImagePosition_left() { 658 region.setStyle( 659 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 660 "-fx-background-position: left;"); 661 processCSS(); 662 663 assertEquals(0, region.getBackground().getFills().size(), 0); 664 assertEquals(1, region.getBackground().getImages().size(), 0); 665 assertNull(region.getBorder()); 666 667 BackgroundImage image = region.getBackground().getImages().get(0); 668 BackgroundImage expected = new BackgroundImage(image.getImage(), 669 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 670 new BackgroundPosition(Side.LEFT, 0, true, Side.TOP, .5, true), 671 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 672 assertEquals(expected, image); 673 } 674 675 @Test public void backgroundImagePosition_center() { 676 region.setStyle( 677 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 678 "-fx-background-position: center;"); 679 processCSS(); 680 681 assertEquals(0, region.getBackground().getFills().size(), 0); 682 assertEquals(1, region.getBackground().getImages().size(), 0); 683 assertNull(region.getBorder()); 684 685 BackgroundImage image = region.getBackground().getImages().get(0); 686 BackgroundImage expected = new BackgroundImage(image.getImage(), 687 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 688 new BackgroundPosition(Side.LEFT, .5, true, Side.TOP, .5, true), 689 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 690 assertEquals(expected, image); 691 } 692 693 @Test public void backgroundImagePosition_right() { 694 region.setStyle( 695 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 696 "-fx-background-position: right;"); 697 processCSS(); 698 699 assertEquals(0, region.getBackground().getFills().size(), 0); 700 assertEquals(1, region.getBackground().getImages().size(), 0); 701 assertNull(region.getBorder()); 702 703 BackgroundImage image = region.getBackground().getImages().get(0); 704 BackgroundImage expected = new BackgroundImage(image.getImage(), 705 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 706 new BackgroundPosition(Side.LEFT, 1, true, Side.TOP, .5, true), 707 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 708 assertEquals(expected, image); 709 } 710 711 @Test public void backgroundImagePosition_bottom() { 712 region.setStyle( 713 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 714 "-fx-background-position: bottom;"); 715 processCSS(); 716 717 assertEquals(0, region.getBackground().getFills().size(), 0); 718 assertEquals(1, region.getBackground().getImages().size(), 0); 719 assertNull(region.getBorder()); 720 721 BackgroundImage image = region.getBackground().getImages().get(0); 722 BackgroundImage expected = new BackgroundImage(image.getImage(), 723 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 724 new BackgroundPosition(Side.LEFT, .5, true, Side.TOP, 1, true), 725 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 726 assertEquals(expected, image); 727 } 728 729 @Test public void backgroundImagePosition_center_top() { 730 region.setStyle( 731 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 732 "-fx-background-position: center top;"); 733 processCSS(); 734 735 assertEquals(0, region.getBackground().getFills().size(), 0); 736 assertEquals(1, region.getBackground().getImages().size(), 0); 737 assertNull(region.getBorder()); 738 739 BackgroundImage image = region.getBackground().getImages().get(0); 740 BackgroundImage expected = new BackgroundImage(image.getImage(), 741 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 742 new BackgroundPosition(Side.LEFT, .5, true, Side.TOP, 0, true), 743 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 744 assertEquals(expected, image); 745 } 746 747 @Test public void backgroundImagePosition_Example8_1() { 748 region.setStyle( 749 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 750 "-fx-background-position: left 10px top 15px;"); 751 processCSS(); 752 753 assertEquals(0, region.getBackground().getFills().size(), 0); 754 assertEquals(1, region.getBackground().getImages().size(), 0); 755 assertNull(region.getBorder()); 756 757 BackgroundImage image = region.getBackground().getImages().get(0); 758 BackgroundImage expected = new BackgroundImage(image.getImage(), 759 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 760 new BackgroundPosition(Side.LEFT, 10, false, Side.TOP, 15, false), 761 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 762 assertEquals(expected, image); 763 } 764 765 @Test public void backgroundImagePosition_Example8_2() { 766 region.setStyle( 767 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 768 "-fx-background-position: left top;"); 769 processCSS(); 770 771 assertEquals(0, region.getBackground().getFills().size(), 0); 772 assertEquals(1, region.getBackground().getImages().size(), 0); 773 assertNull(region.getBorder()); 774 775 BackgroundImage image = region.getBackground().getImages().get(0); 776 BackgroundImage expected = new BackgroundImage(image.getImage(), 777 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 778 BackgroundPosition.DEFAULT, 779 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 780 assertEquals(expected, image); 781 } 782 783 @Test public void backgroundImagePosition_Example8_3() { 784 region.setStyle( 785 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 786 "-fx-background-position: 10px 15px;"); 787 processCSS(); 788 789 assertEquals(0, region.getBackground().getFills().size(), 0); 790 assertEquals(1, region.getBackground().getImages().size(), 0); 791 assertNull(region.getBorder()); 792 793 BackgroundImage image = region.getBackground().getImages().get(0); 794 BackgroundImage expected = new BackgroundImage(image.getImage(), 795 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 796 new BackgroundPosition(Side.LEFT, 10, false, Side.TOP, 15, false), 797 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 798 assertEquals(expected, image); 799 } 800 801 @Test public void backgroundImagePosition_Example8_4() { 802 region.setStyle( 803 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 804 "-fx-background-position: left 15px;"); 805 processCSS(); 806 807 assertEquals(0, region.getBackground().getFills().size(), 0); 808 assertEquals(1, region.getBackground().getImages().size(), 0); 809 assertNull(region.getBorder()); 810 811 BackgroundImage image = region.getBackground().getImages().get(0); 812 BackgroundImage expected = new BackgroundImage(image.getImage(), 813 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 814 new BackgroundPosition(Side.LEFT, 0, true, Side.TOP, 15, false), 815 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 816 assertEquals(expected, image); 817 } 818 819 @Test public void backgroundImagePosition_Example8_5() { 820 region.setStyle( 821 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 822 "-fx-background-position: 10px top;"); 823 processCSS(); 824 825 assertEquals(0, region.getBackground().getFills().size(), 0); 826 assertEquals(1, region.getBackground().getImages().size(), 0); 827 assertNull(region.getBorder()); 828 829 BackgroundImage image = region.getBackground().getImages().get(0); 830 BackgroundImage expected = new BackgroundImage(image.getImage(), 831 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 832 new BackgroundPosition(Side.LEFT, 10, false, Side.TOP, 0, true), 833 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 834 assertEquals(expected, image); 835 } 836 837 @Test public void backgroundImagePosition_Example8_6() { 838 region.setStyle( 839 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 840 "-fx-background-position: left top 15px;"); 841 processCSS(); 842 843 assertEquals(0, region.getBackground().getFills().size(), 0); 844 assertEquals(1, region.getBackground().getImages().size(), 0); 845 assertNull(region.getBorder()); 846 847 BackgroundImage image = region.getBackground().getImages().get(0); 848 BackgroundImage expected = new BackgroundImage(image.getImage(), 849 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 850 new BackgroundPosition(Side.LEFT, 0, true, Side.TOP, 15, false), 851 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 852 assertEquals(expected, image); 853 } 854 855 @Test public void backgroundImagePosition_Example8_7() { 856 region.setStyle( 857 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 858 "-fx-background-position: left 10px top;"); 859 processCSS(); 860 861 assertEquals(0, region.getBackground().getFills().size(), 0); 862 assertEquals(1, region.getBackground().getImages().size(), 0); 863 assertNull(region.getBorder()); 864 865 BackgroundImage image = region.getBackground().getImages().get(0); 866 BackgroundImage expected = new BackgroundImage(image.getImage(), 867 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 868 new BackgroundPosition(Side.LEFT, 10, false, Side.TOP, 0, true), 869 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 870 assertEquals(expected, image); 871 } 872 873 @Test public void backgroundImagePosition_Example10_1() { 874 region.setStyle( 875 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 876 "-fx-background-position: right top;"); 877 processCSS(); 878 879 assertEquals(0, region.getBackground().getFills().size(), 0); 880 assertEquals(1, region.getBackground().getImages().size(), 0); 881 assertNull(region.getBorder()); 882 883 BackgroundImage image = region.getBackground().getImages().get(0); 884 BackgroundImage expected = new BackgroundImage(image.getImage(), 885 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 886 new BackgroundPosition(Side.LEFT, 1, true, Side.TOP, 0, true), 887 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 888 assertEquals(expected, image); 889 } 890 891 @Test public void backgroundImagePosition_Example10_2() { 892 region.setStyle( 893 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 894 "-fx-background-position: top center;"); 895 processCSS(); 896 897 assertEquals(0, region.getBackground().getFills().size(), 0); 898 assertEquals(1, region.getBackground().getImages().size(), 0); 899 assertNull(region.getBorder()); 900 901 BackgroundImage image = region.getBackground().getImages().get(0); 902 BackgroundImage expected = new BackgroundImage(image.getImage(), 903 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 904 new BackgroundPosition(Side.LEFT, .5, true, Side.TOP, 0, true), 905 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 906 assertEquals(expected, image); 907 } 908 909 @Test public void backgroundImagePosition_Example11() { 910 region.setStyle( 911 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 912 "-fx-background-position: 100% 100%;"); 913 processCSS(); 914 915 assertEquals(0, region.getBackground().getFills().size(), 0); 916 assertEquals(1, region.getBackground().getImages().size(), 0); 917 assertNull(region.getBorder()); 918 919 BackgroundImage image = region.getBackground().getImages().get(0); 920 BackgroundImage expected = new BackgroundImage(image.getImage(), 921 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 922 new BackgroundPosition(Side.LEFT, 1, true, Side.TOP, 1, true), 923 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 924 assertEquals(expected, image); 925 } 926 927 @Test public void backgroundImagePosition_75Percent() { 928 region.setStyle( 929 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 930 "-fx-background-position: 75% 75%;"); 931 processCSS(); 932 933 assertEquals(0, region.getBackground().getFills().size(), 0); 934 assertEquals(1, region.getBackground().getImages().size(), 0); 935 assertNull(region.getBorder()); 936 937 BackgroundImage image = region.getBackground().getImages().get(0); 938 BackgroundImage expected = new BackgroundImage(image.getImage(), 939 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 940 new BackgroundPosition(Side.LEFT, .75, true, Side.TOP, .75, true), 941 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 942 assertEquals(expected, image); 943 } 944 945 @Test public void backgroundImagePosition_Example12() { 946 region.setStyle( 947 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 948 "-fx-background-position: right 10% bottom 10%;"); 949 processCSS(); 950 951 assertEquals(0, region.getBackground().getFills().size(), 0); 952 assertEquals(1, region.getBackground().getImages().size(), 0); 953 assertNull(region.getBorder()); 954 955 BackgroundImage image = region.getBackground().getImages().get(0); 956 BackgroundImage expected = new BackgroundImage(image.getImage(), 957 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 958 new BackgroundPosition(Side.RIGHT, .1, true, Side.BOTTOM, .1, true), 959 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 960 assertEquals(expected, image); 961 } 962 963 @Ignore("We do not presently implement -fx-background-clip") 964 @Test public void backgroundClip_defaultValue() { 965 region.setStyle( 966 "-fx-background-image: url('test/javafx/scene/layout/red.png');"); 967 processCSS(); 968 969 assertEquals(0, region.getBackground().getFills().size(), 0); 970 assertEquals(1, region.getBackground().getImages().size(), 0); 971 assertNull(region.getBorder()); 972 973 // BackgroundImage image = region.getBackground().getImages().get(0); 974 // TODO backgroundClip needs to be set to border-box by default 975 // BackgroundImage expected = new BackgroundImage(image.getImage(), BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, 976 // 0, .1, .1, 0, // top, right, bottom, left 977 // 1, 1, 978 // true, true, // asHorizontalPercentage, asVerticalPercentage 979 // true, true, 980 // false, false); 981 // assertEquals(expected, image); 982 } 983 984 @Ignore("We do not presently implement -fx-background-clip") 985 @Test public void backgroundClip_BorderBox() { 986 region.setStyle( 987 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 988 "-fx-background-clip: border-box"); 989 processCSS(); 990 991 assertEquals(0, region.getBackground().getFills().size(), 0); 992 assertEquals(1, region.getBackground().getImages().size(), 0); 993 assertNull(region.getBorder()); 994 995 // BackgroundImage image = region.getBackground().getImages().get(0); 996 // BackgroundImage expected = new BackgroundImage(image.getImage(), BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, 997 // 0, .1, .1, 0, // top, right, bottom, left 998 // 1, 1, 999 // true, true, // asHorizontalPercentage, asVerticalPercentage 1000 // true, true, 1001 // false, false); 1002 // assertEquals(expected, image); 1003 } 1004 1005 @Ignore("We do not presently implement -fx-background-clip") 1006 @Test public void backgroundClip_PaddingBox() { 1007 region.setStyle( 1008 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1009 "-fx-background-clip: padding-box"); 1010 processCSS(); 1011 1012 assertEquals(0, region.getBackground().getFills().size(), 0); 1013 assertEquals(1, region.getBackground().getImages().size(), 0); 1014 assertNull(region.getBorder()); 1015 1016 // BackgroundImage image = region.getBackground().getImages().get(0); 1017 // BackgroundImage expected = new BackgroundImage(image.getImage(), BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, 1018 // 0, .1, .1, 0, // top, right, bottom, left 1019 // 1, 1, 1020 // true, true, // asHorizontalPercentage, asVerticalPercentage 1021 // true, true, 1022 // false, false); 1023 // assertEquals(expected, image); 1024 } 1025 1026 @Ignore("We do not presently implement -fx-background-clip") 1027 @Test public void backgroundClip_ContentBox() { 1028 region.setStyle( 1029 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1030 "-fx-background-clip: content-box"); 1031 processCSS(); 1032 1033 assertEquals(0, region.getBackground().getFills().size(), 0); 1034 assertEquals(1, region.getBackground().getImages().size(), 0); 1035 assertNull(region.getBorder()); 1036 1037 // BackgroundImage image = region.getBackground().getImages().get(0); 1038 // BackgroundImage expected = new BackgroundImage(image.getImage(), BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, 1039 // 0, .1, .1, 0, // top, right, bottom, left 1040 // 1, 1, 1041 // true, true, // asHorizontalPercentage, asVerticalPercentage 1042 // true, true, 1043 // false, false); 1044 // assertEquals(expected, image); 1045 } 1046 1047 @Ignore("We do not presently implement -fx-background-origin") 1048 @Test public void backgroundOrigin_defaultValue() { 1049 region.setStyle( 1050 "-fx-background-image: url('test/javafx/scene/layout/red.png');"); 1051 processCSS(); 1052 1053 assertEquals(0, region.getBackground().getFills().size(), 0); 1054 assertEquals(1, region.getBackground().getImages().size(), 0); 1055 assertNull(region.getBorder()); 1056 1057 // BackgroundImage image = region.getBackground().getImages().get(0); 1058 // TODO backgroundOrigin needs to be set to padding-box by default 1059 // BackgroundImage expected = new BackgroundImage(image.getImage(), BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, 1060 // 0, .1, .1, 0, // top, right, bottom, left 1061 // 1, 1, 1062 // true, true, // asHorizontalPercentage, asVerticalPercentage 1063 // true, true, 1064 // false, false); 1065 // assertEquals(expected, image); 1066 } 1067 1068 @Ignore("We do not presently implement -fx-background-origin") 1069 @Test public void backgroundOrigin_BorderBox() { 1070 region.setStyle( 1071 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1072 "-fx-background-origin: border-box"); 1073 processCSS(); 1074 1075 // assertEquals(0, region.getBackground().getFills().size(), 0); 1076 // assertEquals(1, region.getBackground().getImages().size(), 0); 1077 // assertEquals(0, region.getImageBorders().size(), 0); 1078 // assertEquals(0, region.getStrokeBorders().size(), 0); 1079 1080 // BackgroundImage image = region.getBackground().getImages().get(0); 1081 // BackgroundImage expected = new BackgroundImage(image.getImage(), BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, 1082 // 0, .1, .1, 0, // top, right, bottom, left 1083 // 1, 1, 1084 // true, true, // asHorizontalPercentage, asVerticalPercentage 1085 // true, true, 1086 // false, false); 1087 // assertEquals(expected, image); 1088 } 1089 1090 @Ignore("We do not presently implement -fx-background-origin") 1091 @Test public void backgroundOrigin_PaddingBox() { 1092 region.setStyle( 1093 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1094 "-fx-background-origin: padding-box"); 1095 processCSS(); 1096 1097 assertEquals(0, region.getBackground().getFills().size(), 0); 1098 assertEquals(1, region.getBackground().getImages().size(), 0); 1099 assertNull(region.getBorder()); 1100 1101 // BackgroundImage image = region.getBackground().getImages().get(0); 1102 // BackgroundImage expected = new BackgroundImage(image.getImage(), BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, 1103 // 0, .1, .1, 0, // top, right, bottom, left 1104 // 1, 1, 1105 // true, true, // asHorizontalPercentage, asVerticalPercentage 1106 // true, true, 1107 // false, false); 1108 // assertEquals(expected, image); 1109 } 1110 1111 @Ignore("We do not presently implement -fx-background-origin") 1112 @Test public void backgroundOrigin_ContentBox() { 1113 region.setStyle( 1114 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1115 "-fx-background-origin: content-box"); 1116 processCSS(); 1117 1118 assertEquals(0, region.getBackground().getFills().size(), 0); 1119 assertEquals(1, region.getBackground().getImages().size(), 0); 1120 assertNull(region.getBorder()); 1121 1122 // BackgroundImage image = region.getBackground().getImages().get(0); 1123 // BackgroundImage expected = new BackgroundImage(image.getImage(), BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, 1124 // 0, .1, .1, 0, // top, right, bottom, left 1125 // 1, 1, 1126 // true, true, // asHorizontalPercentage, asVerticalPercentage 1127 // true, true, 1128 // false, false); 1129 // assertEquals(expected, image); 1130 } 1131 1132 @Test public void backgroundSize_defaultValue() { 1133 region.setStyle("-fx-background-image: url('test/javafx/scene/layout/red.png');"); 1134 processCSS(); 1135 1136 assertEquals(0, region.getBackground().getFills().size(), 0); 1137 assertEquals(1, region.getBackground().getImages().size(), 0); 1138 assertNull(region.getBorder()); 1139 1140 BackgroundImage image = region.getBackground().getImages().get(0); 1141 BackgroundImage expected = new BackgroundImage(image.getImage(), 1142 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 1143 BackgroundPosition.DEFAULT, 1144 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 1145 assertEquals(expected, image); 1146 } 1147 1148 @Test public void backgroundSize_cover() { 1149 region.setStyle( 1150 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1151 "-fx-background-size: cover;"); 1152 processCSS(); 1153 1154 assertEquals(0, region.getBackground().getFills().size(), 0); 1155 assertEquals(1, region.getBackground().getImages().size(), 0); 1156 assertNull(region.getBorder()); 1157 1158 BackgroundImage image = region.getBackground().getImages().get(0); 1159 BackgroundImage expected = new BackgroundImage(image.getImage(), 1160 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 1161 BackgroundPosition.DEFAULT, 1162 new BackgroundSize(AUTO, AUTO, true, true, false, true)); 1163 assertEquals(expected, image); 1164 } 1165 1166 @Test public void backgroundSize_contain() { 1167 region.setStyle( 1168 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1169 "-fx-background-size: contain;"); 1170 processCSS(); 1171 1172 assertEquals(0, region.getBackground().getFills().size(), 0); 1173 assertEquals(1, region.getBackground().getImages().size(), 0); 1174 assertNull(region.getBorder()); 1175 1176 BackgroundImage image = region.getBackground().getImages().get(0); 1177 BackgroundImage expected = new BackgroundImage(image.getImage(), 1178 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 1179 BackgroundPosition.DEFAULT, 1180 new BackgroundSize(AUTO, AUTO, true, true, true, false)); 1181 assertEquals(expected, image); 1182 } 1183 1184 @Test public void backgroundSize_length() { 1185 region.setStyle( 1186 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1187 "-fx-background-size: 170px;"); 1188 processCSS(); 1189 1190 assertEquals(0, region.getBackground().getFills().size(), 0); 1191 assertEquals(1, region.getBackground().getImages().size(), 0); 1192 assertNull(region.getBorder()); 1193 1194 BackgroundImage image = region.getBackground().getImages().get(0); 1195 BackgroundImage expected = new BackgroundImage(image.getImage(), 1196 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 1197 BackgroundPosition.DEFAULT, 1198 new BackgroundSize(170, AUTO, false, true, false, false)); 1199 assertEquals(expected, image); 1200 } 1201 1202 @Test public void backgroundSize_percent() { 1203 region.setStyle( 1204 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1205 "-fx-background-size: 65%;"); 1206 processCSS(); 1207 1208 assertEquals(0, region.getBackground().getFills().size(), 0); 1209 assertEquals(1, region.getBackground().getImages().size(), 0); 1210 assertNull(region.getBorder()); 1211 1212 BackgroundImage image = region.getBackground().getImages().get(0); 1213 BackgroundImage expected = new BackgroundImage(image.getImage(), 1214 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 1215 BackgroundPosition.DEFAULT, 1216 new BackgroundSize(.65, AUTO, true, true, false, false)); 1217 assertEquals(expected, image); 1218 } 1219 1220 @Test public void backgroundSize_auto() { 1221 region.setStyle( 1222 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1223 "-fx-background-size: auto;"); 1224 processCSS(); 1225 1226 assertEquals(0, region.getBackground().getFills().size(), 0); 1227 assertEquals(1, region.getBackground().getImages().size(), 0); 1228 assertNull(region.getBorder()); 1229 1230 BackgroundImage image = region.getBackground().getImages().get(0); 1231 BackgroundImage expected = new BackgroundImage(image.getImage(), 1232 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 1233 BackgroundPosition.DEFAULT, 1234 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 1235 assertEquals(expected, image); 1236 } 1237 1238 @Test public void backgroundSize_length_length() { 1239 region.setStyle( 1240 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1241 "-fx-background-size: 10px 20px;"); 1242 processCSS(); 1243 1244 assertEquals(0, region.getBackground().getFills().size(), 0); 1245 assertEquals(1, region.getBackground().getImages().size(), 0); 1246 assertNull(region.getBorder()); 1247 1248 BackgroundImage image = region.getBackground().getImages().get(0); 1249 BackgroundImage expected = new BackgroundImage(image.getImage(), 1250 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 1251 BackgroundPosition.DEFAULT, 1252 new BackgroundSize(10, 20, false, false, false, false)); 1253 assertEquals(expected, image); 1254 } 1255 1256 @Test public void backgroundSize_length_percent() { 1257 region.setStyle( 1258 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1259 "-fx-background-size: 50px 25%;"); 1260 processCSS(); 1261 1262 assertEquals(0, region.getBackground().getFills().size(), 0); 1263 assertEquals(1, region.getBackground().getImages().size(), 0); 1264 assertNull(region.getBorder()); 1265 1266 BackgroundImage image = region.getBackground().getImages().get(0); 1267 BackgroundImage expected = new BackgroundImage(image.getImage(), 1268 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 1269 BackgroundPosition.DEFAULT, 1270 new BackgroundSize(50, .25, false, true, false, false)); 1271 assertEquals(expected, image); 1272 } 1273 1274 @Test public void backgroundSize_length_auto() { 1275 region.setStyle( 1276 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1277 "-fx-background-size: 40px auto;"); 1278 processCSS(); 1279 1280 assertEquals(0, region.getBackground().getFills().size(), 0); 1281 assertEquals(1, region.getBackground().getImages().size(), 0); 1282 assertNull(region.getBorder()); 1283 1284 BackgroundImage image = region.getBackground().getImages().get(0); 1285 BackgroundImage expected = new BackgroundImage(image.getImage(), 1286 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 1287 BackgroundPosition.DEFAULT, 1288 new BackgroundSize(40, AUTO, false, true, false, false)); 1289 assertEquals(expected, image); 1290 } 1291 1292 @Test public void backgroundSize_percent_length() { 1293 region.setStyle( 1294 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1295 "-fx-background-size: 25% 30px;"); 1296 processCSS(); 1297 1298 assertEquals(0, region.getBackground().getFills().size(), 0); 1299 assertEquals(1, region.getBackground().getImages().size(), 0); 1300 assertNull(region.getBorder()); 1301 1302 BackgroundImage image = region.getBackground().getImages().get(0); 1303 BackgroundImage expected = new BackgroundImage(image.getImage(), 1304 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 1305 BackgroundPosition.DEFAULT, 1306 new BackgroundSize(.25, 30, true, false, false, false)); 1307 assertEquals(expected, image); 1308 } 1309 1310 @Test public void backgroundSize_percent_percent() { 1311 region.setStyle( 1312 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1313 "-fx-background-size: 25% 75%;"); 1314 processCSS(); 1315 1316 assertEquals(0, region.getBackground().getFills().size(), 0); 1317 assertEquals(1, region.getBackground().getImages().size(), 0); 1318 assertNull(region.getBorder()); 1319 1320 BackgroundImage image = region.getBackground().getImages().get(0); 1321 BackgroundImage expected = new BackgroundImage(image.getImage(), 1322 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 1323 BackgroundPosition.DEFAULT, 1324 new BackgroundSize(.25, .75, true, true, false, false)); 1325 assertEquals(expected, image); 1326 } 1327 1328 @Test public void backgroundSize_percent_auto() { 1329 region.setStyle( 1330 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1331 "-fx-background-size: 25% auto;"); 1332 processCSS(); 1333 1334 assertEquals(0, region.getBackground().getFills().size(), 0); 1335 assertEquals(1, region.getBackground().getImages().size(), 0); 1336 assertNull(region.getBorder()); 1337 1338 BackgroundImage image = region.getBackground().getImages().get(0); 1339 BackgroundImage expected = new BackgroundImage(image.getImage(), 1340 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 1341 BackgroundPosition.DEFAULT, 1342 new BackgroundSize(.25, AUTO, true, true, false, false)); 1343 assertEquals(expected, image); 1344 } 1345 1346 @Test public void backgroundSize_auto_length() { 1347 region.setStyle( 1348 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1349 "-fx-background-size: auto 25px;"); 1350 processCSS(); 1351 1352 assertEquals(0, region.getBackground().getFills().size(), 0); 1353 assertEquals(1, region.getBackground().getImages().size(), 0); 1354 assertNull(region.getBorder()); 1355 1356 BackgroundImage image = region.getBackground().getImages().get(0); 1357 BackgroundImage expected = new BackgroundImage(image.getImage(), 1358 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 1359 BackgroundPosition.DEFAULT, 1360 new BackgroundSize(AUTO, 25, true, false, false, false)); 1361 assertEquals(expected, image); 1362 } 1363 1364 @Test public void backgroundSize_auto_percent() { 1365 region.setStyle( 1366 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1367 "-fx-background-size: auto 50%;"); 1368 processCSS(); 1369 1370 assertEquals(0, region.getBackground().getFills().size(), 0); 1371 assertEquals(1, region.getBackground().getImages().size(), 0); 1372 assertNull(region.getBorder()); 1373 1374 BackgroundImage image = region.getBackground().getImages().get(0); 1375 BackgroundImage expected = new BackgroundImage(image.getImage(), 1376 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 1377 BackgroundPosition.DEFAULT, 1378 new BackgroundSize(AUTO, .5, true, true, false, false)); 1379 assertEquals(expected, image); 1380 } 1381 1382 @Test public void backgroundSize_auto_auto() { 1383 region.setStyle( 1384 "-fx-background-image: url('test/javafx/scene/layout/red.png');" + 1385 "-fx-background-size: auto auto;"); 1386 processCSS(); 1387 1388 assertEquals(0, region.getBackground().getFills().size(), 0); 1389 assertEquals(1, region.getBackground().getImages().size(), 0); 1390 assertNull(region.getBorder()); 1391 1392 BackgroundImage image = region.getBackground().getImages().get(0); 1393 BackgroundImage expected = new BackgroundImage(image.getImage(), 1394 BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, 1395 BackgroundPosition.DEFAULT, 1396 new BackgroundSize(AUTO, AUTO, true, true, false, false)); 1397 assertEquals(expected, image); 1398 } 1399 1400 1401 /************************************************************************** 1402 * * 1403 * Stroke Border tests * 1404 * * 1405 * These include -fx-border-color, -fx-border-style, and * 1406 * -fx-border-width properties. * 1407 * * 1408 *************************************************************************/ 1409 1410 @Test public void borderStrokeStyleIsNull() { 1411 region.setStyle("-fx-border-style: null;"); 1412 processCSS(); 1413 1414 assertEquals(new Insets(0), region.getPadding()); 1415 assertNull(region.getBackground()); 1416 assertNull(region.getBorder()); 1417 } 1418 1419 @Ignore("-fx-border-style-top is not supported") 1420 @Test public void borderStyle_top() { 1421 region.setStyle("-fx-border-style-top: solid;"); 1422 processCSS(); 1423 1424 assertEquals(0, region.getBackground().getFills().size(), 0); 1425 assertEquals(0, region.getBackground().getImages().size(), 0); 1426 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1427 assertEquals(0, region.getBorder().getImages().size(), 0); 1428 1429 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1430 BorderStroke expected = new BorderStroke( 1431 Color.BLACK, Color.BLACK, Color.BLACK, Color.BLACK, 1432 BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, 1433 null, null, Insets.EMPTY); 1434 assertEquals(expected, stroke); 1435 } 1436 1437 @Ignore("-fx-border-style-right is not supported") 1438 @Test public void borderStyle_right() { 1439 region.setStyle("-fx-border-style-right: solid;"); 1440 processCSS(); 1441 1442 assertEquals(0, region.getBackground().getFills().size(), 0); 1443 assertEquals(0, region.getBackground().getImages().size(), 0); 1444 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1445 assertEquals(0, region.getBorder().getImages().size(), 0); 1446 1447 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1448 BorderStroke expected = new BorderStroke( 1449 Color.BLACK, Color.BLACK, Color.BLACK, Color.BLACK, 1450 BorderStrokeStyle.NONE, BorderStrokeStyle.SOLID, BorderStrokeStyle.NONE, BorderStrokeStyle.SOLID, 1451 null, null, Insets.EMPTY); 1452 assertEquals(expected, stroke); 1453 } 1454 1455 @Ignore("-fx-border-style-bottom is not supported") 1456 @Test public void borderStyle_bottom() { 1457 region.setStyle("-fx-border-style-bottom: solid;"); 1458 processCSS(); 1459 1460 assertEquals(0, region.getBackground().getFills().size(), 0); 1461 assertEquals(0, region.getBackground().getImages().size(), 0); 1462 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1463 assertEquals(0, region.getBorder().getImages().size(), 0); 1464 1465 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1466 BorderStroke expected = new BorderStroke( 1467 Color.BLACK, Color.BLACK, Color.BLACK, Color.BLACK, 1468 BorderStrokeStyle.NONE, BorderStrokeStyle.NONE, BorderStrokeStyle.SOLID, BorderStrokeStyle.NONE, 1469 null, null, Insets.EMPTY); 1470 assertEquals(expected, stroke); 1471 } 1472 1473 @Ignore("-fx-border-style-left is not supported") 1474 @Test public void borderStyle_left() { 1475 region.setStyle("-fx-border-style-left: solid;"); 1476 processCSS(); 1477 1478 assertEquals(0, region.getBackground().getFills().size(), 0); 1479 assertEquals(0, region.getBackground().getImages().size(), 0); 1480 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1481 assertEquals(0, region.getBorder().getImages().size(), 0); 1482 1483 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1484 BorderStroke expected = new BorderStroke( 1485 Color.BLACK, Color.BLACK, Color.BLACK, Color.BLACK, 1486 BorderStrokeStyle.NONE, BorderStrokeStyle.NONE, BorderStrokeStyle.NONE, BorderStrokeStyle.SOLID, 1487 null, null, Insets.EMPTY); 1488 assertEquals(expected, stroke); 1489 } 1490 1491 @Ignore("-fx-border-style-top and -fx-border-style-right are not supported") 1492 @Test public void borderStyle_top_right() { 1493 region.setStyle( 1494 "-fx-border-style-top: solid;" + 1495 "-fx-border-style-right: dashed;"); 1496 processCSS(); 1497 1498 assertEquals(0, region.getBackground().getFills().size(), 0); 1499 assertEquals(0, region.getBackground().getImages().size(), 0); 1500 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1501 assertEquals(0, region.getBorder().getImages().size(), 0); 1502 1503 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1504 BorderStroke expected = new BorderStroke( 1505 Color.BLACK, Color.BLACK, Color.BLACK, Color.BLACK, 1506 BorderStrokeStyle.SOLID, BorderStrokeStyle.DASHED, BorderStrokeStyle.SOLID, BorderStrokeStyle.DASHED, 1507 null, null, Insets.EMPTY); 1508 assertEquals(expected, stroke); 1509 } 1510 1511 @Ignore("-fx-border-style-top and -fx-border-style-bottom are not supported") 1512 @Test public void borderStyle_bottom_top() { 1513 region.setStyle( 1514 "-fx-border-style-top: solid;" + 1515 "-fx-border-style-bottom: dashed;"); 1516 processCSS(); 1517 1518 assertEquals(0, region.getBackground().getFills().size(), 0); 1519 assertEquals(0, region.getBackground().getImages().size(), 0); 1520 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1521 assertEquals(0, region.getBorder().getImages().size(), 0); 1522 1523 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1524 BorderStroke expected = new BorderStroke( 1525 Color.BLACK, Color.BLACK, Color.BLACK, Color.BLACK, 1526 BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.DASHED, BorderStrokeStyle.SOLID, 1527 null, null, Insets.EMPTY); 1528 assertEquals(expected, stroke); 1529 } 1530 1531 @Ignore("-fx-border-style-bottom and -fx-border-style-left are not supported") 1532 @Test public void borderStyle_left_bottom() { 1533 region.setStyle( 1534 "-fx-border-style-bottom: solid;" + 1535 "-fx-border-style-left: dashed;"); 1536 processCSS(); 1537 1538 assertEquals(0, region.getBackground().getFills().size(), 0); 1539 assertEquals(0, region.getBackground().getImages().size(), 0); 1540 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1541 assertEquals(0, region.getBorder().getImages().size(), 0); 1542 1543 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1544 BorderStroke expected = new BorderStroke( 1545 Color.BLACK, Color.BLACK, Color.BLACK, Color.BLACK, 1546 BorderStrokeStyle.NONE, BorderStrokeStyle.NONE, BorderStrokeStyle.SOLID, BorderStrokeStyle.DASHED, 1547 null, null, Insets.EMPTY); 1548 assertEquals(expected, stroke); 1549 } 1550 1551 @Test public void borderStyle_none() { 1552 region.setStyle("-fx-border-style: none;"); 1553 processCSS(); 1554 1555 assertEquals(new Insets(0), region.getPadding()); 1556 assertNull(region.getBackground()); 1557 assertNull(region.getBorder()); 1558 } 1559 1560 @Test public void borderStyle_hidden() { 1561 region.setStyle("-fx-border-style: hidden;"); 1562 processCSS(); 1563 1564 assertEquals(new Insets(0), region.getPadding()); 1565 assertNull(region.getBackground()); 1566 assertNull(region.getBorder()); 1567 } 1568 1569 @Test public void borderStyle_dotted() { 1570 region.setStyle("-fx-border-color: black; -fx-border-style: dotted;"); 1571 processCSS(); 1572 1573 assertNull(region.getBackground()); 1574 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1575 assertEquals(0, region.getBorder().getImages().size(), 0); 1576 1577 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1578 BorderStroke expected = new BorderStroke( 1579 Color.BLACK, BorderStrokeStyle.DOTTED, 1580 null, null); 1581 assertEquals(expected, stroke); 1582 } 1583 1584 // border-style: dashed 1585 @Test public void borderStyle_dashed() { 1586 region.setStyle("-fx-border-color: black; -fx-border-style: dashed;"); 1587 processCSS(); 1588 1589 assertNull(region.getBackground()); 1590 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1591 assertEquals(0, region.getBorder().getImages().size(), 0); 1592 1593 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1594 BorderStroke expected = new BorderStroke( 1595 Color.BLACK, BorderStrokeStyle.DASHED, 1596 null, null); 1597 assertEquals(expected, stroke); 1598 } 1599 1600 @Test public void borderStyle_solid() { 1601 region.setStyle("-fx-border-color: black; -fx-border-style: solid;"); 1602 processCSS(); 1603 1604 assertNull(region.getBackground()); 1605 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1606 assertEquals(0, region.getBorder().getImages().size(), 0); 1607 1608 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1609 BorderStroke expected = new BorderStroke( 1610 Color.BLACK, BorderStrokeStyle.SOLID, 1611 null, null); 1612 assertEquals(expected, stroke); 1613 } 1614 1615 @Ignore ("double not supported yet") 1616 @Test public void borderStyle_double() { 1617 region.setStyle("-fx-border-color: black; -fx-border-style: double;"); 1618 processCSS(); 1619 1620 assertEquals(0, region.getBackground().getFills().size(), 0); 1621 assertEquals(0, region.getBackground().getImages().size(), 0); 1622 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1623 assertEquals(0, region.getBorder().getImages().size(), 0); 1624 1625 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1626 // BorderStroke expected = new BorderStroke( 1627 // Color.BLACK, BorderStrokeStyle.DOUBLE, 1628 // null, null); 1629 // assertEquals(expected, stroke); 1630 } 1631 1632 @Ignore ("groove not supported yet") 1633 @Test public void borderStyle_groove() { 1634 region.setStyle("-fx-border-color: black; -fx-border-style: groove;"); 1635 processCSS(); 1636 1637 assertEquals(0, region.getBackground().getFills().size(), 0); 1638 assertEquals(0, region.getBackground().getImages().size(), 0); 1639 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1640 assertEquals(0, region.getBorder().getImages().size(), 0); 1641 1642 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1643 // BorderStroke expected = new BorderStroke( 1644 // Color.BLACK, BorderStrokeStyle.GROOVE, 1645 // null, null); 1646 // assertEquals(expected, stroke); 1647 } 1648 1649 @Ignore ("ridge not supported yet") 1650 @Test public void borderStyle_ridge() { 1651 region.setStyle("-fx-border-color: black; -fx-border-style: ridge;"); 1652 processCSS(); 1653 1654 assertEquals(0, region.getBackground().getFills().size(), 0); 1655 assertEquals(0, region.getBackground().getImages().size(), 0); 1656 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1657 assertEquals(0, region.getBorder().getImages().size(), 0); 1658 1659 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1660 // BorderStroke expected = new BorderStroke( 1661 // Color.BLACK, BorderStrokeStyle.RIDGE, 1662 // null, null); 1663 // assertEquals(expected, stroke); 1664 } 1665 1666 @Ignore ("inset not supported yet") 1667 @Test public void borderStyle_inset() { 1668 region.setStyle("-fx-border-color: black; -fx-border-style: inset;"); 1669 processCSS(); 1670 1671 assertEquals(0, region.getBackground().getFills().size(), 0); 1672 assertEquals(0, region.getBackground().getImages().size(), 0); 1673 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1674 assertEquals(0, region.getBorder().getImages().size(), 0); 1675 1676 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1677 // BorderStroke expected = new BorderStroke( 1678 // Color.BLACK, BorderStrokeStyle.INSET, 1679 // null, null); 1680 // assertEquals(expected, stroke); 1681 } 1682 1683 @Ignore ("outset not supported yet") 1684 @Test public void borderStyle_outset() { 1685 region.setStyle("-fx-border-color: black; -fx-border-style: outset;"); 1686 processCSS(); 1687 1688 assertEquals(0, region.getBackground().getFills().size(), 0); 1689 assertEquals(0, region.getBackground().getImages().size(), 0); 1690 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1691 assertEquals(0, region.getBorder().getImages().size(), 0); 1692 1693 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1694 // BorderStroke expected = new BorderStroke( 1695 // Color.BLACK, BorderStrokeStyle.OUTSET, 1696 // null, null); 1697 // assertEquals(expected, stroke); 1698 } 1699 1700 @Test public void borderStyle_solid_dotted() { 1701 region.setStyle("-fx-border-color: black; -fx-border-style: solid dotted;"); 1702 processCSS(); 1703 1704 assertNull(region.getBackground()); 1705 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1706 assertEquals(0, region.getBorder().getImages().size(), 0); 1707 1708 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1709 BorderStroke expected = new BorderStroke( 1710 Color.BLACK, Color.BLACK, Color.BLACK, Color.BLACK, 1711 BorderStrokeStyle.SOLID, BorderStrokeStyle.DOTTED, BorderStrokeStyle.SOLID, BorderStrokeStyle.DOTTED, 1712 null, null, Insets.EMPTY); 1713 assertEquals(expected, stroke); 1714 } 1715 1716 @Test public void borderStyle_solid_dotted_dashed() { 1717 region.setStyle("-fx-border-color: black; -fx-border-style: solid dotted dashed;"); 1718 processCSS(); 1719 1720 assertNull(region.getBackground()); 1721 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1722 assertEquals(0, region.getBorder().getImages().size(), 0); 1723 1724 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1725 BorderStroke expected = new BorderStroke( 1726 Color.BLACK, Color.BLACK, Color.BLACK, Color.BLACK, 1727 BorderStrokeStyle.SOLID, BorderStrokeStyle.DOTTED, BorderStrokeStyle.DASHED, BorderStrokeStyle.DOTTED, 1728 null, null, Insets.EMPTY); 1729 assertEquals(expected, stroke); 1730 } 1731 1732 @Ignore ("ridge not supported yet") 1733 @Test public void borderStyle_solid_dotted_dashed_ridge() { 1734 region.setStyle("-fx-border-color: black; -fx-border-style: solid dotted dashed ridge;"); 1735 processCSS(); 1736 1737 assertEquals(0, region.getBackground().getFills().size(), 0); 1738 assertEquals(0, region.getBackground().getImages().size(), 0); 1739 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1740 assertEquals(0, region.getBorder().getImages().size(), 0); 1741 1742 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1743 // BorderStroke expected = new BorderStroke( 1744 // Color.BLACK, Color.BLACK, Color.BLACK, Color.BLACK, 1745 // BorderStrokeStyle.SOLID, BorderStrokeStyle.DOTTED, BorderStrokeStyle.DASHED, BorderStrokeStyle.RIDGE, 1746 // null, null, Insets.EMPTY); 1747 // assertEquals(expected, stroke); 1748 } 1749 1750 @Ignore ("-fx-border-width-top is not supported") 1751 @Test public void borderStrokeWidth_top() { 1752 region.setStyle( 1753 "-fx-border-color: black;" + 1754 "-fx-border-width-top: 10px;"); 1755 processCSS(); 1756 1757 assertEquals(0, region.getBackground().getFills().size(), 0); 1758 assertEquals(0, region.getBackground().getImages().size(), 0); 1759 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1760 assertEquals(0, region.getBorder().getImages().size(), 0); 1761 1762 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1763 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, null, new BorderWidths(10, 0, 0, 0)); 1764 assertEquals(expected, stroke); 1765 } 1766 1767 @Ignore ("-fx-border-width-right is not supported") 1768 @Test public void borderStrokeWidth_right() { 1769 region.setStyle( 1770 "-fx-border-color: black;" + 1771 "-fx-border-width-right: 10px;"); 1772 processCSS(); 1773 1774 assertEquals(0, region.getBackground().getFills().size(), 0); 1775 assertEquals(0, region.getBackground().getImages().size(), 0); 1776 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1777 assertEquals(0, region.getBorder().getImages().size(), 0); 1778 1779 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1780 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, null, new BorderWidths(0, 10, 0, 0)); 1781 assertEquals(expected, stroke); 1782 } 1783 1784 @Ignore ("-fx-border-width-bottom is not supported") 1785 @Test public void borderStrokeWidth_bottom() { 1786 region.setStyle( 1787 "-fx-border-color: black;" + 1788 "-fx-border-width-bottom: 10px;"); 1789 processCSS(); 1790 1791 assertEquals(0, region.getBackground().getFills().size(), 0); 1792 assertEquals(0, region.getBackground().getImages().size(), 0); 1793 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1794 assertEquals(0, region.getBorder().getImages().size(), 0); 1795 1796 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1797 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, null, new BorderWidths(0, 0, 10, 0)); 1798 assertEquals(expected, stroke); 1799 } 1800 1801 @Ignore ("-fx-border-width-left is not supported") 1802 @Test public void borderStrokeWidth_left() { 1803 region.setStyle( 1804 "-fx-border-color: black;" + 1805 "-fx-border-width-left: 10px;"); 1806 processCSS(); 1807 1808 assertEquals(0, region.getBackground().getFills().size(), 0); 1809 assertEquals(0, region.getBackground().getImages().size(), 0); 1810 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1811 assertEquals(0, region.getBorder().getImages().size(), 0); 1812 1813 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1814 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, null, new BorderWidths(0, 0, 0, 10)); 1815 assertEquals(expected, stroke); 1816 } 1817 1818 @Ignore ("-fx-border-width-top and -fx-border-width-right are not supported") 1819 @Test public void borderStrokeWidth_top_right() { 1820 region.setStyle( 1821 "-fx-border-color: black;" + 1822 "-fx-border-width-top: 10px;" + 1823 "-fx-border-width-right: 20px;"); 1824 processCSS(); 1825 1826 assertEquals(0, region.getBackground().getFills().size(), 0); 1827 assertEquals(0, region.getBackground().getImages().size(), 0); 1828 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1829 assertEquals(0, region.getBorder().getImages().size(), 0); 1830 1831 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1832 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, null, new BorderWidths(10, 20, 0, 0)); 1833 assertEquals(expected, stroke); 1834 } 1835 1836 @Ignore ("-fx-border-width-top and -fx-border-width-bottom are not supported") 1837 @Test public void borderStrokeWidth_top_bottom() { 1838 region.setStyle( 1839 "-fx-border-color: black;" + 1840 "-fx-border-width-top: 10px;" + 1841 "-fx-border-width-bottom: 20px;"); 1842 processCSS(); 1843 1844 assertEquals(0, region.getBackground().getFills().size(), 0); 1845 assertEquals(0, region.getBackground().getImages().size(), 0); 1846 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1847 assertEquals(0, region.getBorder().getImages().size(), 0); 1848 1849 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1850 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, null, new BorderWidths(10, 0, 20, 0)); 1851 assertEquals(expected, stroke); 1852 } 1853 1854 @Ignore ("-fx-border-width-left and -fx-border-width-bottom are not supported") 1855 @Test public void borderStrokeWidth_left_bottom() { 1856 region.setStyle( 1857 "-fx-border-color: black;" + 1858 "-fx-border-width-left: 10px;" + 1859 "-fx-border-width-bottom: 20px;"); 1860 processCSS(); 1861 1862 assertEquals(0, region.getBackground().getFills().size(), 0); 1863 assertEquals(0, region.getBackground().getImages().size(), 0); 1864 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1865 assertEquals(0, region.getBorder().getImages().size(), 0); 1866 1867 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1868 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, null, new BorderWidths(0, 0, 20, 10)); 1869 assertEquals(expected, stroke); 1870 } 1871 1872 @Test public void borderStrokeWidth2() { 1873 region.setStyle( 1874 "-fx-border-color: black;" + 1875 "-fx-border-width: 1px 2px;"); 1876 processCSS(); 1877 1878 assertNull(region.getBackground()); 1879 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1880 assertEquals(0, region.getBorder().getImages().size(), 0); 1881 1882 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1883 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, null, new BorderWidths(1, 2, 1, 2)); 1884 assertEquals(expected, stroke); 1885 } 1886 1887 @Test public void borderStrokeWidth3() { 1888 region.setStyle( 1889 "-fx-border-color: black;" + 1890 "-fx-border-width: 1px 2px 3px;"); 1891 processCSS(); 1892 1893 assertNull(region.getBackground()); 1894 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1895 assertEquals(0, region.getBorder().getImages().size(), 0); 1896 1897 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1898 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, null, new BorderWidths(1, 2, 3, 2)); 1899 assertEquals(expected, stroke); 1900 } 1901 1902 @Test public void borderStrokeWidth4() { 1903 region.setStyle( 1904 "-fx-border-color: black;" + 1905 "-fx-border-width: 1px 2px 3px 4px;"); 1906 processCSS(); 1907 1908 assertNull(region.getBackground()); 1909 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1910 assertEquals(0, region.getBorder().getImages().size(), 0); 1911 1912 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1913 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, null, new BorderWidths(1, 2, 3, 4)); 1914 assertEquals(expected, stroke); 1915 } 1916 1917 @Ignore("thin keyword is not supported") 1918 @Test public void borderStrokeWidth_thin() { 1919 region.setStyle( 1920 "-fx-border-color: black;" + 1921 "-fx-border-width: thin;"); 1922 processCSS(); 1923 1924 assertEquals(0, region.getBackground().getFills().size(), 0); 1925 assertEquals(0, region.getBackground().getImages().size(), 0); 1926 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1927 assertEquals(0, region.getBorder().getImages().size(), 0); 1928 1929 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1930 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, null, new BorderWidths(1, 1, 1, 1)); 1931 assertEquals(expected, stroke); 1932 } 1933 1934 @Ignore("thick keyword is not supported") 1935 @Test public void borderStrokeWidth_thick() { 1936 region.setStyle( 1937 "-fx-border-color: black;" + 1938 "-fx-border-width: thick;"); 1939 processCSS(); 1940 1941 assertEquals(0, region.getBackground().getFills().size(), 0); 1942 assertEquals(0, region.getBackground().getImages().size(), 0); 1943 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1944 assertEquals(0, region.getBorder().getImages().size(), 0); 1945 1946 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1947 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, null, new BorderWidths(5, 5, 5, 5)); 1948 assertEquals(expected, stroke); 1949 } 1950 1951 @Ignore("medium keyword is not supported") 1952 @Test public void borderStrokeWidth_medium() { 1953 region.setStyle( 1954 "-fx-border-color: black;" + 1955 "-fx-border-width: medium;"); 1956 processCSS(); 1957 1958 assertEquals(0, region.getBackground().getFills().size(), 0); 1959 assertEquals(0, region.getBackground().getImages().size(), 0); 1960 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1961 assertEquals(0, region.getBorder().getImages().size(), 0); 1962 1963 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1964 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, null, new BorderWidths(3, 3, 3, 3)); 1965 assertEquals(expected, stroke); 1966 } 1967 1968 @Ignore("thin, medium, and thick keywords are not supported") 1969 @Test public void borderStrokeWidth_thin_medium_thick() { 1970 region.setStyle( 1971 "-fx-border-color: black;" + 1972 "-fx-border-width: thin medium thick;"); 1973 processCSS(); 1974 1975 assertEquals(0, region.getBackground().getFills().size(), 0); 1976 assertEquals(0, region.getBackground().getImages().size(), 0); 1977 assertEquals(1, region.getBorder().getStrokes().size(), 0); 1978 assertEquals(0, region.getBorder().getImages().size(), 0); 1979 1980 BorderStroke stroke = region.getBorder().getStrokes().get(0); 1981 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, null, new BorderWidths(1, 3, 5, 3)); 1982 assertEquals(expected, stroke); 1983 } 1984 1985 // TODO example 20 1986 // TODO example 21 1987 1988 // TODO!! The initial width of a border is MEDIUM, NOT 0! 1989 1990 @Ignore("-fx-border-top-left-radius not supported") 1991 @Test public void borderStrokeRadius_topLeft1() { 1992 region.setStyle( 1993 "-fx-border-color: black;" + 1994 "-fx-border-top-left-radius: 5px;"); 1995 processCSS(); 1996 1997 assertEquals(0, region.getBackground().getFills().size(), 0); 1998 assertEquals(0, region.getBackground().getImages().size(), 0); 1999 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2000 assertEquals(0, region.getBorder().getImages().size(), 0); 2001 2002 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2003 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2004 new CornerRadii(5, 0, 0, 0, false), BorderStroke.DEFAULT_WIDTHS); 2005 assertEquals(expected, stroke); 2006 } 2007 2008 @Ignore("-fx-border-top-left-radius not supported") 2009 @Test public void borderStrokeRadius_topLeft2() { 2010 region.setStyle( 2011 "-fx-border-color: black;" + 2012 "-fx-border-top-left-radius: 5px, 10px;"); 2013 processCSS(); 2014 2015 assertEquals(0, region.getBackground().getFills().size(), 0); 2016 assertEquals(0, region.getBackground().getImages().size(), 0); 2017 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2018 assertEquals(0, region.getBorder().getImages().size(), 0); 2019 2020 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2021 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2022 new CornerRadii( 2023 5, 10, // top left 2024 0, 0, // top right 2025 0, 0, // bottom right 2026 0, 0, // bottom left 2027 false, false, // top left as percent 2028 false, false, // top right as percent 2029 false, false, // bottom right as percent 2030 false, false), // bottom left as percent 2031 BorderStroke.DEFAULT_WIDTHS); 2032 assertEquals(expected, stroke); 2033 } 2034 2035 @Ignore("-fx-border-top-left-radius not supported") 2036 @Test public void borderStrokeRadius_topLeft3() { 2037 region.setStyle( 2038 "-fx-border-color: black;" + 2039 "-fx-border-top-left-radius: 5%;"); 2040 processCSS(); 2041 2042 assertEquals(0, region.getBackground().getFills().size(), 0); 2043 assertEquals(0, region.getBackground().getImages().size(), 0); 2044 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2045 assertEquals(0, region.getBorder().getImages().size(), 0); 2046 2047 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2048 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2049 new CornerRadii( 2050 5, 5, // top left 2051 0, 0, // top right 2052 0, 0, // bottom right 2053 0, 0, // bottom left 2054 true, true, // top left as percent 2055 false, false, // top right as percent 2056 false, false, // bottom right as percent 2057 false, false), // bottom left as percent 2058 BorderStroke.DEFAULT_WIDTHS); 2059 assertEquals(expected, stroke); 2060 } 2061 2062 @Ignore("-fx-border-top-left-radius not supported") 2063 @Test public void borderStrokeRadius_topLeft4() { 2064 region.setStyle( 2065 "-fx-border-color: black;" + 2066 "-fx-border-top-left-radius: 5%, 10%;"); 2067 processCSS(); 2068 2069 assertEquals(0, region.getBackground().getFills().size(), 0); 2070 assertEquals(0, region.getBackground().getImages().size(), 0); 2071 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2072 assertEquals(0, region.getBorder().getImages().size(), 0); 2073 2074 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2075 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2076 new CornerRadii( 2077 5, 10, // top left 2078 0, 0, // top right 2079 0, 0, // bottom right 2080 0, 0, // bottom left 2081 true, true, // top left as percent 2082 false, false, // top right as percent 2083 false, false, // bottom right as percent 2084 false, false), // bottom left as percent 2085 BorderStroke.DEFAULT_WIDTHS); 2086 assertEquals(expected, stroke); 2087 } 2088 2089 @Ignore("-fx-border-top-left-radius not supported") 2090 @Test public void borderStrokeRadius_topLeft5() { 2091 region.setStyle( 2092 "-fx-border-color: black;" + 2093 "-fx-border-top-left-radius: 5% 10px;"); 2094 processCSS(); 2095 2096 assertEquals(0, region.getBackground().getFills().size(), 0); 2097 assertEquals(0, region.getBackground().getImages().size(), 0); 2098 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2099 assertEquals(0, region.getBorder().getImages().size(), 0); 2100 2101 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2102 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2103 new CornerRadii( 2104 5, 10, // top left 2105 0, 0, // top right 2106 0, 0, // bottom right 2107 0, 0, // bottom left 2108 true, false, // top left as percent 2109 false, false, // top right as percent 2110 false, false, // bottom right as percent 2111 false, false), // bottom left as percent 2112 BorderStroke.DEFAULT_WIDTHS); 2113 assertEquals(expected, stroke); 2114 } 2115 2116 @Ignore("-fx-border-top-left-radius not supported") 2117 @Test public void borderStrokeRadius_topLeft6() { 2118 region.setStyle( 2119 "-fx-border-color: black;" + 2120 "-fx-border-top-left-radius: 5px, 10%;"); 2121 processCSS(); 2122 2123 assertEquals(0, region.getBackground().getFills().size(), 0); 2124 assertEquals(0, region.getBackground().getImages().size(), 0); 2125 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2126 assertEquals(0, region.getBorder().getImages().size(), 0); 2127 2128 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2129 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2130 new CornerRadii( 2131 5, 10, // top left 2132 0, 0, // top right 2133 0, 0, // bottom right 2134 0, 0, // bottom left 2135 false, true, // top left as percent 2136 false, false, // top right as percent 2137 false, false, // bottom right as percent 2138 false, false), // bottom left as percent 2139 BorderStroke.DEFAULT_WIDTHS); 2140 assertEquals(expected, stroke); 2141 } 2142 2143 @Ignore("-fx-border-top-right-radius not supported") 2144 @Test public void borderStrokeRadius_topRight1() { 2145 region.setStyle( 2146 "-fx-border-color: black;" + 2147 "-fx-border-top-right-radius: 5px;"); 2148 processCSS(); 2149 2150 assertEquals(0, region.getBackground().getFills().size(), 0); 2151 assertEquals(0, region.getBackground().getImages().size(), 0); 2152 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2153 assertEquals(0, region.getBorder().getImages().size(), 0); 2154 2155 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2156 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2157 new CornerRadii(0, 5, 0, 0, false), BorderStroke.DEFAULT_WIDTHS); 2158 assertEquals(expected, stroke); 2159 } 2160 2161 @Ignore("-fx-border-top-right-radius not supported") 2162 @Test public void borderStrokeRadius_topRight2() { 2163 region.setStyle( 2164 "-fx-border-color: black;" + 2165 "-fx-border-top-right-radius: 5px, 10px;"); 2166 processCSS(); 2167 2168 assertEquals(0, region.getBackground().getFills().size(), 0); 2169 assertEquals(0, region.getBackground().getImages().size(), 0); 2170 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2171 assertEquals(0, region.getBorder().getImages().size(), 0); 2172 2173 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2174 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2175 new CornerRadii( 2176 0, 0, // top left 2177 5, 10, // top right 2178 0, 0, // bottom right 2179 0, 0, // bottom left 2180 false, false, // top left as percent 2181 false, false, // top right as percent 2182 false, false, // bottom right as percent 2183 false, false), // bottom left as percent 2184 BorderStroke.DEFAULT_WIDTHS); 2185 assertEquals(expected, stroke); 2186 } 2187 2188 @Ignore("-fx-border-top-right-radius not supported") 2189 @Test public void borderStrokeRadius_topRight3() { 2190 region.setStyle( 2191 "-fx-border-color: black;" + 2192 "-fx-border-top-right-radius: 5%;"); 2193 processCSS(); 2194 2195 assertEquals(0, region.getBackground().getFills().size(), 0); 2196 assertEquals(0, region.getBackground().getImages().size(), 0); 2197 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2198 assertEquals(0, region.getBorder().getImages().size(), 0); 2199 2200 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2201 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2202 new CornerRadii( 2203 0, 0, // top left 2204 5, 5, // top right 2205 0, 0, // bottom right 2206 0, 0, // bottom left 2207 false, false, // top left as percent 2208 true, true, // top right as percent 2209 false, false, // bottom right as percent 2210 false, false), // bottom left as percent 2211 BorderStroke.DEFAULT_WIDTHS); 2212 assertEquals(expected, stroke); 2213 } 2214 2215 @Ignore("-fx-border-top-right-radius not supported") 2216 @Test public void borderStrokeRadius_topRight4() { 2217 region.setStyle( 2218 "-fx-border-color: black;" + 2219 "-fx-border-top-right-radius: 5%, 10%;"); 2220 processCSS(); 2221 2222 assertEquals(0, region.getBackground().getFills().size(), 0); 2223 assertEquals(0, region.getBackground().getImages().size(), 0); 2224 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2225 assertEquals(0, region.getBorder().getImages().size(), 0); 2226 2227 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2228 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2229 new CornerRadii( 2230 0, 0, // top left 2231 5, 10, // top right 2232 0, 0, // bottom right 2233 0, 0, // bottom left 2234 false, false, // top left as percent 2235 true, true, // top right as percent 2236 false, false, // bottom right as percent 2237 false, false), // bottom left as percent 2238 BorderStroke.DEFAULT_WIDTHS); 2239 assertEquals(expected, stroke); 2240 } 2241 2242 @Ignore("-fx-border-top-right-radius not supported") 2243 @Test public void borderStrokeRadius_topRight5() { 2244 region.setStyle( 2245 "-fx-border-color: black;" + 2246 "-fx-border-top-right-radius: 5% 10px;"); 2247 processCSS(); 2248 2249 assertEquals(0, region.getBackground().getFills().size(), 0); 2250 assertEquals(0, region.getBackground().getImages().size(), 0); 2251 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2252 assertEquals(0, region.getBorder().getImages().size(), 0); 2253 2254 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2255 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2256 new CornerRadii( 2257 0, 0, // top left 2258 5, 10, // top right 2259 0, 0, // bottom right 2260 0, 0, // bottom left 2261 false, false, // top left as percent 2262 true, false, // top right as percent 2263 false, false, // bottom right as percent 2264 false, false), // bottom left as percent 2265 BorderStroke.DEFAULT_WIDTHS); 2266 assertEquals(expected, stroke); 2267 } 2268 2269 @Ignore("-fx-border-top-right-radius not supported") 2270 @Test public void borderStrokeRadius_topRight6() { 2271 region.setStyle( 2272 "-fx-border-color: black;" + 2273 "-fx-border-top-right-radius: 5px, 10%;"); 2274 processCSS(); 2275 2276 assertEquals(0, region.getBackground().getFills().size(), 0); 2277 assertEquals(0, region.getBackground().getImages().size(), 0); 2278 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2279 assertEquals(0, region.getBorder().getImages().size(), 0); 2280 2281 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2282 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2283 new CornerRadii( 2284 0, 0, // top left 2285 5, 10, // top right 2286 0, 0, // bottom right 2287 0, 0, // bottom left 2288 false, false, // top left as percent 2289 false, true, // top right as percent 2290 false, false, // bottom right as percent 2291 false, false), // bottom left as percent 2292 BorderStroke.DEFAULT_WIDTHS); 2293 assertEquals(expected, stroke); 2294 } 2295 2296 @Ignore("-fx-border-bottom-right-radius not supported") 2297 @Test public void borderStrokeRadius_bottomRight1() { 2298 region.setStyle( 2299 "-fx-border-color: black;" + 2300 "-fx-border-bottom-right-radius: 5px;"); 2301 processCSS(); 2302 2303 assertEquals(0, region.getBackground().getFills().size(), 0); 2304 assertEquals(0, region.getBackground().getImages().size(), 0); 2305 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2306 assertEquals(0, region.getBorder().getImages().size(), 0); 2307 2308 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2309 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2310 new CornerRadii(0, 0, 5, 0, false), BorderStroke.DEFAULT_WIDTHS); 2311 assertEquals(expected, stroke); 2312 } 2313 2314 @Ignore("-fx-border-bottom-right-radius not supported") 2315 @Test public void borderStrokeRadius_bottomRight2() { 2316 region.setStyle( 2317 "-fx-border-color: black;" + 2318 "-fx-border-bottom-right-radius: 5px, 10px;"); 2319 processCSS(); 2320 2321 assertEquals(0, region.getBackground().getFills().size(), 0); 2322 assertEquals(0, region.getBackground().getImages().size(), 0); 2323 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2324 assertEquals(0, region.getBorder().getImages().size(), 0); 2325 2326 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2327 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2328 new CornerRadii( 2329 0, 0, // top left 2330 0, 0, // top right 2331 5, 10, // bottom right 2332 0, 0, // bottom left 2333 false, false, // top left as percent 2334 false, false, // top right as percent 2335 false, false, // bottom right as percent 2336 false, false), // bottom left as percent 2337 BorderStroke.DEFAULT_WIDTHS); 2338 assertEquals(expected, stroke); 2339 } 2340 2341 @Ignore("-fx-border-bottom-right-radius not supported") 2342 @Test public void borderStrokeRadius_bottomRight3() { 2343 region.setStyle( 2344 "-fx-border-color: black;" + 2345 "-fx-border-bottom-right-radius: 5%;"); 2346 processCSS(); 2347 2348 assertEquals(0, region.getBackground().getFills().size(), 0); 2349 assertEquals(0, region.getBackground().getImages().size(), 0); 2350 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2351 assertEquals(0, region.getBorder().getImages().size(), 0); 2352 2353 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2354 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2355 new CornerRadii( 2356 0, 0, // top left 2357 0, 0, // top right 2358 5, 5, // bottom right 2359 0, 0, // bottom left 2360 false, false, // top left as percent 2361 false, false, // top right as percent 2362 true, true, // bottom right as percent 2363 false, false), // bottom left as percent 2364 BorderStroke.DEFAULT_WIDTHS); 2365 assertEquals(expected, stroke); 2366 } 2367 2368 @Ignore("-fx-border-bottom-right-radius not supported") 2369 @Test public void borderStrokeRadius_bottomRight4() { 2370 region.setStyle( 2371 "-fx-border-color: black;" + 2372 "-fx-border-bottom-right-radius: 5%, 10%;"); 2373 processCSS(); 2374 2375 assertEquals(0, region.getBackground().getFills().size(), 0); 2376 assertEquals(0, region.getBackground().getImages().size(), 0); 2377 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2378 assertEquals(0, region.getBorder().getImages().size(), 0); 2379 2380 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2381 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2382 new CornerRadii( 2383 0, 0, // top left 2384 0, 0, // top right 2385 5, 10, // bottom right 2386 0, 0, // bottom left 2387 false, false, // top left as percent 2388 false, false, // top right as percent 2389 true, true, // bottom right as percent 2390 false, false), // bottom left as percent 2391 BorderStroke.DEFAULT_WIDTHS); 2392 assertEquals(expected, stroke); 2393 } 2394 2395 @Ignore("-fx-border-bottom-right-radius not supported") 2396 @Test public void borderStrokeRadius_bottomRight5() { 2397 region.setStyle( 2398 "-fx-border-color: black;" + 2399 "-fx-border-bottom-right-radius: 5% 10px;"); 2400 processCSS(); 2401 2402 assertEquals(0, region.getBackground().getFills().size(), 0); 2403 assertEquals(0, region.getBackground().getImages().size(), 0); 2404 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2405 assertEquals(0, region.getBorder().getImages().size(), 0); 2406 2407 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2408 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2409 new CornerRadii( 2410 0, 0, // top left 2411 0, 0, // top right 2412 5, 10, // bottom right 2413 0, 0, // bottom left 2414 false, false, // top left as percent 2415 false, false, // top right as percent 2416 true, false, // bottom right as percent 2417 false, false), // bottom left as percent 2418 BorderStroke.DEFAULT_WIDTHS); 2419 assertEquals(expected, stroke); 2420 } 2421 2422 @Ignore("-fx-border-bottom-right-radius not supported") 2423 @Test public void borderStrokeRadius_bottomRight6() { 2424 region.setStyle( 2425 "-fx-border-color: black;" + 2426 "-fx-border-bottom-right-radius: 5px, 10%;"); 2427 processCSS(); 2428 2429 assertEquals(0, region.getBackground().getFills().size(), 0); 2430 assertEquals(0, region.getBackground().getImages().size(), 0); 2431 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2432 assertEquals(0, region.getBorder().getImages().size(), 0); 2433 2434 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2435 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2436 new CornerRadii( 2437 0, 0, // top left 2438 0, 0, // top right 2439 5, 10, // bottom right 2440 0, 0, // bottom left 2441 false, false, // top left as percent 2442 false, false, // top right as percent 2443 false, true, // bottom right as percent 2444 false, false), // bottom left as percent 2445 BorderStroke.DEFAULT_WIDTHS); 2446 assertEquals(expected, stroke); 2447 } 2448 2449 @Ignore("-fx-border-bottom-left-radius not supported") 2450 @Test public void borderStrokeRadius_bottomLeft1() { 2451 region.setStyle( 2452 "-fx-border-color: black;" + 2453 "-fx-border-bottom-left-radius: 5px;"); 2454 processCSS(); 2455 2456 assertEquals(0, region.getBackground().getFills().size(), 0); 2457 assertEquals(0, region.getBackground().getImages().size(), 0); 2458 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2459 assertEquals(0, region.getBorder().getImages().size(), 0); 2460 2461 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2462 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2463 new CornerRadii(0, 0, 0, 5, false), BorderStroke.DEFAULT_WIDTHS); 2464 assertEquals(expected, stroke); 2465 } 2466 2467 @Ignore("-fx-border-bottom-left-radius not supported") 2468 @Test public void borderStrokeRadius_bottomLeft2() { 2469 region.setStyle( 2470 "-fx-border-color: black;" + 2471 "-fx-border-bottom-left-radius: 5px, 10px;"); 2472 processCSS(); 2473 2474 assertEquals(0, region.getBackground().getFills().size(), 0); 2475 assertEquals(0, region.getBackground().getImages().size(), 0); 2476 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2477 assertEquals(0, region.getBorder().getImages().size(), 0); 2478 2479 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2480 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2481 new CornerRadii( 2482 0, 0, // top left 2483 0, 0, // top right 2484 0, 0, // bottom right 2485 5, 10, // bottom left 2486 false, false, // top left as percent 2487 false, false, // top right as percent 2488 false, false, // bottom right as percent 2489 false, false), // bottom left as percent 2490 BorderStroke.DEFAULT_WIDTHS); 2491 assertEquals(expected, stroke); 2492 } 2493 2494 @Ignore("-fx-border-bottom-left-radius not supported") 2495 @Test public void borderStrokeRadius_bottomLeft3() { 2496 region.setStyle( 2497 "-fx-border-color: black;" + 2498 "-fx-border-bottom-left-radius: 5%;"); 2499 processCSS(); 2500 2501 assertEquals(0, region.getBackground().getFills().size(), 0); 2502 assertEquals(0, region.getBackground().getImages().size(), 0); 2503 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2504 assertEquals(0, region.getBorder().getImages().size(), 0); 2505 2506 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2507 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2508 new CornerRadii( 2509 0, 0, // top left 2510 0, 0, // top right 2511 0, 0, // bottom right 2512 5, 5, // bottom left 2513 false, false, // top left as percent 2514 false, false, // top right as percent 2515 false, false, // bottom right as percent 2516 true, true), // bottom left as percent 2517 BorderStroke.DEFAULT_WIDTHS); 2518 assertEquals(expected, stroke); 2519 } 2520 2521 @Ignore("-fx-border-bottom-left-radius not supported") 2522 @Test public void borderStrokeRadius_bottomLeft4() { 2523 region.setStyle( 2524 "-fx-border-color: black;" + 2525 "-fx-border-bottom-left-radius: 5%, 10%;"); 2526 processCSS(); 2527 2528 assertEquals(0, region.getBackground().getFills().size(), 0); 2529 assertEquals(0, region.getBackground().getImages().size(), 0); 2530 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2531 assertEquals(0, region.getBorder().getImages().size(), 0); 2532 2533 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2534 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2535 new CornerRadii( 2536 0, 0, // top left 2537 0, 0, // top right 2538 0, 0, // bottom right 2539 5, 10, // bottom left 2540 false, false, // top left as percent 2541 false, false, // top right as percent 2542 false, false, // bottom right as percent 2543 true, true), // bottom left as percent 2544 BorderStroke.DEFAULT_WIDTHS); 2545 assertEquals(expected, stroke); 2546 } 2547 2548 @Ignore("-fx-border-bottom-left-radius not supported") 2549 @Test public void borderStrokeRadius_bottomLeft5() { 2550 region.setStyle( 2551 "-fx-border-color: black;" + 2552 "-fx-border-bottom-left-radius: 5% 10px;"); 2553 processCSS(); 2554 2555 assertEquals(0, region.getBackground().getFills().size(), 0); 2556 assertEquals(0, region.getBackground().getImages().size(), 0); 2557 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2558 assertEquals(0, region.getBorder().getImages().size(), 0); 2559 2560 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2561 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2562 new CornerRadii( 2563 0, 0, // top left 2564 0, 0, // top right 2565 0, 0, // bottom right 2566 5, 10, // bottom left 2567 false, false, // top left as percent 2568 false, false, // top right as percent 2569 false, false, // bottom right as percent 2570 true, false), // bottom left as percent 2571 BorderStroke.DEFAULT_WIDTHS); 2572 assertEquals(expected, stroke); 2573 } 2574 2575 @Ignore("-fx-border-bottom-left-radius not supported") 2576 @Test public void borderStrokeRadius_bottomLeft6() { 2577 region.setStyle( 2578 "-fx-border-color: black;" + 2579 "-fx-border-bottom-left-radius: 5px, 10%;"); 2580 processCSS(); 2581 2582 assertEquals(0, region.getBackground().getFills().size(), 0); 2583 assertEquals(0, region.getBackground().getImages().size(), 0); 2584 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2585 assertEquals(0, region.getBorder().getImages().size(), 0); 2586 2587 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2588 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2589 new CornerRadii( 2590 0, 0, // top left 2591 0, 0, // top right 2592 0, 0, // bottom right 2593 5, 10, // bottom left 2594 false, false, // top left as percent 2595 false, false, // top right as percent 2596 false, false, // bottom right as percent 2597 false, true), // bottom left as percent 2598 BorderStroke.DEFAULT_WIDTHS); 2599 assertEquals(expected, stroke); 2600 } 2601 2602 @Ignore("-fx-border-top-left-radius and -fx-border-top-right-radius are not supported") 2603 @Test public void borderStrokeRadius_topLeft_topRight() { 2604 region.setStyle( 2605 "-fx-border-color: black;" + 2606 "-fx-border-top-left-radius: 5px 10%;" + 2607 "-fx-border-top-right-radius: 20px 30%;"); 2608 processCSS(); 2609 2610 assertEquals(0, region.getBackground().getFills().size(), 0); 2611 assertEquals(0, region.getBackground().getImages().size(), 0); 2612 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2613 assertEquals(0, region.getBorder().getImages().size(), 0); 2614 2615 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2616 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2617 new CornerRadii( 2618 5, 10, // top left 2619 20, 30, // top right 2620 0, 0, // bottom right 2621 0, 0, // bottom left 2622 false, true, // top left as percent 2623 false, true, // top right as percent 2624 false, false, // bottom right as percent 2625 false, false), // bottom left as percent 2626 BorderStroke.DEFAULT_WIDTHS); 2627 assertEquals(expected, stroke); 2628 } 2629 2630 @Test public void borderStrokeRadius1() { 2631 region.setStyle( 2632 "-fx-border-color: black;" + 2633 "-fx-border-radius: 5px;"); 2634 processCSS(); 2635 2636 assertNull(region.getBackground()); 2637 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2638 assertEquals(0, region.getBorder().getImages().size(), 0); 2639 2640 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2641 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2642 new CornerRadii(5, 5, 5, 5, false), 2643 BorderStroke.DEFAULT_WIDTHS); 2644 assertEquals(expected, stroke); 2645 } 2646 2647 @Test public void borderStrokeRadius1_Percent() { 2648 region.setStyle( 2649 "-fx-border-color: black;" + 2650 "-fx-border-radius: 5%;"); 2651 processCSS(); 2652 2653 assertNull(region.getBackground()); 2654 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2655 assertEquals(0, region.getBorder().getImages().size(), 0); 2656 2657 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2658 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2659 new CornerRadii(.05, .05, .05, .05, true), 2660 BorderStroke.DEFAULT_WIDTHS); 2661 assertEquals(expected, stroke); 2662 } 2663 2664 @Test public void borderStrokeRadius2() { 2665 region.setStyle( 2666 "-fx-border-color: black;" + 2667 "-fx-border-radius: 5px 10px;"); 2668 processCSS(); 2669 2670 assertNull(region.getBackground()); 2671 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2672 assertEquals(0, region.getBorder().getImages().size(), 0); 2673 2674 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2675 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2676 new CornerRadii(5, 10, 5, 10, false), 2677 BorderStroke.DEFAULT_WIDTHS); 2678 assertEquals(expected, stroke); 2679 } 2680 2681 @Test public void borderStrokeRadius2_Percent() { 2682 region.setStyle( 2683 "-fx-border-color: black;" + 2684 "-fx-border-radius: 5% 10%;"); 2685 processCSS(); 2686 2687 assertNull(region.getBackground()); 2688 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2689 assertEquals(0, region.getBorder().getImages().size(), 0); 2690 2691 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2692 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2693 new CornerRadii(.05, .10, .05, .10, true), 2694 BorderStroke.DEFAULT_WIDTHS); 2695 assertEquals(expected, stroke); 2696 } 2697 2698 @Test public void borderStrokeRadius3() { 2699 region.setStyle( 2700 "-fx-border-color: black;" + 2701 "-fx-border-radius: 5px 10px 15px;"); 2702 processCSS(); 2703 2704 assertNull(region.getBackground()); 2705 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2706 assertEquals(0, region.getBorder().getImages().size(), 0); 2707 2708 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2709 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2710 new CornerRadii(5, 10, 15, 10, false), 2711 BorderStroke.DEFAULT_WIDTHS); 2712 assertEquals(expected, stroke); 2713 } 2714 2715 @Test public void borderStrokeRadius3_Percent() { 2716 region.setStyle( 2717 "-fx-border-color: black;" + 2718 "-fx-border-radius: 5% 10% 15%;"); 2719 processCSS(); 2720 2721 assertNull(region.getBackground()); 2722 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2723 assertEquals(0, region.getBorder().getImages().size(), 0); 2724 2725 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2726 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2727 new CornerRadii(.05, .10, .15, .10, true), 2728 BorderStroke.DEFAULT_WIDTHS); 2729 assertEquals(expected, stroke); 2730 } 2731 2732 @Test public void borderStrokeRadius4() { 2733 region.setStyle( 2734 "-fx-border-color: black;" + 2735 "-fx-border-radius: 5px 10px 15px 20px;"); 2736 processCSS(); 2737 2738 assertNull(region.getBackground()); 2739 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2740 assertEquals(0, region.getBorder().getImages().size(), 0); 2741 2742 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2743 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2744 new CornerRadii(5, 10, 15, 20, false), 2745 BorderStroke.DEFAULT_WIDTHS); 2746 assertEquals(expected, stroke); 2747 } 2748 2749 @Test public void borderStrokeRadius4_Percent() { 2750 region.setStyle( 2751 "-fx-border-color: black;" + 2752 "-fx-border-radius: 5% 10% 15% 20%;"); 2753 processCSS(); 2754 2755 assertNull(region.getBackground()); 2756 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2757 assertEquals(0, region.getBorder().getImages().size(), 0); 2758 2759 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2760 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2761 new CornerRadii(.05, .10, .15, .20, true), 2762 BorderStroke.DEFAULT_WIDTHS); 2763 assertEquals(expected, stroke); 2764 } 2765 2766 // TODO Example 22 2767 2768 // http://www.w3.org/TR/css3-background/#the-border-radius 2769 // Example 23 (except using px here instead of em) 2770 @Test public void testBorderRadiusWithHorizontalAndVerticalRadii() { 2771 2772 region.setStyle("-fx-border-color: black; -fx-border-radius: 2px 1px 4px / 0.5px 3px;"); 2773 processCSS(); 2774 2775 assertNull(region.getBackground()); 2776 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2777 assertEquals(0, region.getBorder().getImages().size(), 0); 2778 2779 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2780 BorderStroke expected = new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, 2781 new CornerRadii(2, .5, 3, 1, 4, .5, 3, 1, false, false, false, false, false, false, false, false), 2782 BorderStroke.DEFAULT_WIDTHS); 2783 2784 assertEquals(expected, stroke); 2785 2786 } 2787 2788 2789 2790 @Test public void borderStrokeIsTransparent() { 2791 region.setStyle( 2792 "-fx-border-style: solid;" + 2793 "-fx-border-color: transparent;"); 2794 processCSS(); 2795 2796 assertNull(region.getBackground()); 2797 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2798 assertEquals(0, region.getBorder().getImages().size(), 0); 2799 2800 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2801 BorderStroke expected = new BorderStroke(Color.TRANSPARENT, BorderStrokeStyle.SOLID, null, null); 2802 assertEquals(expected, stroke); 2803 } 2804 2805 @Test public void borderStrokeIsSpecifiedOnly() { 2806 region.setStyle( 2807 "-fx-border-style: solid;" + 2808 "-fx-border-color: red;"); 2809 processCSS(); 2810 2811 assertNull(region.getBackground()); 2812 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2813 assertEquals(0, region.getBorder().getImages().size(), 0); 2814 2815 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2816 BorderStroke expected = new BorderStroke(Color.RED, BorderStrokeStyle.SOLID, null, null); 2817 assertEquals(expected, stroke); 2818 } 2819 2820 @Test public void borderStroke2IsSpecifiedOnly() { 2821 region.setStyle( 2822 "-fx-border-style: solid;" + 2823 "-fx-border-color: red green;"); 2824 processCSS(); 2825 2826 assertNull(region.getBackground()); 2827 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2828 assertEquals(0, region.getBorder().getImages().size(), 0); 2829 2830 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2831 BorderStroke expected = new BorderStroke( 2832 Color.RED, Color.GREEN, Color.RED, Color.GREEN, 2833 BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, 2834 null, null, Insets.EMPTY); 2835 assertEquals(expected, stroke); 2836 } 2837 2838 @Test public void borderStroke3IsSpecifiedOnly() { 2839 region.setStyle( 2840 "-fx-border-style: solid;" + 2841 "-fx-border-color: red green blue;"); 2842 processCSS(); 2843 2844 assertNull(region.getBackground()); 2845 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2846 assertEquals(0, region.getBorder().getImages().size(), 0); 2847 2848 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2849 BorderStroke expected = new BorderStroke( 2850 Color.RED, Color.GREEN, Color.BLUE, Color.GREEN, 2851 BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, 2852 null, null, Insets.EMPTY); 2853 assertEquals(expected, stroke); 2854 } 2855 2856 @Test public void borderStroke4IsSpecifiedOnly() { 2857 region.setStyle( 2858 "-fx-border-style: solid;" + 2859 "-fx-border-color: red green blue yellow;"); 2860 processCSS(); 2861 2862 assertNull(region.getBackground()); 2863 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2864 assertEquals(0, region.getBorder().getImages().size(), 0); 2865 2866 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2867 BorderStroke expected = new BorderStroke( 2868 Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW, 2869 BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, 2870 null, null, Insets.EMPTY); 2871 assertEquals(expected, stroke); 2872 } 2873 2874 @Ignore ("-fx-border-top-color is not supported by the CSS parser") 2875 @Test public void borderStroke_top_IsSpecifiedOnly() { 2876 region.setStyle( 2877 "-fx-border-style: solid;" + 2878 "-fx-border-top-color: purple;"); 2879 processCSS(); 2880 2881 assertEquals(0, region.getBackground().getFills().size(), 0); 2882 assertEquals(0, region.getBackground().getImages().size(), 0); 2883 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2884 assertEquals(0, region.getBorder().getImages().size(), 0); 2885 2886 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2887 BorderStroke expected = new BorderStroke( 2888 Color.PURPLE, Color.BLACK, Color.BLACK, Color.BLACK, 2889 BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, 2890 null, null, Insets.EMPTY); 2891 assertEquals(expected, stroke); 2892 } 2893 2894 @Ignore ("-fx-border-right-color is not supported by the CSS parser") 2895 @Test public void borderStroke_right_IsSpecifiedOnly() { 2896 region.setStyle( 2897 "-fx-border-style: solid;" + 2898 "-fx-border-right-color: purple;"); 2899 processCSS(); 2900 2901 assertEquals(0, region.getBackground().getFills().size(), 0); 2902 assertEquals(0, region.getBackground().getImages().size(), 0); 2903 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2904 assertEquals(0, region.getBorder().getImages().size(), 0); 2905 2906 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2907 BorderStroke expected = new BorderStroke( 2908 Color.BLACK, Color.PURPLE, Color.BLACK, Color.BLACK, 2909 BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, 2910 null, null, Insets.EMPTY); 2911 assertEquals(expected, stroke); 2912 } 2913 2914 @Ignore ("-fx-border-bottom-color is not supported by the CSS parser") 2915 @Test public void borderStroke_bottom_IsSpecifiedOnly() { 2916 region.setStyle( 2917 "-fx-border-style: solid;" + 2918 "-fx-border-bottom-color: purple;"); 2919 processCSS(); 2920 2921 assertEquals(0, region.getBackground().getFills().size(), 0); 2922 assertEquals(0, region.getBackground().getImages().size(), 0); 2923 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2924 assertEquals(0, region.getBorder().getImages().size(), 0); 2925 2926 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2927 BorderStroke expected = new BorderStroke( 2928 Color.BLACK, Color.BLACK, Color.PURPLE, Color.BLACK, 2929 BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, 2930 null, null, Insets.EMPTY); 2931 assertEquals(expected, stroke); 2932 } 2933 2934 @Ignore ("-fx-border-left-color is not supported by the CSS parser") 2935 @Test public void borderStroke_left_IsSpecifiedOnly() { 2936 region.setStyle( 2937 "-fx-border-style: solid;" + 2938 "-fx-border-left-color: purple;"); 2939 processCSS(); 2940 2941 assertEquals(0, region.getBackground().getFills().size(), 0); 2942 assertEquals(0, region.getBackground().getImages().size(), 0); 2943 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2944 assertEquals(0, region.getBorder().getImages().size(), 0); 2945 2946 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2947 BorderStroke expected = new BorderStroke( 2948 Color.BLACK, Color.BLACK, Color.BLACK, Color.PURPLE, 2949 BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, 2950 null, null, Insets.EMPTY); 2951 assertEquals(expected, stroke); 2952 } 2953 2954 @Ignore ("-fx-border-top-color and -fx-border-right-color is not supported by the CSS parser") 2955 @Test public void borderStroke_top_right_IsSpecifiedOnly() { 2956 region.setStyle( 2957 "-fx-border-style: solid;" + 2958 "-fx-border-top-color: red;" + 2959 "-fx-border-right-color: green;"); 2960 processCSS(); 2961 2962 assertEquals(0, region.getBackground().getFills().size(), 0); 2963 assertEquals(0, region.getBackground().getImages().size(), 0); 2964 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2965 assertEquals(0, region.getBorder().getImages().size(), 0); 2966 2967 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2968 BorderStroke expected = new BorderStroke( 2969 Color.RED, Color.GREEN, Color.BLACK, Color.BLACK, 2970 BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, 2971 null, null, Insets.EMPTY); 2972 assertEquals(expected, stroke); 2973 } 2974 2975 @Ignore ("-fx-border-left-color and -fx-border-right-color is not supported by the CSS parser") 2976 @Test public void borderStroke_right_left_IsSpecifiedOnly() { 2977 region.setStyle( 2978 "-fx-border-style: solid;" + 2979 "-fx-border-right-color: red;" + 2980 "-fx-border-left-color: green;"); 2981 processCSS(); 2982 2983 assertEquals(0, region.getBackground().getFills().size(), 0); 2984 assertEquals(0, region.getBackground().getImages().size(), 0); 2985 assertEquals(1, region.getBorder().getStrokes().size(), 0); 2986 assertEquals(0, region.getBorder().getImages().size(), 0); 2987 2988 BorderStroke stroke = region.getBorder().getStrokes().get(0); 2989 BorderStroke expected = new BorderStroke( 2990 Color.BLACK, Color.RED, Color.BLACK, Color.GREEN, 2991 BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, 2992 null, null, Insets.EMPTY); 2993 assertEquals(expected, stroke); 2994 } 2995 2996 @Ignore ("-fx-border-top-color and -fx-border-bottom-color is not supported by the CSS parser") 2997 @Test public void borderStroke_bottom_top_IsSpecifiedOnly() { 2998 region.setStyle( 2999 "-fx-border-style: solid;" + 3000 "-fx-border-bottom-color: red;" + 3001 "-fx-border-top-color: green;"); 3002 processCSS(); 3003 3004 assertEquals(0, region.getBackground().getFills().size(), 0); 3005 assertEquals(0, region.getBackground().getImages().size(), 0); 3006 assertEquals(1, region.getBorder().getStrokes().size(), 0); 3007 assertEquals(0, region.getBorder().getImages().size(), 0); 3008 3009 BorderStroke stroke = region.getBorder().getStrokes().get(0); 3010 BorderStroke expected = new BorderStroke( 3011 Color.GREEN, Color.BLACK, Color.RED, Color.BLACK, 3012 BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, 3013 null, null, Insets.EMPTY); 3014 assertEquals(expected, stroke); 3015 } 3016 3017 @Test public void borderRadiusIsSpecifiedOnly() { 3018 region.setStyle("-fx-border-radius: 1px;"); 3019 processCSS(); 3020 3021 assertNull(region.getBackground()); 3022 assertNull(region.getBorder()); 3023 } 3024 3025 @Test public void borderWidthIsSpecifiedOnly() { 3026 region.setStyle("-fx-border-width: 1;"); 3027 processCSS(); 3028 3029 assertNull(region.getBackground()); 3030 assertNull(region.getBorder()); 3031 } 3032 3033 @Test public void testWithExcessBorderWidths() { 3034 region.setStyle( 3035 "-fx-border-style: solid;" + 3036 "-fx-border-color: red;" + 3037 "-fx-border-width: 0 0 0 0, 0, 1, 2;"); 3038 processCSS(); 3039 3040 assertNull(region.getBackground()); 3041 assertEquals(1, region.getBorder().getStrokes().size(), 0); 3042 assertEquals(0, region.getBorder().getImages().size(), 0); 3043 3044 BorderStroke stroke = region.getBorder().getStrokes().get(0); 3045 BorderStroke expected = new BorderStroke( 3046 Color.RED, Color.RED, Color.RED, Color.RED, 3047 BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, 3048 null, new BorderWidths(0, 0, 0, 0), Insets.EMPTY); 3049 assertEquals(expected, stroke); 3050 } 3051 3052 @Test public void testWithExcessBorderRadii() { 3053 region.setStyle( 3054 "-fx-border-style: solid;" + 3055 "-fx-border-color: red;" + 3056 "-fx-border-radius: 5%, 0, 10%, 2;"); 3057 processCSS(); 3058 3059 assertNull(region.getBackground()); 3060 assertEquals(1, region.getBorder().getStrokes().size(), 0); 3061 assertEquals(0, region.getBorder().getImages().size(), 0); 3062 3063 BorderStroke stroke = region.getBorder().getStrokes().get(0); 3064 BorderStroke expected = new BorderStroke( 3065 Color.RED, Color.RED, Color.RED, Color.RED, 3066 BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, 3067 new CornerRadii(.05, .05, .05, .05, true), 3068 null, Insets.EMPTY); 3069 assertEquals(expected, stroke); 3070 } 3071 3072 // Finally, the image borders!! 3073 // I probably have to rework things. The image border do depend on some settings from 3074 // the stroke borders (or at least, they can depend on them). As such I might not be 3075 // able to short-circuit the creation of stroke borders, even if they have no style. 3076 3077 @Test public void borderImageSourceIsNull() { 3078 region.setStyle("-fx-border-image-source: null;"); 3079 processCSS(); 3080 3081 assertEquals(new Insets(0), region.getPadding()); 3082 assertNull(region.getBackground()); 3083 assertNull(region.getBorder()); 3084 } 3085 3086 @Test public void borderImageSource() { 3087 region.setStyle("-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png')"); 3088 processCSS(); 3089 3090 assertNull(region.getBackground()); 3091 assertEquals(0, region.getBorder().getStrokes().size(), 0); 3092 assertEquals(1, region.getBorder().getImages().size(), 0); 3093 } 3094 3095 @Test public void defaultBorderImageValues() { 3096 region.setStyle("-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png')"); 3097 processCSS(); 3098 3099 BorderImage image = region.getBorder().getImages().get(0); 3100 BorderImage expected = new BorderImage( 3101 image.getImage(), 3102 BorderWidths.DEFAULT, 3103 Insets.EMPTY, 3104 BorderWidths.FULL, 3105 false, 3106 BorderRepeat.STRETCH, 3107 BorderRepeat.STRETCH 3108 ); 3109 assertEquals(expected, image); 3110 } 3111 3112 @Test public void borderImageSlice_1() { 3113 region.setStyle( 3114 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3115 "-fx-border-image-slice: 1;"); 3116 processCSS(); 3117 3118 BorderImage image = region.getBorder().getImages().get(0); 3119 BorderImage expected = new BorderImage( 3120 image.getImage(), 3121 BorderWidths.DEFAULT, 3122 Insets.EMPTY, 3123 new BorderWidths(1, 1, 1, 1, false, false, false, false), 3124 false, 3125 BorderRepeat.STRETCH, 3126 BorderRepeat.STRETCH 3127 ); 3128 assertEquals(expected, image); 3129 } 3130 3131 @Test public void borderImageSlice_1_2() { 3132 region.setStyle( 3133 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3134 "-fx-border-image-slice: 1 2;"); 3135 processCSS(); 3136 3137 BorderImage image = region.getBorder().getImages().get(0); 3138 BorderImage expected = new BorderImage( 3139 image.getImage(), 3140 BorderWidths.DEFAULT, 3141 Insets.EMPTY, 3142 new BorderWidths(1, 2, 1, 2, false, false, false, false), 3143 false, 3144 BorderRepeat.STRETCH, 3145 BorderRepeat.STRETCH 3146 ); 3147 assertEquals(expected, image); 3148 } 3149 3150 @Test public void borderImageSlice_1_2_3() { 3151 region.setStyle( 3152 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3153 "-fx-border-image-slice: 1 2 3;"); 3154 processCSS(); 3155 3156 BorderImage image = region.getBorder().getImages().get(0); 3157 BorderImage expected = new BorderImage( 3158 image.getImage(), 3159 BorderWidths.DEFAULT, 3160 Insets.EMPTY, 3161 new BorderWidths(1, 2, 3, 2, false, false, false, false), 3162 false, 3163 BorderRepeat.STRETCH, 3164 BorderRepeat.STRETCH 3165 ); 3166 assertEquals(expected, image); 3167 } 3168 3169 @Test public void borderImageSlice_1_2_3_4() { 3170 region.setStyle( 3171 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3172 "-fx-border-image-slice: 1 2 3 4;"); 3173 processCSS(); 3174 3175 BorderImage image = region.getBorder().getImages().get(0); 3176 BorderImage expected = new BorderImage( 3177 image.getImage(), 3178 BorderWidths.DEFAULT, 3179 Insets.EMPTY, 3180 new BorderWidths(1, 2, 3, 4, false, false, false, false), 3181 false, 3182 BorderRepeat.STRETCH, 3183 BorderRepeat.STRETCH 3184 ); 3185 assertEquals(expected, image); 3186 } 3187 3188 @Test public void borderImageSlice_1_fill() { 3189 region.setStyle( 3190 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3191 "-fx-border-image-slice: 1 fill;"); 3192 processCSS(); 3193 3194 BorderImage image = region.getBorder().getImages().get(0); 3195 BorderImage expected = new BorderImage( 3196 image.getImage(), 3197 BorderWidths.DEFAULT, 3198 Insets.EMPTY, 3199 new BorderWidths(1, 1, 1, 1), 3200 true, 3201 BorderRepeat.STRETCH, 3202 BorderRepeat.STRETCH 3203 ); 3204 assertEquals(expected, image); 3205 } 3206 3207 @Test public void borderImageSlice_1_2_fill() { 3208 region.setStyle( 3209 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3210 "-fx-border-image-slice: 1 2 fill;"); 3211 processCSS(); 3212 3213 BorderImage image = region.getBorder().getImages().get(0); 3214 BorderImage expected = new BorderImage( 3215 image.getImage(), 3216 BorderWidths.DEFAULT, 3217 Insets.EMPTY, 3218 new BorderWidths(1, 2, 1, 2), 3219 true, 3220 BorderRepeat.STRETCH, 3221 BorderRepeat.STRETCH 3222 ); 3223 assertEquals(expected, image); 3224 } 3225 3226 @Test public void borderImageSlice_1_2_3_fill() { 3227 region.setStyle( 3228 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3229 "-fx-border-image-slice: 1 2 3 fill;"); 3230 processCSS(); 3231 3232 BorderImage image = region.getBorder().getImages().get(0); 3233 BorderImage expected = new BorderImage( 3234 image.getImage(), 3235 BorderWidths.DEFAULT, 3236 Insets.EMPTY, 3237 new BorderWidths(1, 2, 3, 2), 3238 true, 3239 BorderRepeat.STRETCH, 3240 BorderRepeat.STRETCH 3241 ); 3242 assertEquals(expected, image); 3243 } 3244 3245 @Test public void borderImageSlice_1_2_3_4_fill() { 3246 region.setStyle( 3247 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3248 "-fx-border-image-slice: 1 2 3 4 fill;"); 3249 processCSS(); 3250 3251 BorderImage image = region.getBorder().getImages().get(0); 3252 BorderImage expected = new BorderImage( 3253 image.getImage(), 3254 BorderWidths.DEFAULT, 3255 Insets.EMPTY, 3256 new BorderWidths(1, 2, 3, 4), 3257 true, 3258 BorderRepeat.STRETCH, 3259 BorderRepeat.STRETCH 3260 ); 3261 assertEquals(expected, image); 3262 } 3263 3264 @Test public void borderImageWidth_1() { 3265 region.setStyle( 3266 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3267 "-fx-border-image-width: 1;"); 3268 processCSS(); 3269 3270 BorderImage image = region.getBorder().getImages().get(0); 3271 BorderImage expected = new BorderImage( 3272 image.getImage(), 3273 new BorderWidths(1, 1, 1, 1, false, false, false, false), 3274 Insets.EMPTY, 3275 BorderWidths.FULL, 3276 false, 3277 BorderRepeat.STRETCH, 3278 BorderRepeat.STRETCH 3279 ); 3280 assertEquals(expected, image); 3281 } 3282 3283 @Test public void borderImageWidth_1_2() { 3284 region.setStyle( 3285 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3286 "-fx-border-image-width: 1 2;"); 3287 processCSS(); 3288 3289 BorderImage image = region.getBorder().getImages().get(0); 3290 BorderImage expected = new BorderImage( 3291 image.getImage(), 3292 new BorderWidths(1, 2, 1, 2, false, false, false, false), 3293 Insets.EMPTY, 3294 BorderWidths.FULL, 3295 false, 3296 BorderRepeat.STRETCH, 3297 BorderRepeat.STRETCH 3298 ); 3299 assertEquals(expected, image); 3300 } 3301 3302 @Test public void borderImageWidth_1_2_3() { 3303 region.setStyle( 3304 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3305 "-fx-border-image-width: 1 2 3;"); 3306 processCSS(); 3307 3308 BorderImage image = region.getBorder().getImages().get(0); 3309 BorderImage expected = new BorderImage( 3310 image.getImage(), 3311 new BorderWidths(1, 2, 3, 2, false, false, false, false), 3312 Insets.EMPTY, 3313 BorderWidths.FULL, 3314 false, 3315 BorderRepeat.STRETCH, 3316 BorderRepeat.STRETCH 3317 ); 3318 assertEquals(expected, image); 3319 } 3320 3321 @Test public void borderImageWidth_1_2_3_4() { 3322 region.setStyle( 3323 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3324 "-fx-border-image-width: 1 2 3 4;"); 3325 processCSS(); 3326 3327 BorderImage image = region.getBorder().getImages().get(0); 3328 BorderImage expected = new BorderImage( 3329 image.getImage(), 3330 new BorderWidths(1, 2, 3, 4, false, false, false, false), 3331 Insets.EMPTY, 3332 BorderWidths.FULL, 3333 false, 3334 BorderRepeat.STRETCH, 3335 BorderRepeat.STRETCH 3336 ); 3337 assertEquals(expected, image); 3338 } 3339 3340 @Test public void borderImageWidth_1_2Percent() { 3341 region.setStyle( 3342 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3343 "-fx-border-image-width: 1 2%;"); 3344 processCSS(); 3345 3346 BorderImage image = region.getBorder().getImages().get(0); 3347 BorderImage expected = new BorderImage( 3348 image.getImage(), 3349 new BorderWidths(1, .02, 1, .02, false, true, false, true), 3350 Insets.EMPTY, 3351 BorderWidths.FULL, 3352 false, 3353 BorderRepeat.STRETCH, 3354 BorderRepeat.STRETCH 3355 ); 3356 assertEquals(expected, image); 3357 } 3358 3359 @Test public void borderImageWidth_1Percent_2Percent_3Percent_4Percent() { 3360 region.setStyle( 3361 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3362 "-fx-border-image-width: 1% 2% 3% 4%;"); 3363 processCSS(); 3364 3365 BorderImage image = region.getBorder().getImages().get(0); 3366 BorderImage expected = new BorderImage( 3367 image.getImage(), 3368 new BorderWidths(.01, .02, .03, .04, true, true, true, true), 3369 Insets.EMPTY, 3370 BorderWidths.FULL, 3371 false, 3372 BorderRepeat.STRETCH, 3373 BorderRepeat.STRETCH 3374 ); 3375 assertEquals(expected, image); 3376 } 3377 3378 @Ignore("I am not certain that supporting auto makes sense for us, and if it does, is it anything other than 1?") 3379 @Test public void borderImageWidth_auto() { 3380 region.setStyle( 3381 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3382 "-fx-border-image-width: auto;"); 3383 processCSS(); 3384 3385 BorderImage image = region.getBorder().getImages().get(0); 3386 BorderImage expected = new BorderImage( 3387 image.getImage(), 3388 new BorderWidths( 3389 BorderWidths.AUTO, BorderWidths.AUTO, 3390 BorderWidths.AUTO, BorderWidths.AUTO, false, false, false, false), 3391 Insets.EMPTY, 3392 BorderWidths.FULL, 3393 false, 3394 BorderRepeat.STRETCH, 3395 BorderRepeat.STRETCH 3396 ); 3397 assertEquals(expected, image); 3398 } 3399 3400 @Ignore("I am not certain that supporting auto makes sense for us, and if it does, is it anything other than 1?") 3401 @Test public void borderImageWidth_1_auto() { 3402 region.setStyle( 3403 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3404 "-fx-border-image-width: 1 auto;"); 3405 processCSS(); 3406 3407 BorderImage image = region.getBorder().getImages().get(0); 3408 BorderImage expected = new BorderImage( 3409 image.getImage(), 3410 new BorderWidths(1, BorderWidths.AUTO, 3411 1, BorderWidths.AUTO, false, false, false, false), 3412 Insets.EMPTY, 3413 BorderWidths.FULL, 3414 false, 3415 BorderRepeat.STRETCH, 3416 BorderRepeat.STRETCH 3417 ); 3418 assertEquals(expected, image); 3419 } 3420 3421 @Ignore("I am not certain that supporting auto makes sense for us, and if it does, is it anything other than 1?") 3422 @Test public void borderImageWidth_1_2Percent_auto() { 3423 region.setStyle( 3424 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3425 "-fx-border-image-width: 1 2% auto;"); 3426 processCSS(); 3427 3428 BorderImage image = region.getBorder().getImages().get(0); 3429 BorderImage expected = new BorderImage( 3430 image.getImage(), 3431 new BorderWidths(1, .02, 3432 BorderWidths.AUTO, .02, false, true, false, true), 3433 Insets.EMPTY, 3434 BorderWidths.FULL, 3435 false, 3436 BorderRepeat.STRETCH, 3437 BorderRepeat.STRETCH 3438 ); 3439 assertEquals(expected, image); 3440 } 3441 3442 @Test public void borderImageOutset_1() { 3443 region.setStyle( 3444 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3445 "-fx-border-image-insets: 1;"); 3446 processCSS(); 3447 3448 BorderImage image = region.getBorder().getImages().get(0); 3449 BorderImage expected = new BorderImage( 3450 image.getImage(), 3451 BorderWidths.DEFAULT, 3452 new Insets(1), 3453 BorderWidths.FULL, 3454 false, 3455 BorderRepeat.STRETCH, 3456 BorderRepeat.STRETCH 3457 ); 3458 assertEquals(expected, image); 3459 } 3460 3461 @Test public void borderImageOutset_1_2() { 3462 region.setStyle( 3463 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3464 "-fx-border-image-insets: 1 2;"); 3465 processCSS(); 3466 3467 BorderImage image = region.getBorder().getImages().get(0); 3468 BorderImage expected = new BorderImage( 3469 image.getImage(), 3470 BorderWidths.DEFAULT, 3471 new Insets(1, 2, 1, 2), 3472 BorderWidths.FULL, 3473 false, 3474 BorderRepeat.STRETCH, 3475 BorderRepeat.STRETCH 3476 ); 3477 assertEquals(expected, image); 3478 } 3479 3480 @Test public void borderImageOutset_1_2_3() { 3481 region.setStyle( 3482 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3483 "-fx-border-image-insets: 1 2 3;"); 3484 processCSS(); 3485 3486 BorderImage image = region.getBorder().getImages().get(0); 3487 BorderImage expected = new BorderImage( 3488 image.getImage(), 3489 BorderWidths.DEFAULT, 3490 new Insets(1, 2, 3, 2), 3491 BorderWidths.FULL, 3492 false, 3493 BorderRepeat.STRETCH, 3494 BorderRepeat.STRETCH 3495 ); 3496 assertEquals(expected, image); 3497 } 3498 3499 @Test public void borderImageOutset_1_2_3_4() { 3500 region.setStyle( 3501 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3502 "-fx-border-image-insets: 1 2 3 4;"); 3503 processCSS(); 3504 3505 BorderImage image = region.getBorder().getImages().get(0); 3506 BorderImage expected = new BorderImage( 3507 image.getImage(), 3508 BorderWidths.DEFAULT, 3509 new Insets(1, 2, 3, 4), 3510 BorderWidths.FULL, 3511 false, 3512 BorderRepeat.STRETCH, 3513 BorderRepeat.STRETCH 3514 ); 3515 assertEquals(expected, image); 3516 } 3517 3518 @Test public void borderImageRepeat_stretch() { 3519 region.setStyle( 3520 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3521 "-fx-border-image-repeat: stretch;"); 3522 processCSS(); 3523 3524 BorderImage image = region.getBorder().getImages().get(0); 3525 BorderImage expected = new BorderImage( 3526 image.getImage(), 3527 BorderWidths.DEFAULT, 3528 Insets.EMPTY, 3529 BorderWidths.FULL, 3530 false, 3531 BorderRepeat.STRETCH, 3532 BorderRepeat.STRETCH 3533 ); 3534 assertEquals(expected, image); 3535 } 3536 3537 @Test public void borderImageRepeat_repeat() { 3538 region.setStyle( 3539 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3540 "-fx-border-image-repeat: repeat;"); 3541 processCSS(); 3542 3543 BorderImage image = region.getBorder().getImages().get(0); 3544 BorderImage expected = new BorderImage( 3545 image.getImage(), 3546 BorderWidths.DEFAULT, 3547 Insets.EMPTY, 3548 BorderWidths.FULL, 3549 false, 3550 BorderRepeat.REPEAT, 3551 BorderRepeat.REPEAT 3552 ); 3553 assertEquals(expected, image); 3554 } 3555 3556 @Test public void borderImageRepeat_round() { 3557 region.setStyle( 3558 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3559 "-fx-border-image-repeat: round;"); 3560 processCSS(); 3561 3562 BorderImage image = region.getBorder().getImages().get(0); 3563 BorderImage expected = new BorderImage( 3564 image.getImage(), 3565 BorderWidths.DEFAULT, 3566 Insets.EMPTY, 3567 BorderWidths.FULL, 3568 false, 3569 BorderRepeat.ROUND, 3570 BorderRepeat.ROUND 3571 ); 3572 assertEquals(expected, image); 3573 } 3574 3575 @Test public void borderImageRepeat_space() { 3576 region.setStyle( 3577 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3578 "-fx-border-image-repeat: space;"); 3579 processCSS(); 3580 3581 BorderImage image = region.getBorder().getImages().get(0); 3582 BorderImage expected = new BorderImage( 3583 image.getImage(), 3584 BorderWidths.DEFAULT, 3585 Insets.EMPTY, 3586 BorderWidths.FULL, 3587 false, 3588 BorderRepeat.SPACE, 3589 BorderRepeat.SPACE 3590 ); 3591 assertEquals(expected, image); 3592 } 3593 3594 @Test public void borderImageRepeat_round_stretch() { 3595 region.setStyle( 3596 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3597 "-fx-border-image-repeat: round stretch;"); 3598 processCSS(); 3599 3600 BorderImage image = region.getBorder().getImages().get(0); 3601 BorderImage expected = new BorderImage( 3602 image.getImage(), 3603 BorderWidths.DEFAULT, 3604 Insets.EMPTY, 3605 BorderWidths.FULL, 3606 false, 3607 BorderRepeat.ROUND, 3608 BorderRepeat.STRETCH 3609 ); 3610 assertEquals(expected, image); 3611 } 3612 3613 @Test public void borderImageRepeat_round_repeat() { 3614 region.setStyle( 3615 "-fx-border-image-source: url('test/javafx/scene/layout/center-btn.png');" + 3616 "-fx-border-image-repeat: round repeat;"); 3617 processCSS(); 3618 3619 BorderImage image = region.getBorder().getImages().get(0); 3620 BorderImage expected = new BorderImage( 3621 image.getImage(), 3622 BorderWidths.DEFAULT, 3623 Insets.EMPTY, 3624 BorderWidths.FULL, 3625 false, 3626 BorderRepeat.ROUND, 3627 BorderRepeat.REPEAT 3628 ); 3629 assertEquals(expected, image); 3630 } 3631 3632 // TODO multiple image borders 3633 // TODO complex background fill, background image, stroke border, image border scenario 3634 }