1 /* 2 * Copyright (c) 2011, 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.beans.property; 27 28 import javafx.beans.InvalidationListener; 29 import javafx.beans.property.IntegerProperty; 30 import javafx.beans.property.ObjectProperty; 31 import javafx.beans.property.SimpleIntegerProperty; 32 import javafx.beans.property.SimpleObjectProperty; 33 import javafx.beans.value.ChangeListener; 34 import javafx.beans.value.ObservableValue; 35 import test.com.sun.javafx.binding.ErrorLoggingUtiltity; 36 import org.junit.BeforeClass; 37 import org.junit.Test; 38 39 import static org.junit.Assert.*; 40 41 public class IntegerPropertyTest { 42 43 private static final Object NO_BEAN = null; 44 private static final String NO_NAME_1 = null; 45 private static final String NO_NAME_2 = ""; 46 private static final int VALUE_1 = 42; 47 private static final int VALUE_2 = -13; 48 private static final int DEFAULT = 0; 49 50 @BeforeClass 51 public static void setUpClass() { 52 ErrorLoggingUtiltity.reset(); 53 } 54 55 @Test 56 public void testSetValue_Null() { 57 final IntegerProperty p = new SimpleIntegerProperty(VALUE_1); 58 p.setValue(null); 59 assertEquals(DEFAULT, p.get()); 60 ErrorLoggingUtiltity.checkFine(NullPointerException.class); 61 } 62 63 @Test 64 public void testBindBidirectional() { 65 final IntegerProperty p1 = new SimpleIntegerProperty(VALUE_2); 66 final IntegerProperty p2 = new SimpleIntegerProperty(VALUE_1); 67 68 p1.bindBidirectional(p2); 69 assertEquals(VALUE_1, p1.get()); 70 assertEquals(VALUE_1, p2.get()); 71 72 p1.set(VALUE_2); 73 assertEquals(VALUE_2, p1.get()); 74 assertEquals(VALUE_2, p2.get()); 75 76 p2.set(VALUE_1); 77 assertEquals(VALUE_1, p1.get()); 78 assertEquals(VALUE_1, p2.get()); 79 80 p1.unbindBidirectional(p2); 81 p1.set(VALUE_2); 82 assertEquals(VALUE_2, p1.get()); 83 assertEquals(VALUE_1, p2.get()); 84 85 p1.set(VALUE_1); 86 p2.set(VALUE_2); 87 assertEquals(VALUE_1, p1.get()); 88 assertEquals(VALUE_2, p2.get()); 89 } 90 91 @Test 92 public void testToString() { 93 final IntegerProperty v0 = new IntegerPropertyStub(NO_BEAN, NO_NAME_1); 94 assertEquals("IntegerProperty [value: " + DEFAULT + "]", v0.toString()); 95 96 final IntegerProperty v1 = new IntegerPropertyStub(NO_BEAN, NO_NAME_2); 97 assertEquals("IntegerProperty [value: " + DEFAULT + "]", v1.toString()); 98 99 final Object bean = new Object(); 100 final String name = "My name"; 101 final IntegerProperty v2 = new IntegerPropertyStub(bean, name); 102 assertEquals("IntegerProperty [bean: " + bean.toString() + ", name: My name, value: " + DEFAULT + "]", v2.toString()); 103 v2.set(VALUE_1); 104 assertEquals("IntegerProperty [bean: " + bean.toString() + ", name: My name, value: " + VALUE_1 + "]", v2.toString()); 105 106 final IntegerProperty v3 = new IntegerPropertyStub(bean, NO_NAME_1); 107 assertEquals("IntegerProperty [bean: " + bean.toString() + ", value: " + DEFAULT + "]", v3.toString()); 108 v3.set(VALUE_1); 109 assertEquals("IntegerProperty [bean: " + bean.toString() + ", value: " + VALUE_1 + "]", v3.toString()); 110 111 final IntegerProperty v4 = new IntegerPropertyStub(bean, NO_NAME_2); 112 assertEquals("IntegerProperty [bean: " + bean.toString() + ", value: " + DEFAULT + "]", v4.toString()); 113 v4.set(VALUE_1); 114 assertEquals("IntegerProperty [bean: " + bean.toString() + ", value: " + VALUE_1 + "]", v4.toString()); 115 116 final IntegerProperty v5 = new IntegerPropertyStub(NO_BEAN, name); 117 assertEquals("IntegerProperty [name: My name, value: " + DEFAULT + "]", v5.toString()); 118 v5.set(VALUE_1); 119 assertEquals("IntegerProperty [name: My name, value: " + VALUE_1 + "]", v5.toString()); 120 } 121 122 @Test 123 public void testAsObject() { 124 final IntegerProperty valueModel = new SimpleIntegerProperty(); 125 final ObjectProperty<Integer> exp = valueModel.asObject(); 126 127 assertEquals(Integer.valueOf(0), exp.getValue()); 128 valueModel.set(-4354); 129 assertEquals(Integer.valueOf(-4354), exp.getValue()); 130 valueModel.set(5); 131 assertEquals(Integer.valueOf(5), exp.getValue()); 132 133 exp.set(10); 134 assertEquals(10, valueModel.intValue()); 135 136 } 137 138 @Test 139 public void testObjectToInteger() { 140 final ObjectProperty<Integer> valueModel = new SimpleObjectProperty<Integer>(2); 141 final IntegerProperty exp = IntegerProperty.integerProperty(valueModel); 142 143 assertEquals(2, exp.intValue()); 144 valueModel.set(-4354); 145 assertEquals(-4354, exp.intValue()); 146 valueModel.set(5); 147 assertEquals(5, exp.intValue()); 148 149 exp.set(10); 150 assertEquals(Integer.valueOf(10), valueModel.getValue()); 151 152 } 153 154 private class IntegerPropertyStub extends IntegerProperty { 155 156 private final Object bean; 157 private final String name; 158 private int value; 159 160 private IntegerPropertyStub(Object bean, String name) { 161 this.bean = bean; 162 this.name = name; 163 } 164 165 @Override 166 public Object getBean() { 167 return bean; 168 } 169 170 @Override 171 public String getName() { 172 return name; 173 } 174 175 @Override 176 public int get() { 177 return value; 178 } 179 180 @Override 181 public void set(int value) { 182 this.value = value; 183 } 184 185 @Override 186 public void bind(ObservableValue<? extends Number> observable) { 187 fail("Not in use"); 188 } 189 190 @Override 191 public void unbind() { 192 fail("Not in use"); 193 } 194 195 @Override 196 public boolean isBound() { 197 fail("Not in use"); 198 return false; 199 } 200 201 @Override 202 public void addListener(ChangeListener<? super Number> listener) { 203 fail("Not in use"); 204 } 205 206 @Override 207 public void removeListener(ChangeListener<? super Number> listener) { 208 fail("Not in use"); 209 } 210 211 @Override 212 public void addListener(InvalidationListener listener) { 213 fail("Not in use"); 214 } 215 216 @Override 217 public void removeListener(InvalidationListener listener) { 218 fail("Not in use"); 219 } 220 221 } 222 }