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();