1
2
3
4
5
6
7
8
9
10
11 package org.mule.transformers.xml;
12
13 import org.mule.tck.AbstractMuleTestCase;
14
15 import java.util.List;
16
17 public class JXPathExtractorTestCase extends AbstractMuleTestCase
18 {
19
20 protected static final String TEST_XML_MULTI_RESULTS = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
21 + "<root>" + "<node>value1</node>"
22 + "<node>value2</node>" + "<node>value3</node>"
23 + "</root>";
24
25 protected static final String TEST_XML_MULTI_NESTED_RESULTS = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
26 + "<root>"
27 + "<node>"
28 + "<subnode1>val1</subnode1>"
29 + "<subnode2>val2</subnode2>"
30 + "</node>"
31 + "<node>"
32 + "<subnode1>val3</subnode1>"
33 + "<subnode2>val4</subnode2>"
34 + "</node>"
35 + "</root>";
36
37 protected static final String TEST_XML_SINGLE_RESULT = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
38 + "<root>" + "<node>value1</node>" + "</root>";
39
40 public void testSingeResult() throws Exception
41 {
42 final JXPathExtractor extractor = new JXPathExtractor();
43 final String expression = "/root/node";
44 extractor.setExpression(expression);
45
46 assertEquals("Wrong expression returned.", expression, extractor.getExpression());
47 final Object objResult = extractor.transform(TEST_XML_SINGLE_RESULT);
48 assertNotNull(objResult);
49 String result = (String)objResult;
50 assertEquals("Wrong value extracted.", "value1", result);
51 }
52
53 public void testMultipleResults() throws Exception
54 {
55 JXPathExtractor extractor = new JXPathExtractor();
56 extractor.setExpression("/root/node");
57 extractor.setSingleResult(false);
58 final Object objResult = extractor.transform(TEST_XML_MULTI_RESULTS);
59 assertNotNull(objResult);
60 List results = (List)objResult;
61 assertEquals("Wrong number of results returned.", 3, results.size());
62 assertEquals("Wrong value returned.", "value1", results.get(0));
63 assertEquals("Wrong value returned.", "value2", results.get(1));
64 assertEquals("Wrong value returned.", "value3", results.get(2));
65 }
66
67
68
69
70
71 public void testMultipleResultsNested() throws Exception
72 {
73 JXPathExtractor extractor = new JXPathExtractor();
74 extractor.setExpression("/root/node[*]/*/text()");
75 extractor.setSingleResult(false);
76 final Object objResult = extractor.transform(TEST_XML_MULTI_NESTED_RESULTS);
77 assertNotNull(objResult);
78 List results = (List)objResult;
79 assertEquals("Wrong number of results returned.", 4, results.size());
80 assertEquals("Wrong value returned.", "val1", results.get(0));
81 assertEquals("Wrong value returned.", "val2", results.get(1));
82 assertEquals("Wrong value returned.", "val3", results.get(2));
83 assertEquals("Wrong value returned.", "val4", results.get(3));
84 }
85
86 }