KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jcorporate > expresso > core > security > filters > FilterTreeTest


1 /* ====================================================================
2  * The Jcorporate Apache Style Software License, Version 1.2 05-07-2002
3  *
4  * Copyright (c) 1995-2002 Jcorporate Ltd. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in
15  * the documentation and/or other materials provided with the
16  * distribution.
17  *
18  * 3. The end-user documentation included with the redistribution,
19  * if any, must include the following acknowledgment:
20  * "This product includes software developed by Jcorporate Ltd.
21  * (http://www.jcorporate.com/)."
22  * Alternately, this acknowledgment may appear in the software itself,
23  * if and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. "Jcorporate" and product names such as "Expresso" must
26  * not be used to endorse or promote products derived from this
27  * software without prior written permission. For written permission,
28  * please contact info@jcorporate.com.
29  *
30  * 5. Products derived from this software may not be called "Expresso",
31  * or other Jcorporate product names; nor may "Expresso" or other
32  * Jcorporate product names appear in their name, without prior
33  * written permission of Jcorporate Ltd.
34  *
35  * 6. No product derived from this software may compete in the same
36  * market space, i.e. framework, without prior written permission
37  * of Jcorporate Ltd. For written permission, please contact
38  * partners@jcorporate.com.
39  *
40  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
41  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
43  * DISCLAIMED. IN NO EVENT SHALL JCORPORATE LTD OR ITS CONTRIBUTORS
44  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
45  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
46  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
47  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
48  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
49  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
50  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  * ====================================================================
53  *
54  * This software consists of voluntary contributions made by many
55  * individuals on behalf of the Jcorporate Ltd. Contributions back
56  * to the project(s) are encouraged when you make modifications.
57  * Please send them to support@jcorporate.com. For more information
58  * on Jcorporate Ltd. and its products, please see
59  * <http://www.jcorporate.com/>.
60  *
61  * Portions of this software are based upon other open source
62  * products and are subject to their respective licenses.
63  */

64
65 package com.jcorporate.expresso.core.security.filters;
66
67 import com.jcorporate.expresso.core.misc.ReusableChar;
68 import com.jcorporate.expresso.services.test.CommandLineParser;
69 import com.jcorporate.expresso.services.test.ExpressoTestCase;
70 import junit.framework.TestSuite;
71
72
73 /**
74  * Unit test for the Filter Tree System.
75  *
76  * @author Michael Rimov
77  * @version $Revision: 1.3 $ $Date: 2004/11/17 20:48:23 $
78  */

79 public class FilterTreeTest
80         extends ExpressoTestCase {
81     private FilterTree f = null;
82
83     public FilterTreeTest(String JavaDoc testName)
84             throws Exception JavaDoc {
85         super(testName);
86     }
87
88     public static void main(String JavaDoc[] args)
89             throws Exception JavaDoc {
90
91         //Set the system properties we need
92
CommandLineParser.parseCommandLine(args);
93         junit.textui.TestRunner.run(suite());
94     }
95
96     public static junit.framework.Test suite()
97             throws Exception JavaDoc {
98         return new TestSuite(FilterTreeTest.class);
99     }
100
101     public void setUp()
102             throws Exception JavaDoc {
103         f = new FilterTree();
104         f.addFilterString("&", "&amp;");
105         f.addFilterString("&amp;", "&amp;");
106         f.addFilterString("<", "&lt;");
107         f.addFilterString("&lt;", "&lt;");
108         f.addFilterString(">", "&gt;");
109         f.addFilterString("&gt;", "&gt;");
110     }
111
112     /**
113      * Tests to make sure that the tree structure was built correctly.
114      */

115     public void testTreeBuild()
116             throws Exception JavaDoc {
117
118         //Dump for diagnostic sake
119
//f.getRootNode().dumpNode();
120
FilterTreeNode n = f.getRootNode();
121         assertTrue("& in root Elements",
122                 n.subnodeExists(new ReusableChar('&')));
123         assertTrue("< in root Elements",
124                 n.subnodeExists(new ReusableChar('&')));
125         assertTrue("Replacement For '<' == &lt;",
126                 n.getSubnode(new ReusableChar('<')).getReplacementString().equals("&lt;"));
127
128         FilterTreeNode child = n.getSubnode(new ReusableChar('&'));
129         assertTrue("Replacement For '&' == &amp;",
130                 child.getReplacementString().equals("&amp;"));
131         assertTrue("a subnode exists",
132                 child.subnodeExists(new ReusableChar('a')));
133         child = child.getSubnode(new ReusableChar('a'));
134         assertTrue("a has no replacemant",
135                 child.getReplacementString() == null);
136         child = child.getSubnode(new ReusableChar('m'));
137         assertTrue("m has no replacemant",
138                 child.getReplacementString() == null);
139         child = child.getSubnode(new ReusableChar('p'));
140         assertTrue("p has no replacemant",
141                 child.getReplacementString() == null);
142         child = child.getSubnode(new ReusableChar(';'));
143
144         assertTrue("; has replacemant &amp;",
145                 child.getReplacementString().equals("&amp;"));
146     }
147
148     public void testTreeFilter()
149             throws Exception JavaDoc {
150         f.addFilterString("abc", "abcd");
151
152         final String JavaDoc[] filterTests = {
153             "", "<", "&amp;", "to bad for me!", "A < B", "&A < &amB",
154             "ab < abc", "ab < ABc", "a<", "B&G", ">1", "&amp"
155         };
156         final String JavaDoc[] expectedResults = {
157             "", "&lt;", "&amp;", "to bad for me!", "A &lt; B",
158             "&amp;A &lt; &amp;amB", "ab &lt; abcd", "ab &lt; abcd", "a&lt;", "B&amp;G", "&gt;1",
159             "&amp;amp"
160         };
161
162         for (int i = 0; i < filterTests.length; i++) {
163             try {
164                 String JavaDoc result = f.replaceFilter(filterTests[i].toCharArray());
165                 assertTrue("Filter Test # " + Integer.toString(i) + " Got Result " +
166                         result, result.equals(expectedResults[i]));
167             } catch (Exception JavaDoc e) {
168                 e.printStackTrace();
169                 fail("Error: " + e.getMessage() + ". i = " + i);
170             }
171         }
172     }
173 }
Popular Tags