1 /* 2 * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package test.javafx.binding.expression; 27 28 import javafx.beans.binding.BooleanBinding; 29 import javafx.beans.property.IntegerProperty; 30 import javafx.beans.property.MapProperty; 31 import javafx.beans.property.SimpleIntegerProperty; 32 import javafx.beans.property.SimpleMapProperty; 33 import javafx.collections.FXCollections; 34 import javafx.collections.ObservableMap; 35 import org.junit.Before; 36 import org.junit.Test; 37 38 import java.util.Collections; 39 import java.util.HashMap; 40 import java.util.Map; 41 42 import static org.junit.Assert.*; 43 44 public class MapExpressionTest { 45 46 private static final Number key1_0 = 4711; 47 private static final Number key2_0 = 4711; 48 private static final Number key2_1 = 4712; 49 private static final Number keyx = 4710; 50 private static final Integer data1_0 = 7; 51 private static final Integer data2_0 = 42; 52 private static final Integer data2_1 = -3; 53 private static final Integer datax = Integer.MAX_VALUE; 54 55 private MapProperty<Number, Integer> opNull; 56 private MapProperty<Number, Integer> opEmpty; 57 private MapProperty<Number, Integer> op1; 58 private MapProperty<Number, Integer> op2; 59 60 @Before 61 public void setUp() { 62 opNull = new SimpleMapProperty<Number, Integer>(); 63 opEmpty = new SimpleMapProperty<Number, Integer>(FXCollections.observableMap(Collections.<Number, Integer>emptyMap())); 64 op1 = new SimpleMapProperty<Number, Integer>(FXCollections.observableMap(Collections.singletonMap(key1_0, data1_0))); 65 final Map<Number, Integer> map = new HashMap<Number, Integer>(); 66 map.put(key2_0, data2_0); 67 map.put(key2_1, data2_1); 68 op2 = new SimpleMapProperty<Number, Integer>(FXCollections.observableMap(map)); 69 } 70 71 @Test 72 public void testGetSize() { 73 assertEquals(0, opNull.getSize()); 74 assertEquals(0, opEmpty.getSize()); 75 assertEquals(1, op1.getSize()); 76 assertEquals(2, op2.getSize()); 77 } 78 79 @Test 80 public void testValueAt_Constant() { 81 assertNull(opNull.valueAt(0).get()); 82 assertNull(opEmpty.valueAt(0).get()); 83 84 assertEquals(data1_0, op1.valueAt(key1_0).get()); 85 assertNull(op1.valueAt(keyx).get()); 86 87 assertEquals(data2_0, op2.valueAt(key2_0).get()); 88 assertEquals(data2_1, op2.valueAt(key2_1).get()); 89 assertNull(op2.valueAt(keyx).get()); 90 } 91 92 @Test 93 public void testValueAt_Variable() { 94 final IntegerProperty index = new SimpleIntegerProperty(keyx.intValue()); 95 96 assertNull(opNull.valueAt(index).get()); 97 assertNull(opNull.valueAt(index).get()); 98 assertNull(opEmpty.valueAt(index).get()); 99 assertNull(op1.valueAt(index).get()); 100 assertNull(op2.valueAt(index).get()); 101 102 index.set(key1_0.intValue()); 103 assertNull(opNull.valueAt(index).get()); 104 assertNull(opEmpty.valueAt(index).get()); 105 assertEquals(data1_0, op1.valueAt(index).get()); 106 assertEquals(data2_0, op2.valueAt(index).get()); 107 108 index.set(key2_1.intValue()); 109 assertNull(opNull.valueAt(index).get()); 110 assertNull(opEmpty.valueAt(index).get()); 111 assertNull(op1.valueAt(index).get()); 112 assertEquals(data2_1, op2.valueAt(index).get()); 113 } 114 115 @Test 116 public void testIsEqualTo() { 117 final ObservableMap<Number, Integer> emptyMap = FXCollections.observableMap(Collections.<Number, Integer>emptyMap()); 118 final ObservableMap<Number, Integer> map1 = FXCollections.observableMap(Collections.singletonMap(key1_0, data1_0)); 119 final Map<Number, Integer> map = new HashMap<Number, Integer>(); 120 map.put(key2_0, data2_0); 121 map.put(key2_1, data2_1); 122 final ObservableMap<Number, Integer> map2= FXCollections.observableMap(map); 123 124 BooleanBinding binding = opNull.isEqualTo(emptyMap); 125 assertEquals(false, binding.get()); 126 binding = opNull.isEqualTo(map1); 127 assertEquals(false, binding.get()); 128 binding = opNull.isEqualTo(map2); 129 assertEquals(false, binding.get()); 130 131 binding = opEmpty.isEqualTo(emptyMap); 132 assertEquals(true, binding.get()); 133 binding = opEmpty.isEqualTo(map1); 134 assertEquals(false, binding.get()); 135 binding = opEmpty.isEqualTo(map2); 136 assertEquals(false, binding.get()); 137 138 binding = op1.isEqualTo(emptyMap); 139 assertEquals(false, binding.get()); 140 binding = op1.isEqualTo(map1); 141 assertEquals(true, binding.get()); 142 binding = op1.isEqualTo(map2); 143 assertEquals(false, binding.get()); 144 145 binding = op2.isEqualTo(emptyMap); 146 assertEquals(false, binding.get()); 147 binding = op2.isEqualTo(map1); 148 assertEquals(false, binding.get()); 149 binding = op2.isEqualTo(map2); 150 assertEquals(true, binding.get()); 151 } 152 153 154 @Test 155 public void testIsNotEqualTo() { 156 final ObservableMap<Number, Integer> emptyMap = FXCollections.observableMap(Collections.<Number, Integer>emptyMap()); 157 final ObservableMap<Number, Integer> list1 = FXCollections.observableMap(Collections.singletonMap(key1_0, data1_0)); 158 final Map<Number, Integer> map = new HashMap<Number, Integer>(); 159 map.put(key2_0, data2_0); 160 map.put(key2_1, data2_1); 161 final ObservableMap<Number, Integer> list2 = FXCollections.observableMap(map); 162 163 BooleanBinding binding = opNull.isNotEqualTo(emptyMap); 164 assertEquals(true, binding.get()); 165 binding = opNull.isNotEqualTo(list1); 166 assertEquals(true, binding.get()); 167 binding = opNull.isNotEqualTo(list2); 168 assertEquals(true, binding.get()); 169 170 binding = opEmpty.isNotEqualTo(emptyMap); 171 assertEquals(false, binding.get()); 172 binding = opEmpty.isNotEqualTo(list1); 173 assertEquals(true, binding.get()); 174 binding = opEmpty.isNotEqualTo(list2); 175 assertEquals(true, binding.get()); 176 177 binding = op1.isNotEqualTo(emptyMap); 178 assertEquals(true, binding.get()); 179 binding = op1.isNotEqualTo(list1); 180 assertEquals(false, binding.get()); 181 binding = op1.isNotEqualTo(list2); 182 assertEquals(true, binding.get()); 183 184 binding = op2.isNotEqualTo(emptyMap); 185 assertEquals(true, binding.get()); 186 binding = op2.isNotEqualTo(list1); 187 assertEquals(true, binding.get()); 188 binding = op2.isNotEqualTo(list2); 189 assertEquals(false, binding.get()); 190 } 191 192 @Test 193 public void testIsNull() { 194 assertTrue(opNull.isNull().get()); 195 assertFalse(opEmpty.isNull().get()); 196 assertFalse(op1.isNull().get()); 197 assertFalse(op2.isNull().get()); 198 } 199 200 @Test 201 public void testIsNotNull() { 202 assertFalse(opNull.isNotNull().get()); 203 assertTrue(opEmpty.isNotNull().get()); 204 assertTrue(op1.isNotNull().get()); 205 assertTrue(op2.isNotNull().get()); 206 } 207 208 @Test 209 public void testAsString() { 210 assertEquals("null", opNull.asString().get()); 211 assertEquals(Collections.emptyMap().toString(), opEmpty.asString().get()); 212 assertEquals(Collections.singletonMap(key1_0, data1_0).toString(), op1.asString().get()); 213 } 214 215 @Test 216 public void testSize() { 217 assertEquals(0, opNull.size()); 218 assertEquals(0, opEmpty.size()); 219 assertEquals(1, op1.size()); 220 assertEquals(2, op2.size()); 221 } 222 223 @Test 224 public void testIsEmpty() { 225 assertTrue(opNull.isEmpty()); 226 assertTrue(opEmpty.isEmpty()); 227 assertFalse(op1.isEmpty()); 228 assertFalse(op2.isEmpty()); 229 } 230 231 @Test 232 public void testContainsKey() { 233 assertFalse(opNull.containsKey(key1_0)); 234 assertFalse(opNull.containsKey(key2_0)); 235 assertFalse(opNull.containsKey(key2_1)); 236 237 assertFalse(opEmpty.containsKey(key1_0)); 238 assertFalse(opEmpty.containsKey(key2_0)); 239 assertFalse(opEmpty.containsKey(key2_1)); 240 241 assertTrue(op1.containsKey(key1_0)); 242 assertFalse(op1.containsKey(key2_1)); 243 244 assertTrue(op2.containsKey(key2_0)); 245 assertTrue(op2.containsKey(key2_1)); 246 } 247 248 @Test 249 public void testContainsValue() { 250 assertFalse(opNull.containsValue(data1_0)); 251 assertFalse(opNull.containsValue(data2_0)); 252 assertFalse(opNull.containsValue(data2_1)); 253 254 assertFalse(opEmpty.containsValue(data1_0)); 255 assertFalse(opEmpty.containsValue(data2_0)); 256 assertFalse(opEmpty.containsValue(data2_1)); 257 258 assertTrue(op1.containsValue(data1_0)); 259 assertFalse(op1.containsValue(data2_0)); 260 assertFalse(op1.containsValue(data2_1)); 261 262 assertFalse(op2.containsValue(data1_0)); 263 assertTrue(op2.containsValue(data2_0)); 264 assertTrue(op2.containsValue(data2_1)); 265 } 266 267 268 }