source: ComponentRegistry/trunk/CMDValidate/src/test/java/clarin/cmdi/schema/cmd/TestCMDValidate.java @ 4624

Last change on this file since 4624 was 4624, checked in by Twan Goosen, 10 years ago

extended test for schematron cardinality checks

File size: 7.8 KB
Line 
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5package clarin.cmdi.schema.cmd;
6
7import clarin.cmdi.schema.cmd.Validator.Message;
8import java.util.List;
9import javax.xml.transform.Source;
10import org.junit.*;
11
12import static org.junit.Assert.*;
13
14/**
15 *
16 * @author menwin
17 */
18public 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}
Note: See TracBrowser for help on using the repository browser.