This project has retired. For details please refer to its
Attic page.
ExtractionResultImplTest xref
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.any23.extractor;
19
20 import org.junit.Assert;
21 import org.apache.any23.extractor.html.TitleExtractor;
22 import org.apache.any23.rdf.RDFUtils;
23 import org.apache.any23.writer.TripleHandler;
24 import org.apache.any23.writer.TripleHandlerException;
25 import org.junit.After;
26 import org.junit.Before;
27 import org.junit.Test;
28 import org.mockito.Mockito;
29 import org.eclipse.rdf4j.model.IRI;
30
31 import java.io.ByteArrayOutputStream;
32 import java.io.IOException;
33 import java.io.PrintStream;
34 import java.nio.charset.StandardCharsets;
35 import java.util.Locale;
36
37
38
39
40
41
42
43
44 public class ExtractionResultImplTest {
45
46 private static final IRI TEST_IRI = RDFUtils.iri("http://host/test/service");
47
48 private ExtractionResultImpl extractionResult;
49 private Extractor extractor;
50 private TripleHandler mockTripleHandler;
51
52 @Before
53 public void setUp() {
54 extractor = new TitleExtractor();
55 mockTripleHandler = Mockito.mock(TripleHandler.class);
56 extractionResult = new ExtractionResultImpl(new ExtractionContext("test-extractor-name", TEST_IRI), extractor,
57 mockTripleHandler);
58 }
59
60 @After
61 public void tearDown() throws TripleHandlerException {
62 extractionResult.close();
63 mockTripleHandler.close();
64 extractor = null;
65 mockTripleHandler = null;
66 extractionResult = null;
67 }
68
69 @Test
70 public void testNotifyErrors() throws IOException {
71 notifyErrors(extractionResult);
72 assertContent(extractionResult, 3);
73
74 final ExtractionResult subExtractionResult = extractionResult
75 .openSubResult(new ExtractionContext("sub-id", RDFUtils.iri("http://sub/uri")));
76
77 notifyErrors(subExtractionResult);
78 assertContent(subExtractionResult, 6);
79 }
80
81 private void notifyErrors(ExtractionResult er) {
82 er.notifyIssue(IssueReport.IssueLevel.ERROR, "Error message", 1, 2);
83 er.notifyIssue(IssueReport.IssueLevel.WARNING, "Warning message", 3, 4);
84 er.notifyIssue(IssueReport.IssueLevel.FATAL, "Fatal message", 5, 6);
85 }
86
87 private void assertContent(ExtractionResult er, int errorCount) {
88 Assert.assertEquals("Unexpected errors list size.", errorCount, er.getIssues().size());
89 assertOutputString(er, IssueReport.IssueLevel.ERROR.toString());
90 assertOutputString(er, IssueReport.IssueLevel.WARNING.toString());
91 assertOutputString(er, IssueReport.IssueLevel.FATAL.toString());
92 assertOutputString(er, "errors: " + errorCount);
93 }
94
95 private void assertOutputString(ExtractionResult er, String s) {
96 ByteArrayOutputStream baos = new ByteArrayOutputStream();
97 PrintStream ps = new PrintStream(baos, true, StandardCharsets.UTF_8);
98 er.printReport(ps);
99 ps.flush();
100 Assert.assertTrue(String.format(Locale.ROOT, "Cannot find string '%s' in output stream.", s),
101 baos.toString(StandardCharsets.UTF_8).contains(s));
102 }
103
104 }