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