< 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 >