package de.unigoettingen.sub.commons.ocr.util.merge;
import static org.custommonkey.xmlunit.XMLAssert.*;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;
import org.custommonkey.xmlunit.exceptions.XpathException;
import org.junit.Test;
import org.xml.sax.SAXException;
public class AbbyyXmlMergerTest {
private final String input1 = "<document>"
+ "<documentData></documentData>"
+ "<page>"
+ "<block>"
+ "<text>"
+ "<par>"
+ "<line>"
+ "<formatting>"
+ "<charParams l='100'>a</charParams>"
+ "</formatting>"
+ "</line>"
+ "</par>"
+ "</text>"
+ "</block>"
+ "</page>"
+ "</document>";
private final String input2 = "<document>"
+ "<documentData></documentData>"
+ "<page>"
+ "<block>"
+ "<text>"
+ "<par>"
+ "<line>"
+ "<formatting>"
+ "<charParams l='200'>b</charParams>"
+ "</formatting>"
+ "</line>"
+ "</par>"
+ "</text>"
+ "</block>"
+ "</page>"
+ "</document>";
@Test
public void shouldMergeTwoWellFormed() throws XpathException, SAXException, IOException {
InputStream stream1 = new ByteArrayInputStream(input1.getBytes());
InputStream stream2 = new ByteArrayInputStream(input2.getBytes());
List<InputStream> inputs = Arrays.asList(stream1, stream2);
ByteArrayOutputStream output = new ByteArrayOutputStream();
Merger mergerSut = new AbbyyXmlMerger();
mergerSut.mergeBuffered(inputs, output);
String result = output.toString();
assertXpathEvaluatesTo("2", "count(//page)", result);
assertXpathEvaluatesTo("a", "//page[1]//charParams", result);
assertXpathEvaluatesTo("b", "//page[2]//charParams", result);
assertXpathEvaluatesTo("100", "//page[1]//charParams/@l", result);
assertXpathEvaluatesTo("200", "//page[2]//charParams/@l", result);
}
}