package hu.sztaki.ilab.longneck;
import hu.sztaki.ilab.longneck.process.LongneckProcess;
import hu.sztaki.ilab.longneck.process.block.Copy;
import hu.sztaki.ilab.longneck.process.block.If;
import hu.sztaki.ilab.longneck.process.constraint.IsNullConstraint;
import hu.sztaki.ilab.longneck.process.constraint.NotNullConstraint;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.exolab.castor.xml.MarshalException;
import org.exolab.castor.xml.ValidationException;
import org.junit.Assert;
import org.junit.Test;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
/**
*
* @author Molnár Péter <molnarp@sztaki.mta.hu>
*/
public class IfTest extends AbstractBlockTest {
@Test
public void unmarshalTest() throws SAXException, IOException, MarshalException, ValidationException, Exception {
List<String>nncApplyTo = new ArrayList<String>(2);
nncApplyTo.add("a");
nncApplyTo.add("b");
List<String> incApplyTo = new ArrayList<String>(1);
incApplyTo.add("d");
// Add then branch
List<String> copy1ApplyTo = new ArrayList<String>(1);
copy1ApplyTo.add("d");
// Else branch
List<String> copy2ApplyTo = new ArrayList<String>(1);
copy2ApplyTo.add("c");
// Load document
Document doc = documentBuilder.parse(classLoader.getResourceAsStream("unmarshal/if.xml"));
LongneckProcess process = (LongneckProcess) unmarshaller.unmarshal(doc);
If testedIf = (If) process.getBlocks().get(0);
Assert.assertEquals(2, testedIf.getCondition().getConstraints().size());
Assert.assertEquals(nncApplyTo, ((NotNullConstraint) testedIf.getCondition().getConstraints().get(0)).getApplyTo());
Assert.assertEquals(incApplyTo, ((IsNullConstraint) testedIf.getCondition().getConstraints().get(1)).getApplyTo());
Assert.assertEquals(1, testedIf.getThenBranch().getBlocks().size());
Assert.assertEquals(copy1ApplyTo, ((Copy) testedIf.getThenBranch().getBlocks().get(0)).getApplyTo());
Assert.assertEquals("a", ((Copy) testedIf.getThenBranch().getBlocks().get(0)).getFrom());
Assert.assertEquals(1, testedIf.getElseBranch().getBlocks().size());
Assert.assertEquals(copy2ApplyTo, ((Copy) testedIf.getElseBranch().getBlocks().get(0)).getApplyTo());
Assert.assertEquals("b", ((Copy) testedIf.getElseBranch().getBlocks().get(0)).getFrom());
}
}