javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java
branchmodel
changeset 766 06d89ffe489e
parent 764 605791f059b0
child 770 26513bd377b9
     1.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java	Mon Feb 18 19:52:06 2013 +0100
     1.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java	Tue Feb 19 15:42:41 2013 +0100
     1.3 @@ -18,6 +18,7 @@
     1.4  package org.apidesign.bck2brwsr.htmlpage;
     1.5  
     1.6  import java.util.ArrayList;
     1.7 +import java.util.Collections;
     1.8  import java.util.Iterator;
     1.9  import java.util.List;
    1.10  import java.util.ListIterator;
    1.11 @@ -34,6 +35,7 @@
    1.12   */
    1.13  @Page(xhtml = "Empty.html", className = "Model", properties = {
    1.14      @Property(name = "value", type = int.class),
    1.15 +    @Property(name = "count", type = int.class),
    1.16      @Property(name = "unrelated", type = long.class),
    1.17      @Property(name = "names", type = String.class, array = true),
    1.18      @Property(name = "values", type = int.class, array = true)
    1.19 @@ -102,6 +104,29 @@
    1.20          
    1.21          assertEquals(model.getValues().get(0), Integer.valueOf(10), "Really ten");
    1.22      }
    1.23 +
    1.24 +    @Test public void derivedArrayProp() {
    1.25 +        MockKnockout my = new MockKnockout();
    1.26 +        MockKnockout.next = my;
    1.27 +        
    1.28 +        model.applyBindings();
    1.29 +        
    1.30 +        model.setCount(10);
    1.31 +        
    1.32 +        List<String> arr = model.getRepeat();
    1.33 +        assertEquals(arr.size(), 10, "Ten items: " + arr);
    1.34 +        
    1.35 +        my.mutated.clear();
    1.36 +        
    1.37 +        model.setCount(5);
    1.38 +        
    1.39 +        arr = model.getRepeat();
    1.40 +        assertEquals(arr.size(), 5, "Five items: " + arr);
    1.41 +
    1.42 +        assertEquals(my.mutated.size(), 2, "Two properties changed: " + my.mutated);
    1.43 +        assertTrue(my.mutated.contains("repeat"), "Array is in there: " + my.mutated);
    1.44 +        assertTrue(my.mutated.contains("count"), "Count is in there: " + my.mutated);
    1.45 +    }
    1.46      
    1.47      @Test public void derivedPropertiesAreNotified() {
    1.48          MockKnockout my = new MockKnockout();
    1.49 @@ -158,6 +183,11 @@
    1.50          return "Not allowed callback!";
    1.51      }
    1.52      
    1.53 +    @ComputedProperty
    1.54 +    static List<String> repeat(int count) {
    1.55 +        return Collections.nCopies(count, "Hello");
    1.56 +    }
    1.57 +    
    1.58      static class MockKnockout extends Knockout {
    1.59          List<String> mutated = new ArrayList<String>();
    1.60