@Test
public void testExecute() throws IOException, SimpleMarshallerException,
		XPathExpressionException {

	// Arrange
	String c32FileName = "c32.xml";
	String factmodelXml = fileReader.readFile(TEST_PATH + FACTMODEL_PATH
			+ c32FileName);
	String c32 = embeddedClinicalDocumentExtractor
			.extractClinicalDocumentFromFactModel(factmodelXml);
	String ruleExecutionContainerXml = fileReader.readFile(TEST_PATH
			+ RULEEXECUTIONCONTAINER_PATH + c32FileName);
	RuleExecutionContainer ruleExecutionContainer = marshaller
			.unmarshalFromXml(RuleExecutionContainer.class,
					ruleExecutionContainerXml);
	Document c32Document = documentXmlConverter.loadDocument(c32);
	Document factModelDocument = documentXmlConverter
			.loadDocument(factmodelXml);
	FactModel factModel = marshaller.unmarshalFromXml(FactModel.class,
			factmodelXml);
	List<Node> listOfNodes = new LinkedList<Node>();
	Set<String> redactSectionCodesAndGeneratedEntryIds = new HashSet<String>();
	Set<String> redactSensitiveCategoryCodes = new HashSet<String>();
	ClinicalFact fact = factModel.getClinicalFactList().get(1);
	Set<String> valueSetCategories = new HashSet<String>();
	valueSetCategories.add("HIV");
	valueSetCategories.add("ETH");
	fact.setValueSetCategories(valueSetCategories);
	// Act
	sut.execute(c32Document, factModel.getXacmlResult(), factModel,
			factModelDocument, fact, ruleExecutionContainer, listOfNodes,
			redactSectionCodesAndGeneratedEntryIds,
			redactSensitiveCategoryCodes);
	// Assert
	assertEquals(1, listOfNodes.size());
	assertEquals(1, redactSectionCodesAndGeneratedEntryIds.size());
	assertEquals(1, redactSensitiveCategoryCodes.size());
	assertEquals(Node.ELEMENT_NODE, listOfNodes.get(0).getNodeType());
	assertEquals("serviceEvent", listOfNodes.get(0).getNodeName());
	assertEquals("d1e89",
			redactSectionCodesAndGeneratedEntryIds.toArray()[0]);
	assertTrue("ETH".equals(redactSensitiveCategoryCodes.toArray()[0])
			|| "HIV".equals(redactSensitiveCategoryCodes.toArray()[0]));
}