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; 27 28 import static org.junit.Assert.assertEquals; 29 import javafx.beans.binding.Binding; 30 import javafx.beans.binding.Bindings; 31 import javafx.beans.property.Property; 32 import javafx.beans.property.SimpleDoubleProperty; 33 import javafx.beans.property.SimpleFloatProperty; 34 import javafx.beans.property.SimpleIntegerProperty; 35 import javafx.beans.property.SimpleLongProperty; 36 import javafx.beans.value.ObservableNumberValue; 37 38 public class When_Float_Test extends WhenTestBase<Number, Property<Number>> { 39 @SuppressWarnings("unchecked") 40 public When_Float_Test() { 41 super( 42 -(float) Math.PI, 0.0f, EPSILON_FLOAT, Float.MAX_VALUE, 43 new SimpleFloatProperty(), new SimpleDoubleProperty(), new SimpleFloatProperty(), new SimpleLongProperty(), new SimpleIntegerProperty() 44 ); 45 } 46 47 @SuppressWarnings("unchecked") 48 @Override 49 public Binding<Number>[] generatePropertyPropertyList(Property<Number> p0, Property<Number>[] props) { 50 final int n = props.length; 51 final Binding<Number>[] result = new Binding[n]; 52 for (int i=0; i<n; i++) { 53 result[i] = Bindings.when(cond).then((ObservableNumberValue)p0).otherwise((ObservableNumberValue)props[i]); 54 } 55 return result; 56 } 57 58 @Override 59 public Binding<Number> generatePropertyProperty(Property<Number> op0, Property<Number> op1) { 60 return Bindings.when(cond).then((ObservableNumberValue)op0).otherwise((ObservableNumberValue)op1); 61 } 62 63 @SuppressWarnings("unchecked") 64 @Override 65 public Binding<Number>[] generatePropertyPrimitive(Property<Number> op0, Number op1) { 66 final ObservableNumberValue p0 = (ObservableNumberValue)op0; 67 return new Binding[] { 68 Bindings.when(cond).then(p0).otherwise(op1.doubleValue()), 69 Bindings.when(cond).then(p0).otherwise(op1.floatValue()), 70 Bindings.when(cond).then(p0).otherwise(op1.longValue()), 71 Bindings.when(cond).then(p0).otherwise(op1.intValue()) 72 }; 73 } 74 75 @SuppressWarnings("unchecked") 76 @Override 77 public Binding<Number>[] generatePrimitiveProperty(Number op0, Property<Number> op1) { 78 final ObservableNumberValue p1 = (ObservableNumberValue)op1; 79 return new Binding[] { 80 Bindings.when(cond).then(op0.doubleValue()).otherwise(p1), 81 Bindings.when(cond).then(op0.floatValue()).otherwise(p1), 82 Bindings.when(cond).then(op0.longValue()).otherwise(p1), 83 Bindings.when(cond).then(op0.intValue()).otherwise(p1) 84 }; 85 } 86 87 @SuppressWarnings("unchecked") 88 @Override 89 public Binding<Number>[] generatePrimitivePrimitive(Number op0, Number op1) { 90 return new Binding[] { 91 Bindings.when(cond).then(op0.floatValue()).otherwise(op1.doubleValue()), 92 Bindings.when(cond).then(op0.floatValue()).otherwise(op1.floatValue()), 93 Bindings.when(cond).then(op0.floatValue()).otherwise(op1.longValue()), 94 Bindings.when(cond).then(op0.floatValue()).otherwise(op1.intValue()) 95 }; 96 } 97 98 @Override 99 public void check(Number expected, Binding<Number> binding) { 100 assertEquals(expected.floatValue(), binding.getValue().floatValue(), EPSILON_FLOAT); 101 } 102 }