/*
* ModeShape (http://www.modeshape.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.modeshape.sequencer.xsd;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import javax.jcr.Node;
import org.junit.Test;
import org.modeshape.common.FixFor;
import org.modeshape.jcr.sequencer.AbstractSequencerTest;
/**
* Unit test for {@link XsdSequencer}
*
* Note: this was ported from 2.x and is just a suite of smoke-tests, as the sequenced content isn't asserted anywhere.
*/
public class XsdSequencerTest extends AbstractSequencerTest {
@Test
public void shouldBeAbleToParseXsdForStockQuote() throws Exception {
assertSequencedSuccessfully("stockQuote.xsd");
}
private Node assertSequencedSuccessfully( String filename ) throws Exception {
int pathSeparatorIndex = filename.lastIndexOf("/");
String nodeName = pathSeparatorIndex != -1 ? filename.substring(pathSeparatorIndex + 1) : filename;
createNodeWithContentFromFile(nodeName, filename);
Node outputNode = getOutputNode(rootNode, nodeName + "/" + XsdLexicon.SCHEMA_DOCUMENT);
assertNotNull(outputNode);
assertCreatedBySessionUser(outputNode, session);
assertEquals(XsdLexicon.SCHEMA_DOCUMENT, outputNode.getPrimaryNodeType().getName());
assertTrue(outputNode.getNodes().getSize() > 0);
return outputNode;
}
@Test
public void shouldBeAbleToParseXsdForUddiV3() throws Exception {
assertSequencedSuccessfully("uddi_v3.xsd");
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter01() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter01.xsd");
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter03env() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter03env.xsd");
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter03ord() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter03ord.xsd");
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter03prod() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter03prod.xsd");
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter03prod2() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter03prod2.xsd");
}
@Test
@FixFor("MODE-2183")
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter04ord1() throws Exception {
final Node outputNode = assertSequencedSuccessfully("definitiveXmlSchema/chapter04ord1.xsd");
final Node includeNode = outputNode.getNode(XsdLexicon.INCLUDE);
assertThat(includeNode.hasProperty(XsdLexicon.SCHEMA_LOCATION), is(true));
assertThat(includeNode.hasProperty("schemaLocation"), is(false));
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter04ord2() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter04ord2.xsd");
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter04prod() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter04prod.xsd");
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter05ord() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter05ord.xsd");
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter05prod() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter05prod.xsd");
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter07() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter07.xsd");
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter08() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter08.xsd");
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter09() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter09.xsd");
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter11() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter11.xsd");
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter13() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter13.xsd");
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter14() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter14.xsd");
}
@Test
public void shouldBeAbleToParseXsdFromDefinitiveXmlSchemaExampleChapter15() throws Exception {
assertSequencedSuccessfully("definitiveXmlSchema/chapter15.xsd");
}
@Test
@FixFor({"MODE-1464", "MODE-2183"})
public void shouldBeAbleToParseUnsignedLong() throws Exception {
final Node outputNode = assertSequencedSuccessfully("unsigned_long.xsd");
final Node includeNode = outputNode.getNode(XsdLexicon.IMPORT);
assertThat(includeNode.hasProperty(XsdLexicon.SCHEMA_LOCATION), is(true));
assertThat(includeNode.hasProperty("schemaLocation"), is(false));
final Node complexType = outputNode.getNode("openAttrs");
assertThat(complexType.hasProperty(XsdLexicon.MIXED), is(true));
assertThat(complexType.hasProperty("mixed"), is(false));
}
}