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()); }
// 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 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"); }
void setReadOnlyValue(VariableValue var, String val) { ((CompositeVariableValue) var).setValue(Integer.valueOf(val).intValue()); }
// create and load the an object to test protected CompositeVariableValue createTestVar() { ProgDebugger p = new ProgDebugger(); // create 3 CVs HashMap<String, CvValue> v = createCvMap(); cv17 = new CvValue("17", p); cv18 = new CvValue("18", p); cv19 = new CvValue("19", p); cv17.setValue(2); cv18.setValue(3); cv18.setValue(4); v.put("17", cv17); v.put("18", cv18); v.put("19", cv19); // create variables for each CV var17 = new DecVariableValue( "label17", "comment17", "", false, false, false, false, "17", "VVVVVVVV", 0, 255, v, null, null); var18 = new DecVariableValue( "label18", "comment18", "", false, false, false, false, "18", "VVVVVVVV", 0, 255, v, null, null); var19 = new DecVariableValue( "label19", "comment19", "", false, false, false, false, "19", "VVVVVVVV", 0, 255, v, null, null); // create composite variable CompositeVariableValue testVar = new CompositeVariableValue( "testVariable", "commentTest", "", false, false, false, false, "17", "VVVVVVVV", 0, 2, v, null, null); // two choices testVar.addChoice("first"); testVar.addSetting("first", "label17", var17, "11"); testVar.addSetting("first", "label18", var18, "12"); testVar.addSetting("first", "label19", var19, "13"); testVar.addChoice("second"); testVar.addSetting("second", "label17", var17, "21"); testVar.addSetting("second", "label18", var18, "22"); testVar.addSetting("second", "label19", var19, "23"); testVar.addChoice("third"); testVar.addSetting("third", "label17", var17, "123"); testVar.addSetting("third", "label18", var18, "123"); testVar.addSetting("third", "label19", var19, "123"); testVar.lastItem(); return testVar; }