context1.put("var1", "init");
context1.put("var2", "init");
// no current context
AbstractContext controlContext1 = (AbstractContext) createContextForControl(null, null);
assertSame(context1, controlContext1.getParentContext());
controlContext1.put("var1", "value1");
assertEquals("value1", controlContext1.get("var1"));
assertEquals("init", context1.get("var1"));
controlContext1.remove("var2");
assertEquals(null, controlContext1.get("var2"));
assertEquals("init", context1.get("var2"));
// context1 -> controlContext1, without exports
rundata.pushContext(context1);
controlContext1 = (AbstractContext) createContextForControl(null, null);
assertSame(context1, controlContext1.getParentContext());
controlContext1.put("var1", "value1");
assertEquals("value1", controlContext1.get("var1"));
assertEquals("init", context1.get("var1"));
controlContext1.remove("var2");
assertEquals(null, controlContext1.get("var2"));
assertEquals("init", context1.get("var2"));
// context1 -> controlContext.export(var1, var2)
controlContext1 = (AbstractContext) createContextForControl(null, null, "var1", "var2");
assertSame(context1, controlContext1.getParentContext());
controlContext1.put("var1", "value1");
assertEquals("value1", controlContext1.get("var1"));
assertEquals("value1", context1.get("var1"));
controlContext1.remove("var2");
assertEquals(null, controlContext1.get("var2"));
assertEquals(null, context1.get("var2"));
// context1 -> controlContext1 -> app2:controlContext2.export(var1, var2)
context1.put("var1", "init");
context1.put("var2", "init");
controlContext1 = (AbstractContext) createContextForControl(null, null);
assertSame(context1, controlContext1.getParentContext());
controlContext1.put("var1", "init");
controlContext1.put("var2", "init");
rundata.pushContext(controlContext1);
AbstractContext controlContext2 = (AbstractContext) createContextForControl(null, "app2", "var1", "var2");
assertSame(context2, controlContext2.getParentContext());
controlContext2.put("var1", "value1");
assertEquals("value1", controlContext2.get("var1"));
assertEquals("value1", controlContext1.get("var1"));
assertEquals("init", context1.get("var1"));
controlContext2.remove("var2");
assertEquals(null, controlContext2.get("var2"));
assertEquals(null, controlContext1.get("var2"));
assertEquals("init", context1.get("var2"));
rundata.popContext();
// context1 -> controlContext1.export(var1, var2) -> app2:controlContext2.export(var1, var2)
context1.put("var1", "init");
context1.put("var2", "init");
controlContext1 = (AbstractContext) createContextForControl(null, null, "var1", "var2");
assertSame(context1, controlContext1.getParentContext());
controlContext1.put("var1", "init");
controlContext1.put("var2", "init");
rundata.pushContext(controlContext1);
controlContext2 = (AbstractContext) createContextForControl(null, "app2", "var1", "var2");
assertSame(context2, controlContext2.getParentContext());
controlContext2.put("var1", "value1");
assertEquals("value1", controlContext2.get("var1"));
assertEquals("value1", controlContext1.get("var1"));
assertEquals("value1", context1.get("var1"));
controlContext2.remove("var2");
assertEquals(null, controlContext2.get("var2"));
assertEquals(null, controlContext1.get("var2"));
assertEquals(null, context1.get("var2"));
rundata.popContext();
}