package gov.samhsa.acs.common.tool; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import gov.samhsa.consent2share.commonunit.xml.XmlComparator; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.ObjectInputStream; import java.util.Arrays; import org.apache.commons.io.FileUtils; import org.junit.BeforeClass; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; public class DocumentXmlConverterImplTest { private final Logger logger = LoggerFactory.getLogger(this.getClass()); private static FileReaderImpl fileReader; private static String c32; private static DocumentXmlConverterImpl documentXmlConverter; @BeforeClass public static void setUp() throws Exception { // Arrange fileReader = new FileReaderImpl(); c32 = fileReader.readFile("c32.xml"); documentXmlConverter = new DocumentXmlConverterImpl(); } @Test public void testLoadDocument() throws Exception { // Act Document document = documentXmlConverter.loadDocument(c32); // Assert assertNotNull(document); logger.debug(document.getNodeName()); assertEquals("#document", document.getNodeName()); logger.debug(document.getXmlEncoding()); assertEquals("UTF-8", document.getXmlEncoding()); logger.debug(document.getXmlVersion()); assertEquals("1.0", document.getXmlVersion()); logger.debug(document.toString()); assertEquals("[#document: null]", document.toString()); logger.debug(document.getDocumentElement().toString()); assertEquals("[ClinicalDocument: null]", document.getDocumentElement() .toString()); logger.debug(document.getFirstChild().toString()); assertEquals("[ClinicalDocument: null]", document.getFirstChild() .toString()); logger.debug(document.getImplementation().toString()); assertTrue(document .getImplementation() .toString() .startsWith( "org.apache.xerces.dom.DeferredDOMImplementationImpl@")); logger.debug(document.getLastChild().toString()); assertEquals("[ClinicalDocument: null]", document.getLastChild() .toString()); logger.debug(Boolean.toString(document.hasAttributes())); assertFalse(document.hasAttributes()); logger.debug(Boolean.toString(document.hasChildNodes())); assertTrue(document.hasChildNodes()); } @Test public void testConverXmlDocToString_1() throws Exception { // Arrange Document document = readDocument("src/test/resources/xmlDocument.txt"); // Act String docString = documentXmlConverter.convertXmlDocToString(document); logger.debug(docString); // Assert assertNotNull(docString); String s1 = fileReader.readFile("xmlString1.txt"); assertNotNull(s1, "s1 is null"); assertNotNull(docString, "docString is null"); assertTrue(XmlComparator.compareXMLs(s1, docString, Arrays.asList("")) .similar()); } @Test public void testConverXmlDocToString_2() throws Exception { // Arrange Document document = readDocument("src/test/resources/xmlDocument.txt"); // Act String docString = documentXmlConverter.convertXmlDocToString(document); logger.debug(docString); // Assert assertNotNull(docString); String s2 = fileReader.readFile("xmlString2.txt"); assertTrue(XmlComparator.compareXMLs(s2, docString, Arrays.asList("")) .similar()); } @Test public void testConverXmlDocToString_3() throws Exception { // Arrange Document document = readDocument("src/test/resources/xmlDocument.txt"); // Act String docString = documentXmlConverter.convertXmlDocToString(document); logger.debug(docString); // Assert assertNotNull(docString); String s3 = fileReader.readFile("xmlString3.txt"); assertTrue(XmlComparator.compareXMLs(s3, docString, Arrays.asList("")) .similar()); } private static Document readDocument(String filePath) throws IOException, ClassNotFoundException { return (Document) readObject(filePath); } private static Object readObject(String filePath) throws IOException, ClassNotFoundException { File file = new File(filePath); byte[] b = null; b = FileUtils.readFileToByteArray(file); ByteArrayInputStream in = new ByteArrayInputStream(b); ObjectInputStream is = new ObjectInputStream(in); return is.readObject(); } }