Verify the change is notified sooner than the value is queried ConcurrentComputed259132
authorJaroslav Tulach <jtulach@netbeans.org>
Wed, 11 May 2016 06:21:52 +0200
branchConcurrentComputed259132
changeset 10919c7413573b98
parent 1090 413753a14753
child 1092 9329156bb5d4
Verify the change is notified sooner than the value is queried
json/src/test/java/org/netbeans/html/json/impl/DeepChangeTest.java
json/src/test/java/org/netbeans/html/json/impl/ParallelChangeTest.java
     1.1 --- a/json/src/test/java/org/netbeans/html/json/impl/DeepChangeTest.java	Wed May 11 05:56:31 2016 +0200
     1.2 +++ b/json/src/test/java/org/netbeans/html/json/impl/DeepChangeTest.java	Wed May 11 06:21:52 2016 +0200
     1.3 @@ -521,6 +521,17 @@
     1.4          void set(Object v) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
     1.5              pb.setValue(v);
     1.6          }
     1.7 +
     1.8 +        void assertNoChange(String msg) {
     1.9 +            assertEquals(changes, 0, msg);
    1.10 +        }
    1.11 +
    1.12 +        void assertChange(String msg) {
    1.13 +            if (changes == 0) {
    1.14 +                fail(msg);
    1.15 +            }
    1.16 +            changes = 0;
    1.17 +        }
    1.18      }
    1.19  
    1.20      static final class MapTechnology
     2.1 --- a/json/src/test/java/org/netbeans/html/json/impl/ParallelChangeTest.java	Wed May 11 05:56:31 2016 +0200
     2.2 +++ b/json/src/test/java/org/netbeans/html/json/impl/ParallelChangeTest.java	Wed May 11 06:21:52 2016 +0200
     2.3 @@ -42,6 +42,7 @@
     2.4   */
     2.5  package org.netbeans.html.json.impl;
     2.6  
     2.7 +import java.util.Map;
     2.8  import java.util.concurrent.CountDownLatch;
     2.9  import java.util.concurrent.ExecutorService;
    2.10  import java.util.concurrent.Executors;
    2.11 @@ -52,6 +53,7 @@
    2.12  import net.java.html.json.Models;
    2.13  import net.java.html.json.Property;
    2.14  import org.netbeans.html.context.spi.Contexts;
    2.15 +import org.netbeans.html.json.impl.DeepChangeTest.One;
    2.16  import org.netbeans.html.json.spi.Technology;
    2.17  import org.netbeans.html.json.spi.Transfer;
    2.18  import org.testng.annotations.BeforeMethod;
    2.19 @@ -128,8 +130,23 @@
    2.20          exec.awaitTermination(1, TimeUnit.SECONDS);
    2.21  
    2.22          for (int i = 0; i < deps.length; i++) {
    2.23 +            Map raw = (Map) Models.toRaw(deps[i]);
    2.24 +            One value = (One) raw.get("valuePlusAdd");
    2.25 +            value.assertNoChange("No changes yet for index " + i);
    2.26 +        }
    2.27 +
    2.28 +        for (int i = 0; i < deps.length; i++) {
    2.29              runs[i].assertException();
    2.30              values[i].setValue(30);
    2.31 +        }
    2.32 +
    2.33 +        for (int i = 0; i < deps.length; i++) {
    2.34 +            Map raw = (Map) Models.toRaw(deps[i]);
    2.35 +            One value = (One) raw.get("valuePlusAdd");
    2.36 +            value.assertChange("A change for index " + i);
    2.37 +        }
    2.38 +
    2.39 +        for (int i = 0; i < deps.length; i++) {
    2.40              assertEquals(deps[i].getValuePlusAdd(), 41, "[" + i + "] = 0 plus 30 plus one plus 10");
    2.41          }
    2.42      }