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 com.sun.javafx.binding; 27 28 import static org.junit.Assert.*; 29 30 import javafx.beans.WeakListener; 31 import org.junit.Test; 32 33 public class ExpressionHelperBaseTest { 34 35 private static final Object listener = new Object(); 36 private static final Object listener2 = new Object(); 37 38 private static final WeakListener validWeakListener = () -> false; 39 40 private static final WeakListener gcedWeakListener = () -> true; 41 42 @Test 43 public void testEmptyArray() { 44 Object[] array = new Object[0]; 45 assertEquals(0, ExpressionHelperBase.trim(0, array)); 46 assertArrayEquals(new Object[0], array); 47 48 array = new Object[1]; 49 assertEquals(0, ExpressionHelperBase.trim(0, array)); 50 assertArrayEquals(new Object[1], array); 51 } 52 53 @Test 54 public void testSingleElement() { 55 Object[] array = new Object[] {listener}; 56 assertEquals(1, ExpressionHelperBase.trim(1, array)); 57 assertArrayEquals(new Object[] {listener}, array); 58 59 array = new Object[] {validWeakListener}; 60 assertEquals(1, ExpressionHelperBase.trim(1, array)); 61 assertArrayEquals(new Object[] {validWeakListener}, array); 62 63 array = new Object[] {gcedWeakListener}; 64 assertEquals(0, ExpressionHelperBase.trim(1, array)); 65 assertArrayEquals(new Object[] {null}, array); 66 67 array = new Object[] {listener, null}; 68 assertEquals(1, ExpressionHelperBase.trim(1, array)); 69 assertArrayEquals(new Object[] {listener, null}, array); 70 71 array = new Object[] {validWeakListener, null}; 72 assertEquals(1, ExpressionHelperBase.trim(1, array)); 73 assertArrayEquals(new Object[] {validWeakListener, null}, array); 74 75 array = new Object[] {gcedWeakListener, null}; 76 assertEquals(0, ExpressionHelperBase.trim(1, array)); 77 assertArrayEquals(new Object[] {null, null}, array); 78 } 79 80 @Test 81 public void testMultipleElements() { 82 Object[] array = new Object[] {validWeakListener, listener, listener2}; 83 assertEquals(3, ExpressionHelperBase.trim(3, array)); 84 assertArrayEquals(new Object[] {validWeakListener, listener, listener2}, array); 85 86 array = new Object[] {listener, validWeakListener, listener2}; 87 assertEquals(3, ExpressionHelperBase.trim(3, array)); 88 assertArrayEquals(new Object[] {listener, validWeakListener, listener2}, array); 89 90 array = new Object[] {listener, listener2, validWeakListener}; 91 assertEquals(3, ExpressionHelperBase.trim(3, array)); 92 assertArrayEquals(new Object[] {listener, listener2, validWeakListener}, array); 93 94 array = new Object[] {validWeakListener, listener, listener2, null}; 95 assertEquals(3, ExpressionHelperBase.trim(3, array)); 96 assertArrayEquals(new Object[] {validWeakListener, listener, listener2, null}, array); 97 98 array = new Object[] {listener, validWeakListener, listener2, null}; 99 assertEquals(3, ExpressionHelperBase.trim(3, array)); 100 assertArrayEquals(new Object[] {listener, validWeakListener, listener2, null}, array); 101 102 array = new Object[] {listener, listener2, validWeakListener, null}; 103 assertEquals(3, ExpressionHelperBase.trim(3, array)); 104 assertArrayEquals(new Object[] {listener, listener2, validWeakListener, null}, array); 105 106 107 array = new Object[] {gcedWeakListener, validWeakListener, listener}; 108 assertEquals(2, ExpressionHelperBase.trim(3, array)); 109 assertArrayEquals(new Object[] {validWeakListener, listener, null}, array); 110 111 array = new Object[] {gcedWeakListener, listener, validWeakListener}; 112 assertEquals(2, ExpressionHelperBase.trim(3, array)); 113 assertArrayEquals(new Object[] {listener, validWeakListener, null}, array); 114 115 array = new Object[] {gcedWeakListener, validWeakListener, listener, null}; 116 assertEquals(2, ExpressionHelperBase.trim(3, array)); 117 assertArrayEquals(new Object[] {validWeakListener, listener, null, null}, array); 118 119 array = new Object[] {gcedWeakListener, listener, validWeakListener, null}; 120 assertEquals(2, ExpressionHelperBase.trim(3, array)); 121 assertArrayEquals(new Object[] {listener, validWeakListener, null, null}, array); 122 123 124 array = new Object[] {validWeakListener, gcedWeakListener, listener}; 125 assertEquals(2, ExpressionHelperBase.trim(3, array)); 126 assertArrayEquals(new Object[] {validWeakListener, listener, null}, array); 127 128 array = new Object[] {listener, gcedWeakListener, validWeakListener}; 129 assertEquals(2, ExpressionHelperBase.trim(3, array)); 130 assertArrayEquals(new Object[] {listener, validWeakListener, null}, array); 131 132 array = new Object[] {validWeakListener, gcedWeakListener, listener, null}; 133 assertEquals(2, ExpressionHelperBase.trim(3, array)); 134 assertArrayEquals(new Object[] {validWeakListener, listener, null, null}, array); 135 136 array = new Object[] {listener, gcedWeakListener, validWeakListener, null}; 137 assertEquals(2, ExpressionHelperBase.trim(3, array)); 138 assertArrayEquals(new Object[] {listener, validWeakListener, null, null}, array); 139 140 141 array = new Object[] {validWeakListener, listener, gcedWeakListener}; 142 assertEquals(2, ExpressionHelperBase.trim(3, array)); 143 assertArrayEquals(new Object[] {validWeakListener, listener, null}, array); 144 145 array = new Object[] {listener, validWeakListener, gcedWeakListener}; 146 assertEquals(2, ExpressionHelperBase.trim(3, array)); 147 assertArrayEquals(new Object[] {listener, validWeakListener, null}, array); 148 149 array = new Object[] {validWeakListener, listener, gcedWeakListener, null}; 150 assertEquals(2, ExpressionHelperBase.trim(3, array)); 151 assertArrayEquals(new Object[] {validWeakListener, listener, null, null}, array); 152 153 array = new Object[] {listener, validWeakListener, gcedWeakListener, null}; 154 assertEquals(2, ExpressionHelperBase.trim(3, array)); 155 assertArrayEquals(new Object[] {listener, validWeakListener, null, null}, array); 156 157 158 array = new Object[] {gcedWeakListener, gcedWeakListener}; 159 assertEquals(0, ExpressionHelperBase.trim(2, array)); 160 assertArrayEquals(new Object[] {null, null}, array); 161 162 array = new Object[] {gcedWeakListener, gcedWeakListener, null}; 163 assertEquals(0, ExpressionHelperBase.trim(2, array)); 164 assertArrayEquals(new Object[] {null, null, null}, array); 165 } 166 167 168 }