Project

General

Profile

1
package eu.dnetlib.miscutils.functional.xml;
2

    
3
import static org.junit.Assert.assertEquals;
4

    
5
import java.io.StringReader;
6
import java.io.StringWriter;
7

    
8
import javax.xml.transform.Transformer;
9
import javax.xml.transform.TransformerFactory;
10
import javax.xml.transform.stream.StreamResult;
11
import javax.xml.transform.stream.StreamSource;
12

    
13
import org.dom4j.Document;
14
import org.dom4j.io.SAXReader;
15
import org.junit.Before;
16
import org.junit.Test;
17
import org.junit.runner.RunWith;
18
import org.mockito.junit.MockitoJUnitRunner;
19

    
20
@RunWith(MockitoJUnitRunner.class)
21
public class dnetFunctionsTest {
22
	
23
	private static final String XSLT = 
24
		"<?xml version='1.0' encoding='UTF-8'?>" + 
25
		"<xsl:stylesheet version='2.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:dnet='eu.dnetlib.miscutils.functional.xml.DnetXsltFunctions'>" +
26
        "<xsl:template match='/'>" +
27
		"   <OUTS>" +
28
        "      <OUTPUT decade='{dnet:decade(//INPUT/DATE)}' />" +
29
        "      <OUTPUT year='{dnet:extractYear(//INPUT/DATE)}' />" +
30
        "   </OUTS>" +
31
        "</xsl:template>" +
32
        "</xsl:stylesheet>";
33
	 
34
	private Transformer transformer;
35
	
36
	@Before
37
	public void setUp() {
38
		try {
39
			transformer = TransformerFactory.newInstance().newTransformer(new StreamSource(new StringReader(XSLT)));
40
		} catch (Exception e) {
41
			System.out.println("**** INITIALIZATION FAILED ****");
42
		}
43
	}
44
	
45
	@Test
46
	public void testDecade_1() throws Exception {
47
		assertEquals("1980-1989", process("primi anni 80", "decade"));
48
	}
49
	
50
	@Test
51
	public void testDecade_2() throws Exception {
52
		assertEquals("2000-2009", process("04-05-2007", "decade"));
53
	}
54

    
55
	@Test
56
	public void testDecade_3() throws Exception {
57
		assertEquals("1960-1969", process("1964", "decade"));
58
	}
59
		
60
	@Test
61
	public void testDecade_4() throws Exception {
62
		assertEquals("n/a", process("XXXXXXXXXXXX", "decade"));
63
	}
64

    
65
	@Test
66
	public void testDecade_5() throws Exception {
67
		assertEquals("1880-1889", process("    1887-01-01    ", "decade"));
68
	}
69
	
70
	@Test
71
	public void testDecade_6() throws Exception {
72
		assertEquals("1880-1889", process("\n\n    1887-01-01    \n\n", "decade"));
73
	}
74
	
75
	@Test
76
	public void testDecade_7() throws Exception {
77
		assertEquals("1840-1849", process("   1840-03-05   ", "decade"));
78
	}
79
	
80
	@Test
81
	public void testYear_1() throws Exception {
82
		assertEquals("1840", process("1840-03-05", "year"));
83
	}
84
	
85
	@Test
86
	public void testYear_2() throws Exception {
87
		assertEquals("1840", process("1840/03/05", "year"));
88
	}
89
	
90
	private String process(String s, String attr) throws Exception {
91
		String xml = "<INPUT><DATE>" + s + "</DATE></INPUT>";
92
		
93
		StringWriter strw = new StringWriter();
94
		transformer.transform(new StreamSource(new StringReader(xml)), new StreamResult(strw));
95
	
96
		Document document = (new SAXReader()).read(new StringReader((strw.toString())));
97
		
98
		System.out.println(document.asXML());
99
		
100
		String res = document.valueOf("/OUTS/OUTPUT/@" + attr);
101
	
102
		System.out.println(s + " --> " + res);
103
		
104
		return res;
105
	}
106

    
107
}
(3-3/3)