javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java
branchmodel
changeset 761 ade90921ede5
parent 760 4bd6f3bc6c64
child 764 605791f059b0
     1.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java	Mon Feb 18 12:26:16 2013 +0100
     1.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java	Mon Feb 18 13:03:01 2013 +0100
     1.3 @@ -18,7 +18,9 @@
     1.4  package org.apidesign.bck2brwsr.htmlpage;
     1.5  
     1.6  import java.util.ArrayList;
     1.7 +import java.util.Iterator;
     1.8  import java.util.List;
     1.9 +import java.util.ListIterator;
    1.10  import org.apidesign.bck2brwsr.htmlpage.api.ComputedProperty;
    1.11  import org.apidesign.bck2brwsr.htmlpage.api.Page;
    1.12  import org.apidesign.bck2brwsr.htmlpage.api.Property;
    1.13 @@ -60,6 +62,35 @@
    1.14          assertEquals(model.getNames().size(), 1, "One element");
    1.15      }
    1.16      
    1.17 +    @Test public void arrayChangesNotified() {
    1.18 +        MockKnockout my = new MockKnockout();
    1.19 +        MockKnockout.next = my;
    1.20 +        
    1.21 +        model.applyBindings();
    1.22 +        
    1.23 +        model.getNames().add("Hello");
    1.24 +        
    1.25 +        assertFalse(my.mutated.isEmpty(), "There was a change" + my.mutated);
    1.26 +        assertTrue(my.mutated.contains("names"), "Change in names property: " + my.mutated);
    1.27 +
    1.28 +        my.mutated.clear();
    1.29 +        
    1.30 +        Iterator<String> it = model.getNames().iterator();
    1.31 +        assertEquals(it.next(), "Hello");
    1.32 +        it.remove();
    1.33 +        
    1.34 +        assertFalse(my.mutated.isEmpty(), "There was a change" + my.mutated);
    1.35 +        assertTrue(my.mutated.contains("names"), "Change in names property: " + my.mutated);
    1.36 +
    1.37 +        my.mutated.clear();
    1.38 +        
    1.39 +        ListIterator<String> lit = model.getNames().listIterator();
    1.40 +        lit.add("Jarda");
    1.41 +        
    1.42 +        assertFalse(my.mutated.isEmpty(), "There was a change" + my.mutated);
    1.43 +        assertTrue(my.mutated.contains("names"), "Change in names property: " + my.mutated);
    1.44 +    }
    1.45 +    
    1.46      @Test public void derivedPropertiesAreNotified() {
    1.47          MockKnockout my = new MockKnockout();
    1.48          MockKnockout.next = my;