1.1 --- a/json/src/test/java/net/java/html/json/MapModelTest.java Wed Jul 15 22:06:19 2015 +0200
1.2 +++ b/json/src/test/java/net/java/html/json/MapModelTest.java Wed Dec 09 21:39:13 2015 +0100
1.3 @@ -304,6 +304,38 @@
1.4 assertEquals(p.getAge().get(1).intValue(), 7);
1.5 }
1.6
1.7 + @Test
1.8 + public void addAge42ThreeTimes() {
1.9 + People p = Models.bind(new People(), c);
1.10 + Map m = (Map)Models.toRaw(p);
1.11 + assertNotNull(m);
1.12 +
1.13 + class Inc implements Runnable {
1.14 + int cnt;
1.15 +
1.16 + @Override
1.17 + public void run() {
1.18 + cnt++;
1.19 + }
1.20 + }
1.21 + Inc incThreeTimes = new Inc();
1.22 + p.onInfoChange(incThreeTimes);
1.23 +
1.24 + p.addAge42();
1.25 + p.addAge42();
1.26 + p.addAge42();
1.27 + final int[] cnt = { 0, 0 };
1.28 + p.readAddAgeCount(cnt, new Runnable() {
1.29 + @Override
1.30 + public void run() {
1.31 + cnt[1] = 1;
1.32 + }
1.33 + });
1.34 + assertEquals(cnt[1], 1, "Callback called");
1.35 + assertEquals(cnt[0], 3, "Internal state kept");
1.36 + assertEquals(incThreeTimes.cnt, 3, "Property change delivered three times");
1.37 + }
1.38 +
1.39 static final class One {
1.40 int changes;
1.41 final PropertyBinding pb;