javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java
branchmodel
changeset 949 3bd43aa6f08d
parent 909 e51a474fcf79
child 950 445d5f1d4177
     1.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java	Sun Mar 31 12:01:38 2013 +0200
     1.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ModelTest.java	Mon Apr 08 12:12:42 2013 +0200
     1.3 @@ -24,6 +24,7 @@
     1.4  import java.util.ListIterator;
     1.5  import org.apidesign.bck2brwsr.htmlpage.api.ComputedProperty;
     1.6  import org.apidesign.bck2brwsr.htmlpage.api.OnFunction;
     1.7 +import org.apidesign.bck2brwsr.htmlpage.api.OnPropertyChange;
     1.8  import org.apidesign.bck2brwsr.htmlpage.api.Page;
     1.9  import org.apidesign.bck2brwsr.htmlpage.api.Property;
    1.10  import static org.testng.Assert.*;
    1.11 @@ -40,7 +41,8 @@
    1.12      @Property(name = "unrelated", type = long.class),
    1.13      @Property(name = "names", type = String.class, array = true),
    1.14      @Property(name = "values", type = int.class, array = true),
    1.15 -    @Property(name = "people", type = PersonImpl.class, array = true)
    1.16 +    @Property(name = "people", type = PersonImpl.class, array = true),
    1.17 +    @Property(name = "changedProperty", type=String.class)
    1.18  })
    1.19  public class ModelTest {
    1.20      private Modelik model;
    1.21 @@ -138,6 +140,9 @@
    1.22          
    1.23          model.setValue(33);
    1.24          
    1.25 +        // not interested in change of this property
    1.26 +        my.mutated.remove("changedProperty");
    1.27 +        
    1.28          assertEquals(my.mutated.size(), 2, "Two properties changed: " + my.mutated);
    1.29          assertTrue(my.mutated.contains("powerValue"), "Power value is in there: " + my.mutated);
    1.30          assertTrue(my.mutated.contains("value"), "Simple value is in there: " + my.mutated);
    1.31 @@ -145,7 +150,11 @@
    1.32          my.mutated.clear();
    1.33          
    1.34          model.setUnrelated(44);
    1.35 -        assertEquals(my.mutated.size(), 1, "One property changed");
    1.36 +        
    1.37 +        
    1.38 +        // not interested in change of this property
    1.39 +        my.mutated.remove("changedProperty");
    1.40 +        assertEquals(my.mutated.size(), 1, "One property changed: " + my.mutated);
    1.41          assertTrue(my.mutated.contains("unrelated"), "Its name is unrelated");
    1.42      }
    1.43      
    1.44 @@ -178,6 +187,24 @@
    1.45          return value * value;
    1.46      }
    1.47      
    1.48 +    @OnPropertyChange({ "powerValue", "unrelated" })
    1.49 +    static void aPropertyChanged(Modelik m, String name) {
    1.50 +        m.setChangedProperty(name);
    1.51 +    }
    1.52 +    
    1.53 +    @Test public void changeAnything() {
    1.54 +        model.setCount(44);
    1.55 +        assertNull(model.getChangedProperty(), "No observed value change");
    1.56 +    }
    1.57 +    @Test public void changeValue() {
    1.58 +        model.setValue(33);
    1.59 +        assertEquals(model.getChangedProperty(), "powerValue", "power property changed");
    1.60 +    }
    1.61 +    @Test public void changeUnrelated() {
    1.62 +        model.setUnrelated(333);
    1.63 +        assertEquals(model.getChangedProperty(), "unrelated", "unrelated changed");
    1.64 +    }
    1.65 +    
    1.66      @ComputedProperty
    1.67      static String notAllowedRead() {
    1.68          return "Not allowed callback: " + leakedModel.getUnrelated();