KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > dom4j > rule > RuleTest


1 /*
2  * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
3  *
4  * This software is open source.
5  * See the bottom of this file for the licence.
6  */

7
8 package org.dom4j.rule;
9
10 import junit.textui.TestRunner;
11
12 import java.util.ArrayList JavaDoc;
13 import java.util.Collections JavaDoc;
14
15 import org.dom4j.AbstractTestCase;
16 import org.dom4j.CDATA;
17 import org.dom4j.Document;
18 import org.dom4j.DocumentFactory;
19
20 /**
21  * Tests the ordering of Rules
22  *
23  * @author <a HREF="mailto:jstrachan@apache.org">James Strachan </a>
24  * @version $Revision: 1.3 $
25  */

26 public class RuleTest extends AbstractTestCase {
27     protected DocumentFactory factory = new DocumentFactory();
28
29     public static void main(String JavaDoc[] args) {
30         TestRunner.run(RuleTest.class);
31     }
32
33     public void testOrder() throws Exception JavaDoc {
34         testGreater("foo", "*");
35     }
36
37     protected void testGreater(String JavaDoc expr1, String JavaDoc expr2) throws Exception JavaDoc {
38         System.out.println("parsing: " + expr1 + " and " + expr2);
39
40         Rule r1 = createRule(expr1);
41         Rule r2 = createRule(expr2);
42
43         System.out.println("rule1: " + r1 + " rule2: " + r2);
44
45         int value = r1.compareTo(r2);
46
47         System.out.println("Comparison: " + value);
48
49         assertTrue("r1 > r2", value > 0);
50
51         ArrayList JavaDoc list = new ArrayList JavaDoc();
52         list.add(r1);
53         list.add(r2);
54
55         Collections.sort(list);
56
57         assertTrue("r2 should be first", list.get(0) == r2);
58         assertTrue("r1 should be next", list.get(1) == r1);
59
60         list = new ArrayList JavaDoc();
61         list.add(r2);
62         list.add(r1);
63
64         Collections.sort(list);
65
66         assertTrue("r2 should be first", list.get(0) == r2);
67         assertTrue("r1 should be next", list.get(1) == r1);
68
69         /*
70          * TreeSet set = new TreeSet(); set.add( r1 ); set.add( r2 );
71          *
72          * assertTrue( "r2 should be first", set.first() == r2 ); assertTrue(
73          * "r1 should be next", set.last() == r1 );
74          *
75          * Object[] array = set.toArray();
76          *
77          * assertTrue( "r2 should be first", array[0] == r2 ); assertTrue( "r1
78          * should be next", array[1] == r1 );
79          *
80          * set = new TreeSet(); set.add( r2 ); set.add( r1 );
81          *
82          * assertTrue( "r2 should be first", set.first() == r2 ); assertTrue(
83          * "r1 should be next", set.last() == r1 );
84          *
85          * array = set.toArray();
86          *
87          * assertTrue( "r2 should be first", array[0] == r2 ); assertTrue( "r1
88          * should be next", array[1] == r1 );
89          */

90     }
91
92     public void testDocument() {
93         Rule rule = createRule("/");
94         Document document = factory.createDocument();
95         document.addElement("foo");
96
97         assertTrue("/ matches document", rule.matches(document));
98         assertTrue("/ does not match root element", !rule.matches(document
99                 .getRootElement()));
100     }
101
102     public void testTextMatchesCDATA() {
103         CDATA cdata = factory.createCDATA("<>&");
104         Rule rule = createRule("text()");
105
106         assertTrue("text() matches CDATA", rule.matches(cdata));
107     }
108
109     protected Rule createRule(String JavaDoc expr) {
110         Pattern pattern = factory.createPattern(expr);
111
112         return new Rule(pattern);
113     }
114 }
115
116 /*
117  * Redistribution and use of this software and associated documentation
118  * ("Software"), with or without modification, are permitted provided that the
119  * following conditions are met:
120  *
121  * 1. Redistributions of source code must retain copyright statements and
122  * notices. Redistributions must also contain a copy of this document.
123  *
124  * 2. Redistributions in binary form must reproduce the above copyright notice,
125  * this list of conditions and the following disclaimer in the documentation
126  * and/or other materials provided with the distribution.
127  *
128  * 3. The name "DOM4J" must not be used to endorse or promote products derived
129  * from this Software without prior written permission of MetaStuff, Ltd. For
130  * written permission, please contact dom4j-info@metastuff.com.
131  *
132  * 4. Products derived from this Software may not be called "DOM4J" nor may
133  * "DOM4J" appear in their names without prior written permission of MetaStuff,
134  * Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
135  *
136  * 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
137  *
138  * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
139  * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
140  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
141  * ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
142  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
143  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
144  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
145  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
146  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
147  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
148  * POSSIBILITY OF SUCH DAMAGE.
149  *
150  * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
151  */

152
Popular Tags