package org.reactfx.value; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javafx.beans.property.IntegerProperty; import javafx.beans.property.SimpleIntegerProperty; import org.junit.Test; import org.reactfx.Change; import static org.junit.Assert.assertArrayEquals; public class ValTest { @Test public void changesTest() { IntegerProperty src = new SimpleIntegerProperty(0); Val<Number> val = Val.wrap(src); List<Change<Number>> changes = new ArrayList<>(); val.changes().subscribe(changes::add); src.set(1); src.set(2); src.set(3); assertArrayEquals(Arrays.asList(0, 1, 2).toArray(), changes.stream().map(change -> change.getOldValue()).toArray()); assertArrayEquals(Arrays.asList(1, 2, 3).toArray(), changes.stream().map(change -> change.getNewValue()).toArray()); } }