assertNotNull(ss);
List<Integer> quarks = ss.getQuarks("*");
- assertEquals(3, quarks.size());
+ assertEquals(4, quarks.size());
for (Integer quark : quarks) {
String name = ss.getAttributeName(quark);
XmlUtilsTest.verifyStateIntervals("checkpoint", ss, quark, expectedStarts, expectedValues);
}
break;
+ case "or_three_operands": {
+ final int[] expectedStarts = { 1, 5, 7, 7 };
+ ITmfStateValue[] expectedValues = { TmfStateValue.newValueLong(1), TmfStateValue.newValueLong(0), TmfStateValue.newValueLong(1) };
+ XmlUtilsTest.verifyStateIntervals("or_three_operands", ss, quark, expectedStarts, expectedValues);
+ }
+ break;
default:
fail("Wrong attribute name " + name);
break;
</else>
</stateChange>
</eventHandler>
+ <eventHandler eventName="*">
+ <stateChange>
+ <if>
+ <and>
+ <condition>
+ <stateAttribute type="constant" value="test" />
+ <stateValue type="long" value="0" />
+ </condition>
+ <condition>
+ <stateAttribute type="constant" value="test1" />
+ <stateValue type="long" value="0" />
+ </condition>
+ <condition>
+ <stateAttribute type="constant" value="checkpoint" />
+ <stateValue type="long" value="1" />
+ </condition>
+ </and>
+ </if>
+ <then>
+ <stateAttribute type="constant" value="or_three_operands" />
+ <stateValue type="long" value="0" />
+ </then>
+ <else>
+ <stateAttribute type="constant" value="or_three_operands" />
+ <stateValue type="long" value="1" />
+ </else>
+ </stateChange>
+ </eventHandler>
</stateProvider>
</tmfxml>
\ No newline at end of file
rootNode = firstElement;
childElements = XmlUtils.getChildElements(rootNode);
}
- int size = rootNode.getElementsByTagName(TmfXmlStrings.STATE_VALUE).getLength();
- fStateValues = new ArrayList<>(size);
- if (size > 2 || size == 0) {
- throw new IllegalArgumentException("TmfXmlCondition: a condition should have 1 or 2 state values at most"); //$NON-NLS-1$
- }
switch (rootNode.getNodeName()) {
case TmfXmlStrings.CONDITION:
+ int size = rootNode.getElementsByTagName(TmfXmlStrings.STATE_VALUE).getLength();
+ fStateValues = new ArrayList<>(size);
fOperator = LogicalOperator.NONE;
if (size == 1) {
fConditionOperator = getConditionOperator(rootNode);
}
break;
case TmfXmlStrings.NOT:
+ fStateValues = new ArrayList<>();
fOperator = LogicalOperator.NOT;
fConditionOperator = ConditionOperator.NONE;
Element element = firstElement;
fConditions.add(modelFactory.createCondition(element, fContainer));
break;
case TmfXmlStrings.AND:
+ fStateValues = new ArrayList<>();
fOperator = LogicalOperator.AND;
fConditionOperator = ConditionOperator.NONE;
for (Element condition : childElements) {
}
break;
case TmfXmlStrings.OR:
+ fStateValues = new ArrayList<>();
fOperator = LogicalOperator.OR;
fConditionOperator = ConditionOperator.NONE;
for (Element condition : childElements) {