@Test
public void testNonForwardedDual() {

	String[] nonNorwardedFieldsFirst = { "f1;f2" };
	String[] nonNorwardedFieldsSecond = { "f0" };
	DualInputSemanticProperties dsp = new DualInputSemanticProperties();
	SemanticPropUtil.getSemanticPropsDualFromString(dsp, null, null,
			nonNorwardedFieldsFirst, nonNorwardedFieldsSecond, null, null, threeIntTupleType, threeIntTupleType, threeIntTupleType);
	assertTrue(dsp.getForwardingTargetFields(0, 0).contains(0));
	assertTrue(dsp.getForwardingTargetFields(0, 1).size() == 0);
	assertTrue(dsp.getForwardingTargetFields(0, 2).size() == 0);
	assertTrue(dsp.getForwardingTargetFields(1, 0).size() == 0);
	assertTrue(dsp.getForwardingTargetFields(1, 1).contains(1));
	assertTrue(dsp.getForwardingTargetFields(1, 2).contains(2));
	nonNorwardedFieldsFirst[0] = "f1";
	nonNorwardedFieldsSecond[0] = "";
	dsp = new DualInputSemanticProperties();
	SemanticPropUtil.getSemanticPropsDualFromString(dsp, null, null,
			nonNorwardedFieldsFirst, null, null, null, threeIntTupleType, fiveIntTupleType, threeIntTupleType);
	assertTrue(dsp.getForwardingTargetFields(0, 0).contains(0));
	assertTrue(dsp.getForwardingTargetFields(0, 1).size() == 0);
	assertTrue(dsp.getForwardingTargetFields(0, 2).contains(2));
	assertTrue(dsp.getForwardingTargetFields(1, 0).size() == 0);
	assertTrue(dsp.getForwardingTargetFields(1, 1).size() == 0);
	assertTrue(dsp.getForwardingTargetFields(1, 2).size() == 0);
	nonNorwardedFieldsFirst[0] = "";
	nonNorwardedFieldsSecond[0] = "f2;f0";
	dsp = new DualInputSemanticProperties();
	SemanticPropUtil.getSemanticPropsDualFromString(dsp, null, null,
			null, nonNorwardedFieldsSecond, null, null, fiveIntTupleType, threeIntTupleType, threeIntTupleType);
	assertTrue(dsp.getForwardingTargetFields(0, 0).size() == 0);
	assertTrue(dsp.getForwardingTargetFields(0, 1).size() == 0);
	assertTrue(dsp.getForwardingTargetFields(0, 2).size() == 0);
	assertTrue(dsp.getForwardingTargetFields(1, 0).size() == 0);
	assertTrue(dsp.getForwardingTargetFields(1, 1).contains(1));
	assertTrue(dsp.getForwardingTargetFields(1, 2).size() == 0);
	String[] nonForwardedFields = {"f1", "f3"};
	dsp = new DualInputSemanticProperties();
	SemanticPropUtil.getSemanticPropsDualFromString(dsp, null, null,
			nonForwardedFields, null, null, null, fiveIntTupleType, threeIntTupleType, fiveIntTupleType);
	assertTrue(dsp.getForwardingTargetFields(0, 0).contains(0));
	assertTrue(dsp.getForwardingTargetFields(0, 1).size() == 0);
	assertTrue(dsp.getForwardingTargetFields(0, 2).contains(2));
	assertTrue(dsp.getForwardingTargetFields(0, 3).size() == 0);
	assertTrue(dsp.getForwardingTargetFields(0, 4).contains(4));
	dsp = new DualInputSemanticProperties();
	SemanticPropUtil.getSemanticPropsDualFromString(dsp, null, null,
			null, nonForwardedFields, null, null, threeIntTupleType, fiveIntTupleType, fiveIntTupleType);
	assertTrue(dsp.getForwardingTargetFields(1, 0).contains(0));
	assertTrue(dsp.getForwardingTargetFields(1, 1).size() == 0);
	assertTrue(dsp.getForwardingTargetFields(1, 2).contains(2));
	assertTrue(dsp.getForwardingTargetFields(1, 3).size() == 0);
	assertTrue(dsp.getForwardingTargetFields(1, 4).contains(4));
}