< prev index next >

modules/base/src/test/java/javafx/beans/property/PropertyBaseTest.java

Print this page
rev 9211 : 8130458: Memory leak in bind/unbind of [Primitive]PropertyBase

*** 26,38 **** package javafx.beans.property; import com.sun.javafx.binding.ExpressionHelperUtility; import java.util.Arrays; import java.util.List; import static org.junit.Assert.assertEquals; import org.junit.Before; - import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @RunWith(Parameterized.class) --- 26,40 ---- package javafx.beans.property; import com.sun.javafx.binding.ExpressionHelperUtility; import java.util.Arrays; import java.util.List; + import javafx.beans.value.ObservableNumberValue; + import javafx.beans.value.ObservableValue; + import javafx.beans.value.ObservableValueBase; import static org.junit.Assert.assertEquals; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @RunWith(Parameterized.class)
*** 68,77 **** --- 70,104 ---- public T getValue() { return value; } } + private static class NumberPropertyMock extends ObservableValueBase<Number> + implements ObservableNumberValue, Property<Number> + { + private Number value = 0; + + @Override public int intValue() { return value.intValue(); } + @Override public long longValue() { return value.longValue(); } + @Override public float floatValue() { return value.floatValue(); } + @Override public double doubleValue() { return value.doubleValue(); } + @Override public Number getValue() { return value; } + @Override public void setValue(Number value) { + this.value = value; + fireValueChangedEvent(); + } + + @Override public void bind(ObservableValue<? extends Number> observable) {} + @Override public void unbind() {} + @Override public boolean isBound() { return false; } + @Override public void bindBidirectional(Property<Number> other) {} + @Override public void unbindBidirectional(Property<Number> other) {} + + @Override public Object getBean() { return null; } + @Override public String getName() { return ""; } + } + @Parameterized.Parameters public static List<Object[]> data() { return Arrays.asList(new Object[][] { // primitive binding // Property->Listener->Value
*** 82,94 **** --- 109,125 ---- { new Factory(() -> new SimpleLongProperty(), () -> new SimpleLongProperty(), 1L) }, // generic with wrapper // Property->Listener->Binding->BindingHelperObserver->Value { new Factory(() -> new SimpleBooleanProperty(), () -> new SimpleObjectProperty<>(), true) }, { new Factory(() -> new SimpleDoubleProperty(), () -> new SimpleObjectProperty<>(), 1.0) }, + { new Factory(() -> new SimpleDoubleProperty(), () -> new NumberPropertyMock(), 1.0) }, { new Factory(() -> new SimpleFloatProperty(), () -> new SimpleObjectProperty<>(), 1.0f) }, + { new Factory(() -> new SimpleFloatProperty(), () -> new NumberPropertyMock(), 1.0f) }, { new Factory(() -> new SimpleIntegerProperty(), () -> new SimpleObjectProperty<>(), 1) }, + { new Factory(() -> new SimpleIntegerProperty(), () -> new NumberPropertyMock(), 1) }, { new Factory(() -> new SimpleLongProperty(), () -> new SimpleObjectProperty<>(), 1L) }, + { new Factory(() -> new SimpleLongProperty(), () -> new NumberPropertyMock(), 1L) }, // generic // Property->Listener->Value { new Factory(() -> new SimpleObjectProperty(), () -> new SimpleObjectProperty<>(), new Object()) }, { new Factory(() -> new SimpleStringProperty(), () -> new SimpleObjectProperty<>(), "1") }, // the same as generic
*** 138,148 **** property.bind(observable); // calls trim assertEquals(1, ExpressionHelperUtility.getInvalidationListeners(observable).size()); } - @Ignore("8130458") @Test public void testUnbindGenericWrapper() { property.bind(observable); assertEquals(1, ExpressionHelperUtility.getInvalidationListeners(observable).size()); --- 169,178 ----
< prev index next >