1 9 10 package test.dom4j.rule; 11 12 import junit.framework.Test; 13 import junit.framework.TestCase; 14 import junit.framework.TestSuite; 15 import junit.textui.TestRunner; 16 import org.dom4j.CDATA; 17 import org.dom4j.Document; 18 import org.dom4j.DocumentFactory; 19 import org.dom4j.rule.Pattern; 20 import org.dom4j.rule.Rule; 21 22 import java.util.ArrayList ; 23 import java.util.Collections ; 24 25 30 public class TestRule extends TestCase { 31 32 protected DocumentFactory factory = new DocumentFactory(); 33 34 public TestRule(String name) { 35 super( name ); 36 } 37 38 public static void main(String [] args) { 39 TestRunner.run( suite() ); 40 } 41 42 public static Test suite() { 43 return new TestSuite( TestRule.class ); 44 } 45 46 public void testOrder() throws Exception { 47 testGreater( "foo", "*" ); 48 } 49 50 protected void testGreater(String expr1, String expr2) throws Exception { 51 System.out.println( "parsing: " + expr1 + " and " + expr2 ); 52 53 Rule r1 = createRule( expr1 ); 54 Rule r2 = createRule( expr2 ); 55 56 System.out.println( "rule1: " + r1 + " rule2: " + r2 ); 57 58 int value = r1.compareTo( r2 ); 59 60 System.out.println( "Comparison: " + value ); 61 62 assertTrue( "r1 > r2", value > 0 ); 63 64 ArrayList list = new ArrayList (); 65 list.add( r1 ); 66 list.add( r2 ); 67 68 Collections.sort( list ); 69 70 assertTrue( "r2 should be first", list.get(0) == r2 ); 71 assertTrue( "r1 should be next", list.get(1) == r1 ); 72 73 list = new ArrayList (); 74 list.add( r2 ); 75 list.add( r1 ); 76 77 Collections.sort( list ); 78 79 assertTrue( "r2 should be first", list.get(0) == r2 ); 80 assertTrue( "r1 should be next", list.get(1) == r1 ); 81 106 } 107 108 public void testDocument() { 109 Rule rule = createRule( "/" ); 110 Document document = factory.createDocument(); 111 document.addElement( "foo" ); 112 113 assertTrue( "/ matches document", rule.matches( document ) ); 114 assertTrue( "/ does not match root element", ! rule.matches( document.getRootElement() ) ); 115 } 116 117 public void testTextMatchesCDATA() { 118 CDATA cdata = factory.createCDATA( "<>&" ); 119 Rule rule = createRule( "text()" ); 120 121 assertTrue( "text() matches CDATA", rule.matches( cdata ) ); 122 } 123 124 protected Rule createRule(String expr) { 125 Pattern pattern = factory.createPattern( expr ); 126 return new Rule( pattern ); 127 } 128 } 129 | Popular Tags |