KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mule > tck > AbstractTransformerTestCase


1 /*
2  * $Id: AbstractTransformerTestCase.java 4323 2006-12-19 15:55:15Z lajos $
3  * --------------------------------------------------------------------------------------
4  * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com
5  *
6  * The software in this package is published under the terms of the MuleSource MPL
7  * license, a copy of which has been included with this distribution in the
8  * LICENSE.txt file.
9  */

10
11 package org.mule.tck;
12
13 import org.mule.impl.RequestContext;
14 import org.mule.tck.testmodels.fruit.InvalidSatsuma;
15 import org.mule.umo.transformer.TransformerException;
16 import org.mule.umo.transformer.UMOTransformer;
17
18 import java.util.Arrays JavaDoc;
19
20 public abstract class AbstractTransformerTestCase extends AbstractMuleTestCase
21 {
22
23     protected void doSetUp() throws Exception JavaDoc
24     {
25         // setup a dummy context for transformers that are event aware
26
RequestContext.setEvent(getTestEvent("test"));
27     }
28
29     protected void doTearDown() throws Exception JavaDoc
30     {
31         RequestContext.setEvent(null);
32     }
33
34     protected String JavaDoc normalizeString(String JavaDoc rawString)
35     {
36         return rawString.replaceAll("\r\n", "\n");
37     }
38
39     public void testTransform() throws Exception JavaDoc
40     {
41         Object JavaDoc result = getTransformer().transform(getTestData());
42         assertNotNull(result);
43
44         Object JavaDoc expectedResult = getResultData();
45         // Special case for string results
46
if (result instanceof String JavaDoc && expectedResult instanceof String JavaDoc)
47         {
48             assertEquals(normalizeString((String JavaDoc)expectedResult), normalizeString((String JavaDoc)result));
49         }
50         else
51         {
52             boolean b = compareResults(expectedResult, result);
53             assertTrue(b);
54         }
55     }
56
57     public void testRoundtripTransform() throws Exception JavaDoc
58     {
59         if (getRoundTripTransformer() != null)
60         {
61             Object JavaDoc result = getRoundTripTransformer().transform(getResultData());
62             assertNotNull(result);
63             boolean b = compareRoundtripResults(getTestData(), result);
64             assertTrue(b);
65         }
66     }
67
68     public void testBadReturnType() throws Exception JavaDoc
69     {
70         doTestBadReturnType(getTransformer(), getTestData());
71     }
72
73     public void testRoundtripBadReturnType() throws Exception JavaDoc
74     {
75         if (getRoundTripTransformer() != null)
76         {
77             doTestBadReturnType(getRoundTripTransformer(), getResultData());
78         }
79     }
80
81     public void testRoundTrip() throws Exception JavaDoc
82     {
83         if (getRoundTripTransformer() != null)
84         {
85             UMOTransformer trans = getTransformer();
86             trans.setNextTransformer(getRoundTripTransformer());
87             Object JavaDoc result = trans.transform(getTestData());
88             compareRoundtripResults(getTestData(), result);
89         }
90     }
91
92     public void doTestBadReturnType(UMOTransformer tran, Object JavaDoc src) throws Exception JavaDoc
93     {
94         tran.setReturnClass(InvalidSatsuma.class);
95         try
96         {
97             tran.transform(src);
98             fail("Should throw exception for bad return type");
99         }
100         catch (TransformerException e)
101         {
102             // expected
103
}
104     }
105
106     public abstract UMOTransformer getTransformer() throws Exception JavaDoc;
107
108     public abstract UMOTransformer getRoundTripTransformer() throws Exception JavaDoc;
109
110     public abstract Object JavaDoc getTestData();
111
112     public abstract Object JavaDoc getResultData();
113
114     public boolean compareResults(Object JavaDoc src, Object JavaDoc result)
115     {
116         if (src == null && result == null)
117         {
118             return true;
119         }
120         if (src == null || result == null)
121         {
122             return false;
123         }
124         if (src instanceof Object JavaDoc[] && result instanceof Object JavaDoc[])
125         {
126             return Arrays.equals((Object JavaDoc[])src, (Object JavaDoc[])result);
127             // TODO check if RetroTranslating Mule to JDK 1.4 makes this method
128
// available
129
// return Arrays.deepEquals((Object[])src, (Object[])result);
130
}
131         else if (src instanceof byte[] && result instanceof byte[])
132         {
133             return Arrays.equals((byte[])src, (byte[])result);
134         }
135         else
136         {
137             return src.equals(result);
138         }
139     }
140
141     public boolean compareRoundtripResults(Object JavaDoc src, Object JavaDoc result)
142     {
143         return compareResults(src, result);
144     }
145 }
146
Popular Tags