1 /* 2 * Copyright (c) 2012, 2018, 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.binding; 27 28 import javafx.beans.binding.*; 29 import javafx.beans.property.IntegerProperty; 30 import javafx.beans.property.ListProperty; 31 import javafx.beans.property.SimpleIntegerProperty; 32 import javafx.beans.property.SimpleListProperty; 33 import javafx.collections.FXCollections; 34 import javafx.collections.ObservableList; 35 import test.com.sun.javafx.binding.ErrorLoggingUtiltity; 36 import javafx.collections.ObservableFloatArray; 37 import javafx.collections.ObservableIntegerArray; 38 import org.junit.Before; 39 import org.junit.BeforeClass; 40 import org.junit.Test; 41 42 import static org.junit.Assert.*; 43 44 /** 45 */ 46 public class BindingsArrayTest { 47 48 private static final double EPSILON_DOUBLE = 1e-12; 49 private static final float EPSILON_FLOAT = 1e-5f; 50 51 private static final Object data1 = new Object(); 52 private static final Object data2 = new Object(); 53 54 private ListProperty<Object> property; 55 private ObservableList<Object> list1; 56 private ObservableList<Object> list2; 57 private IntegerProperty index; 58 59 @BeforeClass 60 public static void setUpClass() { 61 ErrorLoggingUtiltity.reset(); 62 } 63 64 @Before 65 public void setUp() { 66 property = new SimpleListProperty<Object>(); 67 list1 = FXCollections.<Object>observableArrayList(data1, data2); 68 list2 = FXCollections.<Object>observableArrayList(); 69 index = new SimpleIntegerProperty(); 70 } 71 72 @Test 73 public void testSize() { 74 final IntegerBinding size = Bindings.size(property); 75 DependencyUtils.checkDependencies(size.getDependencies(), property); 76 77 assertEquals(0, size.get()); 78 property.set(list1); 79 assertEquals(2, size.get()); 80 list1.remove(data2); 81 assertEquals(1, size.get()); 82 property.set(list2); 83 assertEquals(0, size.get()); 84 property.addAll(data2, data2); 85 assertEquals(2, size.get()); 86 property.set(null); 87 assertEquals(0, size.get()); 88 } 89 90 @Test(expected = NullPointerException.class) 91 public void testSize_Null() { 92 Bindings.size((ObservableList<Object>) null); 93 } 94 95 @Test 96 public void testIsEmpty() { 97 final BooleanBinding empty = Bindings.isEmpty(property); 98 DependencyUtils.checkDependencies(empty.getDependencies(), property); 99 100 assertTrue(empty.get()); 101 property.set(list1); 102 assertFalse(empty.get()); 103 list1.remove(data2); 104 assertFalse(empty.get()); 105 property.set(list2); 106 assertTrue(empty.get()); 107 property.addAll(data2, data2); 108 assertFalse(empty.get()); 109 property.set(null); 110 assertTrue(empty.get()); 111 } 112 113 @Test(expected = NullPointerException.class) 114 public void testIsEmpty_Null() { 115 Bindings.isEmpty((ObservableList<Object>) null); 116 } 117 118 @Test 119 public void testIsNotEmpty() { 120 final BooleanBinding notEmpty = Bindings.isNotEmpty(property); 121 DependencyUtils.checkDependencies(notEmpty.getDependencies(), property); 122 123 assertFalse(notEmpty.get()); 124 property.set(list1); 125 assertTrue(notEmpty.get()); 126 list1.remove(data2); 127 assertTrue(notEmpty.get()); 128 property.set(list2); 129 assertFalse(notEmpty.get()); 130 property.addAll(data2, data2); 131 assertTrue(notEmpty.get()); 132 property.set(null); 133 assertFalse(notEmpty.get()); 134 } 135 136 @Test(expected = NullPointerException.class) 137 public void testIsNotEmpty_Null() { 138 Bindings.isNotEmpty((ObservableList<Object>) null); 139 } 140 141 @Test 142 public void testValueAt_Constant() { 143 final ObjectBinding<Object> binding0 = Bindings.valueAt(property, 0); 144 final ObjectBinding<Object> binding1 = Bindings.valueAt(property, 1); 145 final ObjectBinding<Object> binding2 = Bindings.valueAt(property, 2); 146 DependencyUtils.checkDependencies(binding0.getDependencies(), property); 147 DependencyUtils.checkDependencies(binding1.getDependencies(), property); 148 DependencyUtils.checkDependencies(binding2.getDependencies(), property); 149 assertNull(binding0.get()); 150 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 151 assertNull(binding1.get()); 152 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 153 assertNull(binding2.get()); 154 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 155 156 property.set(list1); 157 assertEquals(data1, binding0.get()); 158 assertEquals(data2, binding1.get()); 159 assertNull(binding2.get()); 160 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 161 162 property.remove(data2); 163 assertEquals(data1, binding0.get()); 164 assertNull(binding1.get()); 165 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 166 assertNull(binding2.get()); 167 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 168 169 property.set(list2); 170 assertNull(binding0.get()); 171 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 172 assertNull(binding1.get()); 173 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 174 assertNull(binding2.get()); 175 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 176 177 property.addAll(data2, data2); 178 assertEquals(data2, binding0.get()); 179 assertEquals(data2, binding1.get()); 180 assertNull(binding2.get()); 181 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 182 183 property.set(null); 184 assertNull(binding0.get()); 185 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 186 assertNull(binding1.get()); 187 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 188 assertNull(binding2.get()); 189 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 190 } 191 192 @Test(expected = NullPointerException.class) 193 public void testValueAt_Constant_Null() { 194 Bindings.valueAt(null, 0); 195 } 196 197 @Test(expected = IllegalArgumentException.class) 198 public void testValueAt_Constant_NegativeIndex() { 199 Bindings.valueAt(property, -1); 200 } 201 202 @Test 203 public void testValueAt_Variable() { 204 final ObjectBinding<Object> binding = Bindings.valueAt(property, index); 205 DependencyUtils.checkDependencies(binding.getDependencies(), property, index); 206 207 index.set(-1); 208 assertNull(binding.get()); 209 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 210 index.set(0); 211 assertNull(binding.get()); 212 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 213 214 property.set(list1); 215 index.set(-1); 216 assertNull(binding.get()); 217 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 218 index.set(0); 219 assertEquals(data1, binding.get()); 220 index.set(1); 221 assertEquals(data2, binding.get()); 222 index.set(2); 223 assertNull(binding.get()); 224 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 225 226 property.remove(data2); 227 index.set(-1); 228 assertNull(binding.get()); 229 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 230 index.set(0); 231 assertEquals(data1, binding.get()); 232 index.set(1); 233 assertNull(binding.get()); 234 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 235 236 property.set(list2); 237 index.set(-1); 238 assertNull(binding.get()); 239 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 240 index.set(0); 241 assertNull(binding.get()); 242 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 243 244 property.addAll(data2, data2); 245 index.set(-1); 246 assertNull(binding.get()); 247 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 248 index.set(0); 249 assertEquals(data2, binding.get()); 250 index.set(1); 251 assertEquals(data2, binding.get()); 252 index.set(2); 253 assertNull(binding.get()); 254 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 255 256 property.set(null); 257 index.set(-1); 258 assertNull(binding.get()); 259 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 260 index.set(0); 261 assertNull(binding.get()); 262 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 263 } 264 265 @Test(expected = NullPointerException.class) 266 public void testValueAt_Variable_Null() { 267 Bindings.valueAt((ObservableList<Object>)null, index); 268 } 269 270 @Test(expected = NullPointerException.class) 271 public void testValueAt_Variable_NullIndex() { 272 Bindings.valueAt(property, null); 273 } 274 275 @Test 276 public void testBooleanValueAt_Constant() { 277 final boolean defaultData = false; 278 final boolean localData1 = false; 279 final boolean localData2 = true; 280 final ListProperty<Boolean> localProperty = new SimpleListProperty<Boolean>(); 281 final ObservableList<Boolean> localList1 = FXCollections.observableArrayList(localData1, localData2); 282 final ObservableList<Boolean> localList2 = FXCollections.observableArrayList(); 283 284 final BooleanBinding binding0 = Bindings.booleanValueAt(localProperty, 0); 285 final BooleanBinding binding1 = Bindings.booleanValueAt(localProperty, 1); 286 final BooleanBinding binding2 = Bindings.booleanValueAt(localProperty, 2); 287 DependencyUtils.checkDependencies(binding0.getDependencies(), localProperty); 288 DependencyUtils.checkDependencies(binding1.getDependencies(), localProperty); 289 DependencyUtils.checkDependencies(binding2.getDependencies(), localProperty); 290 assertEquals(defaultData, binding0.get()); 291 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 292 assertEquals(defaultData, binding1.get()); 293 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 294 assertEquals(defaultData, binding2.get()); 295 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 296 297 localProperty.set(localList1); 298 assertEquals(localData1, binding0.get()); 299 assertEquals(localData2, binding1.get()); 300 assertEquals(defaultData, binding2.get()); 301 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 302 303 localProperty.remove(1); 304 assertEquals(localData1, binding0.get()); 305 assertEquals(defaultData, binding1.get()); 306 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 307 assertEquals(defaultData, binding2.get()); 308 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 309 310 localProperty.set(localList2); 311 assertEquals(defaultData, binding0.get()); 312 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 313 assertEquals(defaultData, binding1.get()); 314 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 315 assertEquals(defaultData, binding2.get()); 316 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 317 318 localProperty.addAll(localData2, localData2); 319 assertEquals(localData2, binding0.get()); 320 assertEquals(localData2, binding1.get()); 321 assertEquals(defaultData, binding2.get()); 322 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 323 324 localProperty.set(null); 325 assertEquals(defaultData, binding0.get()); 326 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 327 assertEquals(defaultData, binding1.get()); 328 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 329 assertEquals(defaultData, binding2.get()); 330 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 331 } 332 333 @Test(expected = NullPointerException.class) 334 public void testBooleanValueAt_Constant_Null() { 335 Bindings.booleanValueAt(null, 0); 336 } 337 338 @Test(expected = IllegalArgumentException.class) 339 public void testBooleanValueAt_Constant_NegativeIndex() { 340 final ListProperty<Boolean> localProperty = new SimpleListProperty<Boolean>(); 341 Bindings.booleanValueAt(localProperty, -1); 342 } 343 344 @Test 345 public void testBooleanValueAt_Variable() { 346 final boolean defaultData = false; 347 final boolean localData1 = false; 348 final boolean localData2 = true; 349 final ListProperty<Boolean> localProperty = new SimpleListProperty<Boolean>(); 350 final ObservableList<Boolean> localList1 = FXCollections.observableArrayList(localData1, localData2); 351 final ObservableList<Boolean> localList2 = FXCollections.observableArrayList(); 352 353 final BooleanBinding binding = Bindings.booleanValueAt(localProperty, index); 354 DependencyUtils.checkDependencies(binding.getDependencies(), localProperty, index); 355 356 index.set(-1); 357 assertEquals(defaultData, binding.get()); 358 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 359 index.set(0); 360 assertEquals(defaultData, binding.get()); 361 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 362 363 localProperty.set(localList1); 364 index.set(-1); 365 assertEquals(defaultData, binding.get()); 366 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 367 index.set(0); 368 assertEquals(localData1, binding.get()); 369 index.set(1); 370 assertEquals(localData2, binding.get()); 371 index.set(2); 372 assertEquals(defaultData, binding.get()); 373 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 374 375 localProperty.remove(1); 376 index.set(-1); 377 assertEquals(defaultData, binding.get()); 378 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 379 index.set(0); 380 assertEquals(localData1, binding.get()); 381 index.set(1); 382 assertEquals(defaultData, binding.get()); 383 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 384 385 localProperty.set(0, null); 386 index.set(-1); 387 assertEquals(defaultData, binding.get()); 388 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 389 index.set(0); 390 assertEquals(defaultData, binding.get()); 391 ErrorLoggingUtiltity.checkFine(NullPointerException.class); 392 index.set(1); 393 assertEquals(defaultData, binding.get()); 394 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 395 396 localProperty.set(localList2); 397 index.set(-1); 398 assertEquals(defaultData, binding.get()); 399 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 400 index.set(0); 401 assertEquals(defaultData, binding.get()); 402 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 403 404 localProperty.addAll(localData2, localData2); 405 index.set(-1); 406 assertEquals(defaultData, binding.get()); 407 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 408 index.set(0); 409 assertEquals(localData2, binding.get()); 410 index.set(1); 411 assertEquals(localData2, binding.get()); 412 index.set(2); 413 assertEquals(defaultData, binding.get()); 414 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 415 416 localProperty.set(null); 417 index.set(-1); 418 assertEquals(defaultData, binding.get()); 419 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 420 index.set(0); 421 assertEquals(defaultData, binding.get()); 422 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 423 } 424 425 @Test(expected = NullPointerException.class) 426 public void testBooleanValueAt_Variable_Null() { 427 Bindings.booleanValueAt((ObservableList<Boolean>)null, index); 428 } 429 430 @Test(expected = NullPointerException.class) 431 public void testBooleanValueAt_Variable_NullIndex() { 432 final ListProperty<Boolean> localProperty = new SimpleListProperty<Boolean>(); 433 Bindings.booleanValueAt(localProperty, null); 434 } 435 436 @Test 437 public void testDoubleValueAt_Constant() { 438 final double defaultData = 0.0; 439 final double localData1 = Math.PI; 440 final double localData2 = -Math.E; 441 final ListProperty<Double> localProperty = new SimpleListProperty<Double>(); 442 final ObservableList<Double> localList1 = FXCollections.observableArrayList(localData1, localData2); 443 final ObservableList<Double> localList2 = FXCollections.observableArrayList(); 444 445 final DoubleBinding binding0 = Bindings.doubleValueAt(localProperty, 0); 446 final DoubleBinding binding1 = Bindings.doubleValueAt(localProperty, 1); 447 final DoubleBinding binding2 = Bindings.doubleValueAt(localProperty, 2); 448 DependencyUtils.checkDependencies(binding0.getDependencies(), localProperty); 449 DependencyUtils.checkDependencies(binding1.getDependencies(), localProperty); 450 DependencyUtils.checkDependencies(binding2.getDependencies(), localProperty); 451 assertEquals(defaultData, binding0.get(), EPSILON_DOUBLE); 452 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 453 assertEquals(defaultData, binding1.get(), EPSILON_DOUBLE); 454 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 455 assertEquals(defaultData, binding2.get(), EPSILON_DOUBLE); 456 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 457 458 localProperty.set(localList1); 459 assertEquals(localData1, binding0.get(), EPSILON_DOUBLE); 460 assertEquals(localData2, binding1.get(), EPSILON_DOUBLE); 461 assertEquals(defaultData, binding2.get(), EPSILON_DOUBLE); 462 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 463 464 localProperty.remove(1); 465 assertEquals(localData1, binding0.get(), EPSILON_DOUBLE); 466 assertEquals(defaultData, binding1.get(), EPSILON_DOUBLE); 467 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 468 assertEquals(defaultData, binding2.get(), EPSILON_DOUBLE); 469 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 470 471 localProperty.set(localList2); 472 assertEquals(defaultData, binding0.get(), EPSILON_DOUBLE); 473 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 474 assertEquals(defaultData, binding1.get(), EPSILON_DOUBLE); 475 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 476 assertEquals(defaultData, binding2.get(), EPSILON_DOUBLE); 477 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 478 479 localProperty.addAll(localData2, localData2); 480 assertEquals(localData2, binding0.get(), EPSILON_DOUBLE); 481 assertEquals(localData2, binding1.get(), EPSILON_DOUBLE); 482 assertEquals(defaultData, binding2.get(), EPSILON_DOUBLE); 483 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 484 485 localProperty.set(null); 486 assertEquals(defaultData, binding0.get(), EPSILON_DOUBLE); 487 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 488 assertEquals(defaultData, binding1.get(), EPSILON_DOUBLE); 489 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 490 assertEquals(defaultData, binding2.get(), EPSILON_DOUBLE); 491 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 492 } 493 494 @Test(expected = NullPointerException.class) 495 public void testDoubleValueAt_Constant_Null() { 496 Bindings.doubleValueAt(null, 0); 497 } 498 499 @Test(expected = IllegalArgumentException.class) 500 public void testDoubleValueAt_Constant_NegativeIndex() { 501 final ListProperty<Double> localProperty = new SimpleListProperty<Double>(); 502 Bindings.doubleValueAt(localProperty, -1); 503 } 504 505 @Test 506 public void testDoubleValueAt_Variable() { 507 final double defaultData = 0.0; 508 final double localData1 = -Math.PI; 509 final double localData2 = Math.E; 510 final ListProperty<Double> localProperty = new SimpleListProperty<Double>(); 511 final ObservableList<Double> localList1 = FXCollections.observableArrayList(localData1, localData2); 512 final ObservableList<Double> localList2 = FXCollections.observableArrayList(); 513 514 final DoubleBinding binding = Bindings.doubleValueAt(localProperty, index); 515 DependencyUtils.checkDependencies(binding.getDependencies(), localProperty, index); 516 517 index.set(-1); 518 assertEquals(defaultData, binding.get(), EPSILON_DOUBLE); 519 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 520 index.set(0); 521 assertEquals(defaultData, binding.get(), EPSILON_DOUBLE); 522 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 523 524 localProperty.set(localList1); 525 index.set(-1); 526 assertEquals(defaultData, binding.get(), EPSILON_DOUBLE); 527 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 528 index.set(0); 529 assertEquals(localData1, binding.get(), EPSILON_DOUBLE); 530 index.set(1); 531 assertEquals(localData2, binding.get(), EPSILON_DOUBLE); 532 index.set(2); 533 assertEquals(defaultData, binding.get(), EPSILON_DOUBLE); 534 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 535 536 localProperty.remove(1); 537 index.set(-1); 538 assertEquals(defaultData, binding.get(), EPSILON_DOUBLE); 539 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 540 index.set(0); 541 assertEquals(localData1, binding.get(), EPSILON_DOUBLE); 542 index.set(1); 543 assertEquals(defaultData, binding.get(), EPSILON_DOUBLE); 544 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 545 546 localProperty.set(0, null); 547 index.set(-1); 548 assertEquals(defaultData, binding.get(), EPSILON_DOUBLE); 549 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 550 index.set(0); 551 assertEquals(defaultData, binding.get(), EPSILON_DOUBLE); 552 ErrorLoggingUtiltity.checkFine(NullPointerException.class); 553 index.set(1); 554 assertEquals(defaultData, binding.get(), EPSILON_DOUBLE); 555 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 556 557 localProperty.set(localList2); 558 index.set(-1); 559 assertEquals(defaultData, binding.get(), EPSILON_DOUBLE); 560 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 561 index.set(0); 562 assertEquals(defaultData, binding.get(), EPSILON_DOUBLE); 563 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 564 565 localProperty.addAll(localData2, localData2); 566 index.set(-1); 567 assertEquals(defaultData, binding.get(), EPSILON_DOUBLE); 568 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 569 index.set(0); 570 assertEquals(localData2, binding.get(), EPSILON_DOUBLE); 571 index.set(1); 572 assertEquals(localData2, binding.get(), EPSILON_DOUBLE); 573 index.set(2); 574 assertEquals(defaultData, binding.get(), EPSILON_DOUBLE); 575 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 576 577 localProperty.set(null); 578 index.set(-1); 579 assertEquals(defaultData, binding.get(), EPSILON_DOUBLE); 580 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 581 index.set(0); 582 assertEquals(defaultData, binding.get(), EPSILON_DOUBLE); 583 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 584 } 585 586 @Test(expected = NullPointerException.class) 587 public void testDoubleValueAt_Variable_Null() { 588 Bindings.doubleValueAt((ObservableList<Double>)null, index); 589 } 590 591 @Test(expected = NullPointerException.class) 592 public void testDoubleValueAt_Variable_NullIndex() { 593 final ListProperty<Double> localProperty = new SimpleListProperty<Double>(); 594 Bindings.doubleValueAt(localProperty, null); 595 } 596 597 @Test 598 public void testFloatValueAt_Constant() { 599 final float defaultData = 0.0f; 600 final float localData1 = (float)Math.PI; 601 final float localData2 = (float)-Math.E; 602 final ListProperty<Float> localProperty = new SimpleListProperty<Float>(); 603 final ObservableList<Float> localList1 = FXCollections.observableArrayList(localData1, localData2); 604 final ObservableList<Float> localList2 = FXCollections.observableArrayList(); 605 606 final FloatBinding binding0 = Bindings.floatValueAt(localProperty, 0); 607 final FloatBinding binding1 = Bindings.floatValueAt(localProperty, 1); 608 final FloatBinding binding2 = Bindings.floatValueAt(localProperty, 2); 609 DependencyUtils.checkDependencies(binding0.getDependencies(), localProperty); 610 DependencyUtils.checkDependencies(binding1.getDependencies(), localProperty); 611 DependencyUtils.checkDependencies(binding2.getDependencies(), localProperty); 612 assertEquals(defaultData, binding0.get(), EPSILON_FLOAT); 613 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 614 assertEquals(defaultData, binding1.get(), EPSILON_FLOAT); 615 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 616 assertEquals(defaultData, binding2.get(), EPSILON_FLOAT); 617 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 618 619 localProperty.set(localList1); 620 assertEquals(localData1, binding0.get(), EPSILON_FLOAT); 621 assertEquals(localData2, binding1.get(), EPSILON_FLOAT); 622 assertEquals(defaultData, binding2.get(), EPSILON_FLOAT); 623 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 624 625 localProperty.remove(1); 626 assertEquals(localData1, binding0.get(), EPSILON_FLOAT); 627 assertEquals(defaultData, binding1.get(), EPSILON_FLOAT); 628 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 629 assertEquals(defaultData, binding2.get(), EPSILON_FLOAT); 630 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 631 632 localProperty.set(localList2); 633 assertEquals(defaultData, binding0.get(), EPSILON_FLOAT); 634 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 635 assertEquals(defaultData, binding1.get(), EPSILON_FLOAT); 636 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 637 assertEquals(defaultData, binding2.get(), EPSILON_FLOAT); 638 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 639 640 localProperty.addAll(localData2, localData2); 641 assertEquals(localData2, binding0.get(), EPSILON_FLOAT); 642 assertEquals(localData2, binding1.get(), EPSILON_FLOAT); 643 assertEquals(defaultData, binding2.get(), EPSILON_FLOAT); 644 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 645 646 localProperty.set(null); 647 assertEquals(defaultData, binding0.get(), EPSILON_FLOAT); 648 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 649 assertEquals(defaultData, binding1.get(), EPSILON_FLOAT); 650 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 651 assertEquals(defaultData, binding2.get(), EPSILON_FLOAT); 652 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 653 } 654 655 @Test(expected = NullPointerException.class) 656 public void testFloatValueAt_Constant_Null() { 657 Bindings.floatValueAt((ObservableFloatArray) null, 0); 658 } 659 660 @Test(expected = IllegalArgumentException.class) 661 public void testFloatValueAt_Constant_NegativeIndex() { 662 final ListProperty<Float> localProperty = new SimpleListProperty<Float>(); 663 Bindings.floatValueAt(localProperty, -1); 664 } 665 666 @Test 667 public void testFloatValueAt_Variable() { 668 final float defaultData = 0.0f; 669 final float localData1 = (float)-Math.PI; 670 final float localData2 = (float)Math.E; 671 final ListProperty<Float> localProperty = new SimpleListProperty<Float>(); 672 final ObservableList<Float> localList1 = FXCollections.observableArrayList(localData1, localData2); 673 final ObservableList<Float> localList2 = FXCollections.observableArrayList(); 674 675 final FloatBinding binding = Bindings.floatValueAt(localProperty, index); 676 DependencyUtils.checkDependencies(binding.getDependencies(), localProperty, index); 677 678 index.set(-1); 679 assertEquals(defaultData, binding.get(), EPSILON_FLOAT); 680 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 681 index.set(0); 682 assertEquals(defaultData, binding.get(), EPSILON_FLOAT); 683 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 684 685 localProperty.set(localList1); 686 index.set(-1); 687 assertEquals(defaultData, binding.get(), EPSILON_FLOAT); 688 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 689 index.set(0); 690 assertEquals(localData1, binding.get(), EPSILON_FLOAT); 691 index.set(1); 692 assertEquals(localData2, binding.get(), EPSILON_FLOAT); 693 index.set(2); 694 assertEquals(defaultData, binding.get(), EPSILON_FLOAT); 695 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 696 697 localProperty.remove(1); 698 index.set(-1); 699 assertEquals(defaultData, binding.get(), EPSILON_FLOAT); 700 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 701 index.set(0); 702 assertEquals(localData1, binding.get(), EPSILON_FLOAT); 703 index.set(1); 704 assertEquals(defaultData, binding.get(), EPSILON_FLOAT); 705 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 706 707 localProperty.set(0, null); 708 index.set(-1); 709 assertEquals(defaultData, binding.get(), EPSILON_FLOAT); 710 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 711 index.set(0); 712 assertEquals(defaultData, binding.get(), EPSILON_FLOAT); 713 ErrorLoggingUtiltity.checkFine(NullPointerException.class); 714 index.set(1); 715 assertEquals(defaultData, binding.get(), EPSILON_FLOAT); 716 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 717 718 localProperty.set(localList2); 719 index.set(-1); 720 assertEquals(defaultData, binding.get(), EPSILON_FLOAT); 721 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 722 index.set(0); 723 assertEquals(defaultData, binding.get(), EPSILON_FLOAT); 724 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 725 726 localProperty.addAll(localData2, localData2); 727 index.set(-1); 728 assertEquals(defaultData, binding.get(), EPSILON_FLOAT); 729 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 730 index.set(0); 731 assertEquals(localData2, binding.get(), EPSILON_FLOAT); 732 index.set(1); 733 assertEquals(localData2, binding.get(), EPSILON_FLOAT); 734 index.set(2); 735 assertEquals(defaultData, binding.get(), EPSILON_FLOAT); 736 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 737 738 localProperty.set(null); 739 index.set(-1); 740 assertEquals(defaultData, binding.get(), EPSILON_FLOAT); 741 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 742 index.set(0); 743 assertEquals(defaultData, binding.get(), EPSILON_FLOAT); 744 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 745 } 746 747 @Test(expected = NullPointerException.class) 748 public void testFloatValueAt_Variable_Null() { 749 Bindings.floatValueAt((ObservableList<Float>)null, index); 750 } 751 752 @Test(expected = NullPointerException.class) 753 public void testFloatValueAt_Variable_NullIndex() { 754 final ListProperty<Float> localProperty = new SimpleListProperty<Float>(); 755 Bindings.floatValueAt(localProperty, null); 756 } 757 758 @Test 759 public void testIntegerValueAt_Constant() { 760 final int defaultData = 0; 761 final int localData1 = 42; 762 final int localData2 = -7; 763 final ListProperty<Integer> localProperty = new SimpleListProperty<Integer>(); 764 final ObservableList<Integer> localList1 = FXCollections.observableArrayList(localData1, localData2); 765 final ObservableList<Integer> localList2 = FXCollections.observableArrayList(); 766 767 final IntegerBinding binding0 = Bindings.integerValueAt(localProperty, 0); 768 final IntegerBinding binding1 = Bindings.integerValueAt(localProperty, 1); 769 final IntegerBinding binding2 = Bindings.integerValueAt(localProperty, 2); 770 DependencyUtils.checkDependencies(binding0.getDependencies(), localProperty); 771 DependencyUtils.checkDependencies(binding1.getDependencies(), localProperty); 772 DependencyUtils.checkDependencies(binding2.getDependencies(), localProperty); 773 assertEquals(defaultData, binding0.get()); 774 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 775 assertEquals(defaultData, binding1.get()); 776 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 777 assertEquals(defaultData, binding2.get()); 778 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 779 780 localProperty.set(localList1); 781 assertEquals(localData1, binding0.get()); 782 assertEquals(localData2, binding1.get()); 783 assertEquals(defaultData, binding2.get()); 784 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 785 786 localProperty.remove(1); 787 assertEquals(localData1, binding0.get()); 788 assertEquals(defaultData, binding1.get()); 789 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 790 assertEquals(defaultData, binding2.get()); 791 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 792 793 localProperty.set(localList2); 794 assertEquals(defaultData, binding0.get()); 795 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 796 assertEquals(defaultData, binding1.get()); 797 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 798 assertEquals(defaultData, binding2.get()); 799 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 800 801 localProperty.addAll(localData2, localData2); 802 assertEquals(localData2, binding0.get()); 803 assertEquals(localData2, binding1.get()); 804 assertEquals(defaultData, binding2.get()); 805 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 806 807 localProperty.set(null); 808 assertEquals(defaultData, binding0.get()); 809 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 810 assertEquals(defaultData, binding1.get()); 811 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 812 assertEquals(defaultData, binding2.get()); 813 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 814 } 815 816 @Test(expected = NullPointerException.class) 817 public void testIntegerValueAt_Constant_Null() { 818 Bindings.integerValueAt((ObservableIntegerArray) null, 0); 819 } 820 821 @Test(expected = IllegalArgumentException.class) 822 public void testIntegerValueAt_Constant_NegativeIndex() { 823 final ListProperty<Integer> localProperty = new SimpleListProperty<Integer>(); 824 Bindings.integerValueAt(localProperty, -1); 825 } 826 827 @Test 828 public void testIntegerValueAt_Variable() { 829 final int defaultData = 0; 830 final int localData1 = 42; 831 final int localData2 = -7; 832 final ListProperty<Integer> localProperty = new SimpleListProperty<Integer>(); 833 final ObservableList<Integer> localList1 = FXCollections.observableArrayList(localData1, localData2); 834 final ObservableList<Integer> localList2 = FXCollections.observableArrayList(); 835 836 final IntegerBinding binding = Bindings.integerValueAt(localProperty, index); 837 DependencyUtils.checkDependencies(binding.getDependencies(), localProperty, index); 838 839 index.set(-1); 840 assertEquals(defaultData, binding.get()); 841 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 842 index.set(0); 843 assertEquals(defaultData, binding.get()); 844 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 845 846 localProperty.set(localList1); 847 index.set(-1); 848 assertEquals(defaultData, binding.get()); 849 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 850 index.set(0); 851 assertEquals(localData1, binding.get()); 852 index.set(1); 853 assertEquals(localData2, binding.get()); 854 index.set(2); 855 assertEquals(defaultData, binding.get()); 856 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 857 858 localProperty.remove(1); 859 index.set(-1); 860 assertEquals(defaultData, binding.get()); 861 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 862 index.set(0); 863 assertEquals(localData1, binding.get()); 864 index.set(1); 865 assertEquals(defaultData, binding.get()); 866 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 867 868 localProperty.set(0, null); 869 index.set(-1); 870 assertEquals(defaultData, binding.get()); 871 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 872 index.set(0); 873 assertEquals(defaultData, binding.get()); 874 ErrorLoggingUtiltity.checkFine(NullPointerException.class); 875 index.set(1); 876 assertEquals(defaultData, binding.get()); 877 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 878 879 localProperty.set(localList2); 880 index.set(-1); 881 assertEquals(defaultData, binding.get()); 882 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 883 index.set(0); 884 assertEquals(defaultData, binding.get()); 885 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 886 887 localProperty.addAll(localData2, localData2); 888 index.set(-1); 889 assertEquals(defaultData, binding.get()); 890 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 891 index.set(0); 892 assertEquals(localData2, binding.get()); 893 index.set(1); 894 assertEquals(localData2, binding.get()); 895 index.set(2); 896 assertEquals(defaultData, binding.get()); 897 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 898 899 localProperty.set(null); 900 index.set(-1); 901 assertEquals(defaultData, binding.get()); 902 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 903 index.set(0); 904 assertEquals(defaultData, binding.get()); 905 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 906 } 907 908 @Test(expected = NullPointerException.class) 909 public void testIntegerValueAt_Variable_Null() { 910 Bindings.integerValueAt((ObservableList<Integer>)null, index); 911 } 912 913 @Test(expected = NullPointerException.class) 914 public void testIntegerValueAt_Variable_NullIndex() { 915 final ListProperty<Integer> localProperty = new SimpleListProperty<Integer>(); 916 Bindings.integerValueAt(localProperty, null); 917 } 918 919 @Test 920 public void testLongValueAt_Constant() { 921 final long defaultData = 0L; 922 final long localData1 = 1234567890987654321L; 923 final long localData2 = -987654321987654321L; 924 final ListProperty<Long> localProperty = new SimpleListProperty<Long>(); 925 final ObservableList<Long> localList1 = FXCollections.observableArrayList(localData1, localData2); 926 final ObservableList<Long> localList2 = FXCollections.observableArrayList(); 927 928 final LongBinding binding0 = Bindings.longValueAt(localProperty, 0); 929 final LongBinding binding1 = Bindings.longValueAt(localProperty, 1); 930 final LongBinding binding2 = Bindings.longValueAt(localProperty, 2); 931 DependencyUtils.checkDependencies(binding0.getDependencies(), localProperty); 932 DependencyUtils.checkDependencies(binding1.getDependencies(), localProperty); 933 DependencyUtils.checkDependencies(binding2.getDependencies(), localProperty); 934 assertEquals(defaultData, binding0.get()); 935 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 936 assertEquals(defaultData, binding1.get()); 937 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 938 assertEquals(defaultData, binding2.get()); 939 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 940 941 localProperty.set(localList1); 942 assertEquals(localData1, binding0.get()); 943 assertEquals(localData2, binding1.get()); 944 assertEquals(defaultData, binding2.get()); 945 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 946 947 localProperty.remove(1); 948 assertEquals(localData1, binding0.get()); 949 assertEquals(defaultData, binding1.get()); 950 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 951 assertEquals(defaultData, binding2.get()); 952 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 953 954 localProperty.set(localList2); 955 assertEquals(defaultData, binding0.get()); 956 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 957 assertEquals(defaultData, binding1.get()); 958 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 959 assertEquals(defaultData, binding2.get()); 960 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 961 962 localProperty.addAll(localData2, localData2); 963 assertEquals(localData2, binding0.get()); 964 assertEquals(localData2, binding1.get()); 965 assertEquals(defaultData, binding2.get()); 966 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 967 968 localProperty.set(null); 969 assertEquals(defaultData, binding0.get()); 970 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 971 assertEquals(defaultData, binding1.get()); 972 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 973 assertEquals(defaultData, binding2.get()); 974 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 975 } 976 977 @Test(expected = NullPointerException.class) 978 public void testLongValueAt_Constant_Null() { 979 Bindings.longValueAt(null, 0); 980 } 981 982 @Test(expected = IllegalArgumentException.class) 983 public void testLongValueAt_Constant_NegativeIndex() { 984 final ListProperty<Long> localProperty = new SimpleListProperty<Long>(); 985 Bindings.longValueAt(localProperty, -1); 986 } 987 988 @Test 989 public void testLongValueAt_Variable() { 990 final long defaultData = 0; 991 final long localData1 = 98765432123456789L; 992 final long localData2 = -1234567890123456789L; 993 final ListProperty<Long> localProperty = new SimpleListProperty<Long>(); 994 final ObservableList<Long> localList1 = FXCollections.observableArrayList(localData1, localData2); 995 final ObservableList<Long> localList2 = FXCollections.observableArrayList(); 996 997 final LongBinding binding = Bindings.longValueAt(localProperty, index); 998 DependencyUtils.checkDependencies(binding.getDependencies(), localProperty, index); 999 1000 index.set(-1); 1001 assertEquals(defaultData, binding.get()); 1002 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1003 index.set(0); 1004 assertEquals(defaultData, binding.get()); 1005 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1006 1007 localProperty.set(localList1); 1008 index.set(-1); 1009 assertEquals(defaultData, binding.get()); 1010 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1011 index.set(0); 1012 assertEquals(localData1, binding.get()); 1013 index.set(1); 1014 assertEquals(localData2, binding.get()); 1015 index.set(2); 1016 assertEquals(defaultData, binding.get()); 1017 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1018 1019 localProperty.remove(1); 1020 index.set(-1); 1021 assertEquals(defaultData, binding.get()); 1022 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1023 index.set(0); 1024 assertEquals(localData1, binding.get()); 1025 index.set(1); 1026 assertEquals(defaultData, binding.get()); 1027 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1028 1029 localProperty.set(0, null); 1030 index.set(-1); 1031 assertEquals(defaultData, binding.get()); 1032 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1033 index.set(0); 1034 assertEquals(defaultData, binding.get()); 1035 ErrorLoggingUtiltity.checkFine(NullPointerException.class); 1036 index.set(1); 1037 assertEquals(defaultData, binding.get()); 1038 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1039 1040 localProperty.set(localList2); 1041 index.set(-1); 1042 assertEquals(defaultData, binding.get()); 1043 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1044 index.set(0); 1045 assertEquals(defaultData, binding.get()); 1046 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1047 1048 localProperty.addAll(localData2, localData2); 1049 index.set(-1); 1050 assertEquals(defaultData, binding.get()); 1051 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1052 index.set(0); 1053 assertEquals(localData2, binding.get()); 1054 index.set(1); 1055 assertEquals(localData2, binding.get()); 1056 index.set(2); 1057 assertEquals(defaultData, binding.get()); 1058 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1059 1060 localProperty.set(null); 1061 index.set(-1); 1062 assertEquals(defaultData, binding.get()); 1063 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1064 index.set(0); 1065 assertEquals(defaultData, binding.get()); 1066 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1067 } 1068 1069 @Test(expected = NullPointerException.class) 1070 public void testLongValueAt_Variable_Null() { 1071 Bindings.longValueAt((ObservableList<Long>)null, index); 1072 } 1073 1074 @Test(expected = NullPointerException.class) 1075 public void testLongValueAt_Variable_NullIndex() { 1076 final ListProperty<Long> localProperty = new SimpleListProperty<Long>(); 1077 Bindings.longValueAt(localProperty, null); 1078 } 1079 1080 @Test 1081 public void testStringValueAt_Constant() { 1082 final String defaultData = null; 1083 final String localData1 = "Hello World"; 1084 final String localData2 = "Goodbye World"; 1085 final ListProperty<String> localProperty = new SimpleListProperty<String>(); 1086 final ObservableList<String> localList1 = FXCollections.observableArrayList(localData1, localData2); 1087 final ObservableList<String> localList2 = FXCollections.observableArrayList(); 1088 1089 final StringBinding binding0 = Bindings.stringValueAt(localProperty, 0); 1090 final StringBinding binding1 = Bindings.stringValueAt(localProperty, 1); 1091 final StringBinding binding2 = Bindings.stringValueAt(localProperty, 2); 1092 DependencyUtils.checkDependencies(binding0.getDependencies(), localProperty); 1093 DependencyUtils.checkDependencies(binding1.getDependencies(), localProperty); 1094 DependencyUtils.checkDependencies(binding2.getDependencies(), localProperty); 1095 assertEquals(defaultData, binding0.get()); 1096 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1097 assertEquals(defaultData, binding1.get()); 1098 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1099 assertEquals(defaultData, binding2.get()); 1100 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1101 1102 localProperty.set(localList1); 1103 assertEquals(localData1, binding0.get()); 1104 assertEquals(localData2, binding1.get()); 1105 assertEquals(defaultData, binding2.get()); 1106 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1107 1108 localProperty.remove(1); 1109 assertEquals(localData1, binding0.get()); 1110 assertEquals(defaultData, binding1.get()); 1111 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1112 assertEquals(defaultData, binding2.get()); 1113 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1114 1115 localProperty.set(localList2); 1116 assertEquals(defaultData, binding0.get()); 1117 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1118 assertEquals(defaultData, binding1.get()); 1119 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1120 assertEquals(defaultData, binding2.get()); 1121 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1122 1123 localProperty.addAll(localData2, localData2); 1124 assertEquals(localData2, binding0.get()); 1125 assertEquals(localData2, binding1.get()); 1126 assertEquals(defaultData, binding2.get()); 1127 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1128 1129 localProperty.set(null); 1130 assertEquals(defaultData, binding0.get()); 1131 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1132 assertEquals(defaultData, binding1.get()); 1133 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1134 assertEquals(defaultData, binding2.get()); 1135 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1136 } 1137 1138 @Test(expected = NullPointerException.class) 1139 public void testStringValueAt_Constant_Null() { 1140 Bindings.stringValueAt(null, 0); 1141 } 1142 1143 @Test(expected = IllegalArgumentException.class) 1144 public void testStringValueAt_Constant_NegativeIndex() { 1145 final ListProperty<String> localProperty = new SimpleListProperty<String>(); 1146 Bindings.stringValueAt(localProperty, -1); 1147 } 1148 1149 @Test 1150 public void testStringValueAt_Variable() { 1151 final String defaultData = null; 1152 final String localData1 = "Goodbye"; 1153 final String localData2 = "Hello"; 1154 final ListProperty<String> localProperty = new SimpleListProperty<String>(); 1155 final ObservableList<String> localList1 = FXCollections.observableArrayList(localData1, localData2); 1156 final ObservableList<String> localList2 = FXCollections.observableArrayList(); 1157 1158 final StringBinding binding = Bindings.stringValueAt(localProperty, index); 1159 DependencyUtils.checkDependencies(binding.getDependencies(), localProperty, index); 1160 1161 index.set(-1); 1162 assertEquals(defaultData, binding.get()); 1163 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1164 index.set(0); 1165 assertEquals(defaultData, binding.get()); 1166 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1167 1168 localProperty.set(localList1); 1169 index.set(-1); 1170 assertEquals(defaultData, binding.get()); 1171 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1172 index.set(0); 1173 assertEquals(localData1, binding.get()); 1174 index.set(1); 1175 assertEquals(localData2, binding.get()); 1176 index.set(2); 1177 assertEquals(defaultData, binding.get()); 1178 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1179 1180 localProperty.remove(1); 1181 index.set(-1); 1182 assertEquals(defaultData, binding.get()); 1183 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1184 index.set(0); 1185 assertEquals(localData1, binding.get()); 1186 index.set(1); 1187 assertEquals(defaultData, binding.get()); 1188 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1189 1190 localProperty.set(localList2); 1191 index.set(-1); 1192 assertEquals(defaultData, binding.get()); 1193 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1194 index.set(0); 1195 assertEquals(defaultData, binding.get()); 1196 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1197 1198 localProperty.addAll(localData2, localData2); 1199 index.set(-1); 1200 assertEquals(defaultData, binding.get()); 1201 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1202 index.set(0); 1203 assertEquals(localData2, binding.get()); 1204 index.set(1); 1205 assertEquals(localData2, binding.get()); 1206 index.set(2); 1207 assertEquals(defaultData, binding.get()); 1208 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1209 1210 localProperty.set(null); 1211 index.set(-1); 1212 assertEquals(defaultData, binding.get()); 1213 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1214 index.set(0); 1215 assertEquals(defaultData, binding.get()); 1216 ErrorLoggingUtiltity.checkFine(IndexOutOfBoundsException.class); 1217 } 1218 1219 @Test(expected = NullPointerException.class) 1220 public void testStringValueAt_Variable_Null() { 1221 Bindings.stringValueAt((ObservableList<String>)null, index); 1222 } 1223 1224 @Test(expected = NullPointerException.class) 1225 public void testStringValueAt_Variable_NullIndex() { 1226 final ListProperty<String> localProperty = new SimpleListProperty<String>(); 1227 Bindings.stringValueAt(localProperty, null); 1228 } 1229 1230 1231 }