1 | /* |
---|
2 | * To change this template, choose Tools | Templates |
---|
3 | * and open the template in the editor. |
---|
4 | */ |
---|
5 | package clarin.cmdi.schema.cmd; |
---|
6 | |
---|
7 | import clarin.cmdi.schema.cmd.Validator.Message; |
---|
8 | import java.util.List; |
---|
9 | import javax.xml.transform.Source; |
---|
10 | import org.junit.*; |
---|
11 | |
---|
12 | import static org.junit.Assert.*; |
---|
13 | |
---|
14 | /** |
---|
15 | * |
---|
16 | * @author menwin |
---|
17 | */ |
---|
18 | public class TestCMDValidate { |
---|
19 | |
---|
20 | private Validator cmdValidator; |
---|
21 | |
---|
22 | @Before |
---|
23 | public void setUp() { |
---|
24 | cmdValidator = new Validator(getClass().getResource("/schema/general-component-schema.xsd")); |
---|
25 | cmdValidator.setResourceResolver(new ResourceResolver()); |
---|
26 | } |
---|
27 | |
---|
28 | @After |
---|
29 | public void tearDown() { |
---|
30 | cmdValidator = null; |
---|
31 | } |
---|
32 | |
---|
33 | protected boolean validate(String prof) throws Exception { |
---|
34 | System.out.print("Test CMD validation [" + prof + "] "); |
---|
35 | Source src = new javax.xml.transform.stream.StreamSource(new java.io.File(TestCMDValidate.class.getResource("/docs/" + prof).toURI())); |
---|
36 | boolean valid = cmdValidator.validateProfile(src); |
---|
37 | if (valid) { |
---|
38 | System.out.println("valid"); |
---|
39 | } else { |
---|
40 | System.out.println("invalid"); |
---|
41 | } |
---|
42 | cmdValidator.printMessages(System.out); |
---|
43 | return valid; |
---|
44 | } |
---|
45 | |
---|
46 | @Test |
---|
47 | public void valid_0() throws Exception { |
---|
48 | assertTrue(validate("CLARINWebService.xml")); |
---|
49 | assertEquals(0, cmdValidator.getMessages().size()); |
---|
50 | } |
---|
51 | |
---|
52 | @Test |
---|
53 | public void invalid_1() throws Exception { |
---|
54 | assertFalse(validate("CLARINWebService_faulty-1.xml")); |
---|
55 | |
---|
56 | final List<Message> messages = cmdValidator.getMessages(); |
---|
57 | assertEquals(1, messages.size()); |
---|
58 | Message message = messages.get(0); |
---|
59 | assertTrue(message.error); |
---|
60 | assertEquals("/CMD_ComponentSpec[1]/CMD_Component[1]/CMD_Component[1]/AttributeList[1]/Attribute[1]", message.location); |
---|
61 | assertEquals("not(Name=('ref','ComponentId'))", message.test); |
---|
62 | assertNotNull(message.text); |
---|
63 | } |
---|
64 | |
---|
65 | @Test |
---|
66 | public void invalid_2() throws Exception { |
---|
67 | assertFalse(validate("CLARINWebService_faulty-2.xml")); |
---|
68 | |
---|
69 | final List<Message> messages = cmdValidator.getMessages(); |
---|
70 | assertEquals(1, messages.size()); |
---|
71 | Message message = messages.get(0); |
---|
72 | assertTrue(message.error); |
---|
73 | assertEquals("/CMD_ComponentSpec[1]/CMD_Component[1]/CMD_Component[1]/AttributeList[1]/Attribute[1]/ValueScheme[1]/enumeration[1]/item[2]", message.location); |
---|
74 | assertEquals("empty(preceding-sibling::item[.=current()])", message.test); |
---|
75 | assertNotNull(message.text); |
---|
76 | } |
---|
77 | |
---|
78 | @Test |
---|
79 | public void invalid_3() throws Exception { |
---|
80 | assertFalse(validate("CLARINWebService_faulty-3.xml")); |
---|
81 | |
---|
82 | final List<Message> messages = cmdValidator.getMessages(); |
---|
83 | assertEquals(1, messages.size()); |
---|
84 | Message message = messages.get(0); |
---|
85 | assertTrue(message.error); |
---|
86 | assertEquals("/CMD_ComponentSpec[1]/CMD_Component[1]/CMD_Component[1]/AttributeList[1]/Attribute[2]", message.location); |
---|
87 | assertEquals("empty(preceding-sibling::Attribute[Name=current()/Name])", message.test); |
---|
88 | assertNotNull(message.text); |
---|
89 | } |
---|
90 | |
---|
91 | @Test |
---|
92 | public void invalid_4() throws Exception { |
---|
93 | assertFalse(validate("CLARINWebService_faulty-4.xml")); |
---|
94 | |
---|
95 | final List<Message> messages = cmdValidator.getMessages(); |
---|
96 | assertEquals(1, messages.size()); |
---|
97 | Message message = messages.get(0); |
---|
98 | assertTrue(message.error); |
---|
99 | assertEquals("/CMD_ComponentSpec[1]/CMD_Component[1]/CMD_Component[1]/CMD_Component[2]", message.location); |
---|
100 | assertEquals("empty(preceding-sibling::*[@name=current()/@name])", message.test); |
---|
101 | assertNotNull(message.text); |
---|
102 | } |
---|
103 | |
---|
104 | @Test |
---|
105 | public void invalid_5() throws Exception { |
---|
106 | assertFalse(validate("CLARINWebService_faulty-5.xml")); |
---|
107 | |
---|
108 | final List<Message> messages = cmdValidator.getMessages(); |
---|
109 | assertEquals(1, messages.size()); |
---|
110 | Message message = messages.get(0); |
---|
111 | assertTrue(message.error); |
---|
112 | assertEquals("/CMD_ComponentSpec[1]/CMD_Component[1]/CMD_Component[1]/CMD_Element[3]", message.location); |
---|
113 | assertEquals("empty(preceding-sibling::*[@name=current()/@name])", message.test); |
---|
114 | assertNotNull(message.text); |
---|
115 | } |
---|
116 | |
---|
117 | @Test |
---|
118 | public void invalid_6() throws Exception { |
---|
119 | assertFalse(validate("CLARINWebService_faulty-6.xml")); |
---|
120 | |
---|
121 | final List<Message> messages = cmdValidator.getMessages(); |
---|
122 | assertEquals(1, messages.size()); |
---|
123 | Message message = messages.get(0); |
---|
124 | assertTrue(message.error); |
---|
125 | assertEquals("/CMD_ComponentSpec[1]/CMD_Component[1]/CMD_Component[1]/CMD_Component[1]", message.location); |
---|
126 | assertEquals("empty(preceding-sibling::*[@name=current()/@name])", message.test); |
---|
127 | assertNotNull(message.text); |
---|
128 | } |
---|
129 | |
---|
130 | @Test |
---|
131 | public void invalid_7() throws Exception { |
---|
132 | assertFalse(validate("CLARINWebService_faulty-7.xml")); |
---|
133 | |
---|
134 | final List<Message> messages = cmdValidator.getMessages(); |
---|
135 | assertEquals(1, messages.size()); |
---|
136 | Message message = messages.get(0); |
---|
137 | assertTrue(message.error); |
---|
138 | assertNull(message.location); |
---|
139 | assertNull(message.test); |
---|
140 | assertNotNull(message.text); |
---|
141 | } |
---|
142 | |
---|
143 | @Test |
---|
144 | public void valid_8() throws Exception { |
---|
145 | assertTrue(validate("CLARINWebService_warn-8.xml")); |
---|
146 | |
---|
147 | final List<Message> messages = cmdValidator.getMessages(); |
---|
148 | assertEquals(2, messages.size()); |
---|
149 | Message message = messages.get(0); |
---|
150 | assertFalse(message.error); |
---|
151 | assertEquals("/CMD_ComponentSpec[1]/CMD_Component[1]", message.location); |
---|
152 | assertNotNull(message.test); |
---|
153 | assertEquals("A nested component or element has the same name ('Service') as this component! Please, consider to rename one of them.", message.text); |
---|
154 | message = messages.get(1); |
---|
155 | assertFalse(message.error); |
---|
156 | assertEquals("/CMD_ComponentSpec[1]/CMD_Component[1]/CMD_Component[1]/AttributeList[1]/Attribute[1]", message.location); |
---|
157 | assertNotNull(message.test); |
---|
158 | assertEquals("An attribute has the same name ('Service') as its element or component! Please, consider to rename one of them.", message.text); |
---|
159 | } |
---|
160 | |
---|
161 | @Test |
---|
162 | public void invalid_9() throws Exception { |
---|
163 | assertFalse(validate("CLARINWebService_faulty-9.xml")); |
---|
164 | |
---|
165 | final List<Message> messages = cmdValidator.getMessages(); |
---|
166 | assertEquals(1, messages.size()); |
---|
167 | Message message = messages.get(0); |
---|
168 | assertTrue(message.error); |
---|
169 | assertEquals("/CMD_ComponentSpec[1]/CMD_Component[1]/CMD_Component[1]/CMD_Component[2]/CMD_Component[1]/CMD_Component[2]/CMD_Component[3]", message.location); |
---|
170 | assertEquals("empty(preceding-sibling::CMD_Component[@ComponentId=current()/@ComponentId])", message.test); |
---|
171 | assertNotNull(message.text); |
---|
172 | } |
---|
173 | |
---|
174 | @Test |
---|
175 | public void invalid_10() throws Exception { |
---|
176 | assertFalse("There should be invalid cardinality values", validate("CLARINWebService_faulty-10.xml")); |
---|
177 | final List<Message> messages = cmdValidator.getMessages(); |
---|
178 | assertEquals("There should be 5 invalid cardinality sets", 5, messages.size()); |
---|
179 | assertEquals("UNK, number, maximum ne 0", "/CMD_ComponentSpec[1]/CMD_Component[1]/CMD_Element[3]", messages.get(0).location); |
---|
180 | assertEquals("number, UNK, minimum le 1","/CMD_ComponentSpec[1]/CMD_Component[1]/CMD_Element[6]", messages.get(1).location); |
---|
181 | assertEquals("number, number, minimum le maximum","/CMD_ComponentSpec[1]/CMD_Component[1]/CMD_Element[8]", messages.get(2).location); |
---|
182 | assertEquals("unbounded, UNK", "/CMD_ComponentSpec[1]/CMD_Component[1]/CMD_Element[10]", messages.get(3).location); |
---|
183 | assertEquals("unbounded, 1", "/CMD_ComponentSpec[1]/CMD_Component[1]/CMD_Element[11]", messages.get(4).location); |
---|
184 | } |
---|
185 | } |
---|