json/src/test/java/net/java/html/json/MapModelTest.java
changeset 1023 4f906bde3a2e
parent 951 5ce0aab2c03c
     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;