package de.uniba.dsg.bpmnspector.refcheck.tests;
import api.ValidationException;
import de.uniba.dsg.bpmnspector.refcheck.BPMNElement;
import de.uniba.dsg.bpmnspector.refcheck.Reference;
import de.uniba.dsg.bpmnspector.refcheck.ReferenceLoader;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import java.util.List;
import java.util.Map;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* Tests for
* @author Matthias Geiger
* @version 1.0
*
*/
public class ReferenceLoaderTests {
private static ReferenceLoader referenceLoader = new ReferenceLoader();
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void loadAllReferences() throws ValidationException {
referenceLoader.load("/references.xml", "/references.xsd");
}
@Test
public void loadNonExistentFile() throws ValidationException {
exception.expect(ValidationException.class);
exception.expectMessage("Problems occurred while traversing the file 'NON_EXISTING'");
referenceLoader.load("NON_EXISTING", "/references.xsd");
}
@Test
public void useNonExistentXsd() throws ValidationException {
exception.expect(ValidationException.class);
exception.expectMessage("Problems occurred while trying to check the references XML file against the corresponding XSD file.");
referenceLoader.load("/references.xml", "NON_EXISTING");
}
@Test
public void testCorrectnessAssociation() throws ValidationException {
Map<String, BPMNElement> refs = referenceLoader.load("/references.xml", "/references.xsd");
assertTrue(refs.containsKey("association"));
List<Reference> referenceList = refs.get("association").getReferences();
assertTrue(referenceList.size()==2);
assertTrue(referenceList.get(0).getName().equals("sourceRef"));
assertTrue(referenceList.get(0).isAttribute());
assertTrue(referenceList.get(0).isQname());
assertTrue(referenceList.get(1).getName().equals("targetRef"));
assertTrue(referenceList.get(1).isAttribute());
assertTrue(referenceList.get(1).isQname());
}
@Test
public void testCorrectnessDataObject() throws ValidationException {
Map<String, BPMNElement> refs = referenceLoader.load("/references.xml", "/references.xsd");
assertTrue(refs.containsKey("dataObject"));
List<Reference> referenceList = refs.get("dataObject").getReferences();
assertTrue(referenceList.size()==2);
assertTrue(referenceList.get(0).getName().equals("categoryValueRef"));
assertFalse(referenceList.get(0).isAttribute());
assertTrue(referenceList.get(0).isQname());
assertTrue(referenceList.get(1).getName().equals("itemSubjectRef"));
assertTrue(referenceList.get(1).isAttribute());
assertTrue(referenceList.get(1).isQname());
}
@Test
public void testCorrectnessGateway() throws ValidationException {
Map<String, BPMNElement> refs = referenceLoader.load("/references.xml", "/references.xsd");
assertTrue(refs.containsKey("gateway"));
List<Reference> referenceList = refs.get("gateway").getReferences();
assertTrue(referenceList.size()==3);
assertTrue(referenceList.get(0).getName().equals("categoryValueRef"));
assertFalse(referenceList.get(0).isAttribute());
assertTrue(referenceList.get(0).isQname());
assertTrue(referenceList.get(1).getName().equals("incoming"));
assertFalse(referenceList.get(1).isAttribute());
assertTrue(referenceList.get(1).isQname());
assertTrue(referenceList.get(2).getName().equals("outgoing"));
assertFalse(referenceList.get(2).isAttribute());
assertTrue(referenceList.get(2).isQname());
}
}