public void testRead() { CompositeVariableValue testVar = createTestVar(); // set initial value ((JComboBox<?>) testVar.getCommonRep()).setSelectedIndex(1); // register a listener for parameter changes java.beans.PropertyChangeListener listen = new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent e) { evtList.add(e); if (e.getPropertyName().equals("Busy") && ((Boolean) e.getNewValue()).equals(Boolean.FALSE)) { log.debug("=============== Busy false seen in test scaffold ================="); } } }; evtList = new ArrayList<java.beans.PropertyChangeEvent>(); testVar.addPropertyChangeListener(listen); // execute the test read log.debug("============ execute test read ==========="); testVar.setToRead(true); testVar.readAll(); log.debug("============ end test read ==============="); // wait for reply (normally, done by callback; will check that later) JUnitUtil.waitFor( () -> { return !testVar.isBusy(); }, "testVar.isBusy"); int nBusyFalse = 0; for (int k = 0; k < evtList.size(); k++) { java.beans.PropertyChangeEvent e = evtList.get(k); if (e.getPropertyName().equals("Busy") && ((Boolean) e.getNewValue()).equals(Boolean.FALSE)) { nBusyFalse++; } } log.debug("checks"); Assert.assertEquals("exactly one Busy -> false transition ", 1, nBusyFalse); Assert.assertEquals("CV 17 value ", 123, cv17.getValue()); Assert.assertEquals("CV 18 value ", 123, cv18.getValue()); Assert.assertEquals("CV 19 value ", 123, cv19.getValue()); Assert.assertEquals( "var value after read", 2, ((JComboBox<?>) testVar.getCommonRep()).getSelectedIndex()); Assert.assertEquals("Var state", AbstractValue.READ, testVar.getState()); log.debug("end testRead"); }
// can we change the CVs and see the result in the Variable? public void testValueFromCV() { CompositeVariableValue testVar = createTestVar(); // set value ((JComboBox<?>) testVar.getCommonRep()).setSelectedIndex(1); // set the CVs cv17.setValue(11); cv18.setValue(12); cv19.setValue(13); // check for change Assert.assertEquals( "composite index when set to first via CV", 0, ((JComboBox<?>) testVar.getCommonRep()).getSelectedIndex()); }
public void testIsChanged() { CompositeVariableValue testVar = createTestVar(); // initially, nobody changed Assert.assertEquals("main not changed initially", false, testVar.isChanged()); Assert.assertEquals("Var 17 not changed initially ", false, var17.isChanged()); // set value value ((JComboBox<?>) testVar.getCommonRep()).setSelectedIndex(1); // now changed, check Assert.assertEquals("Var 17 changed ", true, var17.isChanged()); Assert.assertEquals("main changed", true, testVar.isChanged()); }
// rest of tests are new, for just this type of variable // can we create three variables, then manipulate the composite variable to change them? public void testCompositeCreateAndSet() { CompositeVariableValue testVar = createTestVar(); // set value ((JComboBox<?>) testVar.getCommonRep()).setSelectedIndex(1); // see if the variables were updated Assert.assertEquals("var17 value when set to second", 21, var17.getIntValue()); Assert.assertEquals("var18 value when set to second", 22, var18.getIntValue()); Assert.assertEquals("var19 value when set to second", 23, var19.getIntValue()); // see if the CVs were updated Assert.assertEquals("cv17 value when set to second", 21, cv17.getValue()); Assert.assertEquals("cv18 value when set to second", 22, cv18.getValue()); Assert.assertEquals("cv19 value when set to second", 23, cv19.getValue()); }