001 package com.oxygenxml.validate.nvdl;
002
003 import junit.framework.TestCase;
004
005 public class NamespaceSpecificationTest extends TestCase {
006
007
008 /**
009 * Tests for the covers method.
010 *
011 */
012 public void testCovers() {
013 doCovers("*");
014 doCovers("\\");
015 doCovers("#");
016 }
017
018 /**
019 * Test covers with different wildcards.
020 * @param w The wildcard.
021 */
022 public void doCovers(String w) {
023 // any namespace
024 NamespaceSpecification nss =
025 new NamespaceSpecification(
026 NamespaceSpecification.ANY_NAMESPACE,
027 NamespaceSpecification.DEFAULT_WILDCARD);
028 assertTrue(nss.covers(NamespaceSpecification.ANY_NAMESPACE));
029 assertFalse(nss.covers("otherNamespace"));
030
031 // specified namespace, no wildcards.
032 nss = new NamespaceSpecification("http://www.oxygenxml.com/test",w);
033 assertFalse(nss.covers(NamespaceSpecification.ANY_NAMESPACE));
034 assertTrue(nss.covers("http://www.oxygenxml.com/test"));
035 assertFalse(nss.covers("http://www.oxygenxml.com/test1"));
036
037 // one wildcard at the end.
038 nss = new NamespaceSpecification("http://www.oxygenxml.com/test" + w, w);
039 assertFalse(nss.covers(NamespaceSpecification.ANY_NAMESPACE));
040 assertTrue(nss.covers("http://www.oxygenxml.com/test"));
041 assertTrue(nss.covers("http://www.oxygenxml.com/test/test"));
042 assertFalse(nss.covers("http://www.oxygenxml.com/xtest"));
043
044 // one wildcard in the middle.
045 nss = new NamespaceSpecification("http://www.oxygenxml.com/" + w + "test",w);
046 assertFalse(nss.covers(NamespaceSpecification.ANY_NAMESPACE));
047 assertTrue(nss.covers("http://www.oxygenxml.com/test"));
048 assertTrue(nss.covers("http://www.oxygenxml.com/test/test"));
049 assertTrue(nss.covers("http://www.oxygenxml.com/xtest"));
050 assertFalse(nss.covers("http://www.oxygenxml.com/testx"));
051
052 // one wildcard at the beginning
053 nss = new NamespaceSpecification(w + "http://www.oxygenxml.com/test", w);
054 assertFalse(nss.covers(NamespaceSpecification.ANY_NAMESPACE));
055 assertTrue(nss.covers("http://www.oxygenxml.com/test"));
056 assertFalse(nss.covers("http://www.oxygenxml.com/test/test"));
057 assertTrue(nss.covers("xhttp://www.oxygenxml.com/test"));
058 assertFalse(nss.covers("xhttp://www.oxygenxml.com/testy"));
059
060 // two wildcards
061 nss = new NamespaceSpecification(w + "http://www.oxygenxml.com/test" + w, w);
062 assertFalse(nss.covers(NamespaceSpecification.ANY_NAMESPACE));
063 assertTrue(nss.covers("http://www.oxygenxml.com/test"));
064 assertTrue(nss.covers("XXXhttp://www.oxygenxml.com/testXXX"));
065 assertTrue(nss.covers("http://www.oxygenxml.com/testXXX"));
066 assertTrue(nss.covers("XXXhttp://www.oxygenxml.com/test"));
067 assertFalse(nss.covers("http://www.oxygenxmlX.com/test"));
068
069 nss = new NamespaceSpecification("http://www.oxygenxml.com/" + w + "test" + w, w);
070 assertFalse(nss.covers(NamespaceSpecification.ANY_NAMESPACE));
071 assertTrue(nss.covers("http://www.oxygenxml.com/XXXtest"));
072 assertTrue(nss.covers("http://www.oxygenxml.com/testXXX"));
073 assertTrue(nss.covers("http://www.oxygenxml.com/XXXtestXXXXX"));
074 assertFalse(nss.covers("http://www.oxygenxml.comX/XXXtestXXXXX"));
075
076 nss = new NamespaceSpecification("http://www.oxygenxml."+ w +"/" + w + "test", w);
077 assertFalse(nss.covers(NamespaceSpecification.ANY_NAMESPACE));
078 assertTrue(nss.covers("http://www.oxygenxml.com/XXXtest"));
079 assertTrue(nss.covers("http://www.oxygenxml.XXX/XXXtest"));
080 assertFalse(nss.covers("http://www.oxygenxml.com/XXXtestX"));
081
082 // no wildcard, spefified
083 nss = new NamespaceSpecification("http://www.oxygenxml."+ w +"/" + w + "test", "");
084 assertTrue(nss.covers("http://www.oxygenxml." + w + "/" + w + "test"));
085 assertFalse(nss.covers("http://www.oxygenxml." + "XXX" + "/" + w + "test"));
086 }
087
088 /**
089 * Test for the compete method.
090 */
091 public void testCompete() {
092 doCompete("*", "*");
093 doCompete("#", "#");
094 doCompete("\\", "\\");
095 doCompete("*", "#");
096 doCompete("*", "\\");
097 doCompete("#", "\\");
098 }
099
100 /**
101 * Test compete with different wildcards.
102 * @param w1 First namespace specification wildcard.
103 * @param w2 Second namespace specification wildcard.
104 */
105 private void doCompete(String w1, String w2) {
106 NamespaceSpecification nss1 = new NamespaceSpecification("", w1);
107 NamespaceSpecification nss2 = new NamespaceSpecification("", w2);
108 assertTrue(nss1.compete(nss2));
109
110 nss1 = new NamespaceSpecification("http://www.oxygenxml.com", w1);
111 nss2 = new NamespaceSpecification("http://www.oxygenxml.com", w2);
112 assertTrue(nss1.compete(nss2));
113
114 nss1 = new NamespaceSpecification("http://www.oxygenxml.com/test", w1);
115 nss2 = new NamespaceSpecification("http://www.oxygenxml.com", w2);
116 assertFalse(nss1.compete(nss2));
117
118 nss1 = new NamespaceSpecification("http://www.oxygenxml.com" + w1, w1);
119 nss2 = new NamespaceSpecification("http://www.oxygenxml.com", w2);
120 assertTrue(nss1.compete(nss2));
121
122 nss1 = new NamespaceSpecification("http://www.oxygenxml.com" + w1, w1);
123 nss2 = new NamespaceSpecification("http://www.oxygenxml.com/test", w2);
124 assertTrue(nss1.compete(nss2));
125
126 nss1 = new NamespaceSpecification("http://www.oxygenxml2.com" + w1, w1);
127 nss2 = new NamespaceSpecification("http://www.oxygenxml.com", w2);
128 assertFalse(nss1.compete(nss2));
129
130 nss1 = new NamespaceSpecification("http://www." + w1 + ".com", w1);
131 nss2 = new NamespaceSpecification("http://www.oxygenxml." + w2, w2);
132 assertTrue(nss1.compete(nss2));
133
134 nss1 = new NamespaceSpecification("http" + w1 + "://www." + w1 + ".com", w1);
135 nss2 = new NamespaceSpecification("http://www.oxyg" + w2 + "enxml." + w2, w2);
136 assertTrue(nss1.compete(nss2));
137
138 nss1 = new NamespaceSpecification("http://www." + w1 + ".com", w1);
139 nss2 = new NamespaceSpecification(
140 NamespaceSpecification.ANY_NAMESPACE,
141 NamespaceSpecification.DEFAULT_WILDCARD);
142 assertFalse(nss1.compete(nss2));
143
144 nss1 = new NamespaceSpecification(
145 NamespaceSpecification.ANY_NAMESPACE,
146 NamespaceSpecification.DEFAULT_WILDCARD);
147 nss2 = new NamespaceSpecification(
148 NamespaceSpecification.ANY_NAMESPACE,
149 NamespaceSpecification.DEFAULT_WILDCARD);
150 assertTrue(nss1.compete(nss2));
151
152 nss1 = new NamespaceSpecification("http://www.oxygenxml.com/test", "");
153 nss2 = new NamespaceSpecification("http://www.oxyg" + w2 + "enxml." + w2, w2);
154 assertTrue(nss1.compete(nss2));
155
156 nss1 = new NamespaceSpecification("http://www.oxygenxml.com/test", "");
157 nss2 = new NamespaceSpecification("http://www.oxygenxml.com/test", "");
158 assertTrue(nss1.compete(nss2));
159
160 nss1 = new NamespaceSpecification("http://www.oxygenxml.com/test", "");
161 nss2 = new NamespaceSpecification("http://www.oxygenxml.com/test/x", "");
162 assertFalse(nss1.compete(nss2));
163 }
164 }