blob: f978bc5b168f526b8a3529eb4a435ebb2a608a5f [file]
/* Copyright 2004 The Apache Software Foundation
*
* 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 scomp.namespace.detailed;
import org.apache.xmlbeans.XmlErrorCodes;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlOptions;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import xbean.scomp.namespace.attributeWC.*;
import static org.junit.jupiter.api.Assertions.*;
import static scomp.common.BaseCase.createOptions;
import static scomp.common.BaseCase.getErrorCodes;
public class AttributeWC {
@Test
void testAnyLaxLegal() throws XmlException {
AnyLaxDocument doc = AnyLaxDocument.Factory.parse(
"<AnyLax xmlns=\"http://xbean/scomp/namespace/AttributeWC\" attr1=\"val1\"/>");
assertTrue(doc.validate(createOptions()));
}
@Test
void testAnyLaxIllegal() throws XmlException {
AnyLaxDocument doc = AnyLaxDocument.Factory.parse(
"<AnyLax xmlns=\"http://xbean/scomp/namespace/AttributeWC\" attr1=\"val1\"/>");
assertTrue(doc.validate(createOptions()));
}
@Test
void testAnySkipLegal() throws XmlException {
AnySkipDocument doc = AnySkipDocument.Factory.parse(
"<AnySkip xmlns=\"http://xbean/scomp/namespace/AttributeWC\" attr1=\"val1\"/>");
assertTrue(doc.validate(createOptions()));
}
/**
* Everything is legal here
* public void testAnySkipIllegal() throws XmlException {
* }
*/
//no NS is legal too
@Test
void testAnyStrictLegal() throws XmlException {
AnyStrictDocument doc = AnyStrictDocument.Factory.parse(
"<ns:AnyStrict" +
" xmlns:ns=\"http://xbean/scomp/namespace/AttributeWC\" " +
" xmlns:at=\"http://xbean/scomp/attribute/GlobalAttrDefault\" " +
"at:testattribute=\"val1\"/>");
assertTrue(doc.validate(createOptions()));
}
@Test
void testAnyStrictIllegal() throws XmlException {
AnyStrictDocument doc = AnyStrictDocument.Factory.parse(
"<AnyStrict xmlns=\"http://xbean/scomp/namespace/AttributeWC\" attr1=\"val1\"/>");
XmlOptions validateOptions = createOptions();
assertFalse(doc.validate(validateOptions));
String[] errExpected = {XmlErrorCodes.ASSESS_ATTR_SCHEMA_VALID$NOT_RESOLVED};
assertArrayEquals(errExpected, getErrorCodes(validateOptions));
}
@Test
void testOtherLaxLegal() throws XmlException {
OtherLaxDocument doc = OtherLaxDocument.Factory.parse(
"<foo:OtherLax " +
"xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" " +
"xmlns:foobar=\"http:apache.org\" " +
"foobar:attr1=\"val1\"/>");
assertTrue(doc.validate(createOptions()));
}
//can not be in target NS
//cannot be in noNS
@Test
void testOtherLaxIllegal() throws XmlException {
OtherLaxDocument doc = OtherLaxDocument.Factory.parse(
"<foo:OtherLax xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" foo:attr1=\"val1\"/>");
XmlOptions validateOptions = createOptions();
assertFalse(doc.validate(validateOptions));
String[] errExpected = {XmlErrorCodes.ELEM_COMPLEX_TYPE_LOCALLY_VALID$NOT_WILDCARD_VALID};
assertArrayEquals(errExpected, getErrorCodes(validateOptions));
doc = OtherLaxDocument.Factory.parse(
"<foo:OtherLax xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" attr1=\"val1\"/>");
validateOptions.getErrorListener().clear();
assertFalse(doc.validate(validateOptions));
errExpected = new String[]{XmlErrorCodes.ELEM_COMPLEX_TYPE_LOCALLY_VALID$NOT_WILDCARD_VALID};
assertArrayEquals(errExpected, getErrorCodes(validateOptions));
}
@Test
void testOtherSkipLegal() throws XmlException {
OtherSkipDocument doc = OtherSkipDocument.Factory.parse(
"<foo:OtherSkip xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" " +
"xmlns:foobar=\"http:apache.org\" " +
"foobar:attr1=\"val1\"/>");
assertTrue(doc.validate(createOptions()));
}
//ns not allowed by the wc
@Test
void testOtherSkipIllegal() throws XmlException {
OtherSkipDocument doc = OtherSkipDocument.Factory.parse(
"<foo:OtherSkip xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" foo:attr1=\"val1\"/>");
XmlOptions validateOptions = createOptions();
assertFalse(doc.validate(validateOptions));
String[] errExpected = {XmlErrorCodes.ELEM_COMPLEX_TYPE_LOCALLY_VALID$NOT_WILDCARD_VALID};
assertArrayEquals(errExpected, getErrorCodes(validateOptions));
}
@Test
void testOtherStrictLegal() throws XmlException {
OtherStrictDocument doc = OtherStrictDocument.Factory.parse(
"<foo:OtherStrict xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\"" +
" xmlns:at=\"http://xbean/scomp/attribute/GlobalAttrDefault\"" +
" at:testattribute=\"val1\"/>");
assertTrue(doc.validate(createOptions()));
}
@Test
void testOtherStrictIllegal() throws XmlException {
OtherStrictDocument doc = OtherStrictDocument.Factory.parse(
"<foo:OtherStrict xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\"" +
" xmlns:at=\"http://xbean/scomp/attribute/GlobalAttrDefault\"" +
" at:test=\"val1\"/>");
XmlOptions validateOptions = createOptions();
assertFalse(doc.validate(validateOptions));
String[] errExpected = {XmlErrorCodes.ASSESS_ATTR_SCHEMA_VALID$NOT_RESOLVED};
assertArrayEquals(errExpected, getErrorCodes(validateOptions));
}
//no declaration for this attr, no error on Lax
@Test
void testListLaxLegal() throws XmlException {
ListLaxDocument doc = ListLaxDocument.Factory.parse(
"<foo:ListLax " +
" xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\"" +
" xmlns:at=\"http://apache.org\"" +
" at:testattribute=\"val1\"/>");
assertTrue(doc.validate(createOptions()));
}
@Test
void testListLaxIllegal() throws XmlException {
ListLaxDocument doc = ListLaxDocument.Factory.parse(
"<foo:ListLax " +
" xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\"" +
" xmlns:at=\"http://xbean/scomp/attribute/GlobalAttrDefault\"" +
" at:test=\"val1\"/>");
XmlOptions validateOptions = createOptions();
assertFalse(doc.validate(validateOptions));
String[] errExpected = {XmlErrorCodes.ELEM_COMPLEX_TYPE_LOCALLY_VALID$NOT_WILDCARD_VALID};
assertArrayEquals(errExpected, getErrorCodes(validateOptions));
}
@Test
void testListSkipLegal() throws XmlException {
ListSkipDocument doc = ListSkipDocument.Factory.parse(
"<foo:ListSkip " +
" xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\"" +
" xmlns:at=\"http://apache.org\"" +
" at:testattribute=\"val1\"/>");
assertTrue(doc.validate(createOptions()));
}
@Test
void testListSkipIllegal() throws XmlException {
ListSkipDocument doc = ListSkipDocument.Factory.parse(
"<foo:ListSkip " +
" xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\"" +
" xmlns:at=\"http://apache_org.org\"" +
" at:testattribute=\"val1\"/>");
XmlOptions validateOptions = createOptions();
assertFalse(doc.validate(validateOptions));
String[] errExpected = {XmlErrorCodes.ELEM_COMPLEX_TYPE_LOCALLY_VALID$NOT_WILDCARD_VALID};
assertArrayEquals(errExpected, getErrorCodes(validateOptions));
}
// " xmlns:pre=\"http://xbean/scomp/attribute/GlobalAttrDefault\"
@Test
void testListStrictLegal() throws XmlException {
ListStrictDocument doc = ListStrictDocument.Factory.parse(
"<foo:ListStrict " +
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
" xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\"" +
" xmlns:at=\"http://xbean/scomp/attribute/GlobalAttrDefault\"" +
" at:testattribute=\"val1\"/>");
assertTrue(doc.validate(createOptions()));
}
@Test
void testListStrictIllegal() throws XmlException {
ListStrictDocument doc = ListStrictDocument.Factory.parse(
"<foo:ListStrict " +
" xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\"" +
" xmlns:at=\"http://apache.org\"" +
" at:testattribute=\"val1\"/>");
XmlOptions validateOptions = createOptions();
assertFalse(doc.validate(validateOptions));
String[] errExpected = {XmlErrorCodes.ASSESS_ATTR_SCHEMA_VALID$NOT_RESOLVED};
assertArrayEquals(errExpected, getErrorCodes(validateOptions));
}
@Test
void testTargetLaxLegal() throws XmlException {
TargetLaxDocument doc = TargetLaxDocument.Factory.parse(
"<foo:TargetLax xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" foo:testattribute=\"val1\"/>");
assertTrue(doc.validate(createOptions()));
}
@Test
void testTargetLaxIllegal() throws XmlException {
TargetLaxDocument doc = TargetLaxDocument.Factory.parse(
"<foo:TargetLax " +
" xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\"" +
" xmlns:at=\"http://xbean/scomp/attribute/GlobalAttrDefault\"" +
" at:testattributeInt=\"foo\"/>");
XmlOptions validateOptions = createOptions();
assertFalse(doc.validate(validateOptions));
String[] errExpected = {XmlErrorCodes.ELEM_COMPLEX_TYPE_LOCALLY_VALID$NOT_WILDCARD_VALID};
assertArrayEquals(errExpected, getErrorCodes(validateOptions));
}
@Test
void testTargetSkipLegal() throws XmlException {
TargetSkipDocument doc = TargetSkipDocument.Factory.parse(
"<foo:TargetSkip xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" foo:undeclAttr=\"val1\"/>");
assertTrue(doc.validate(createOptions()));
}
/**
* can a test ever be illegal here?
*/
@Disabled
@Test
void testTargetSkipIllegal() throws XmlException {
TargetSkipDocument doc = TargetSkipDocument.Factory.parse(
"<foo:TargetSkip xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" foo:undeclAttr=\"val1\"/>");
XmlOptions validateOptions = createOptions();
assertFalse(doc.validate(validateOptions));
String[] errExpected = {XmlErrorCodes.ATTR_LOCALLY_VALID};
assertArrayEquals(errExpected, getErrorCodes(validateOptions));
}
@Test
void testTargetStrictLegal() throws XmlException {
TargetStrictDocument doc = TargetStrictDocument.Factory.parse(
"<foo:TargetStrict xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" foo:LocalAttr=\"3\"/>");
assertTrue(doc.validate(createOptions()));
}
@Test
void testTargetStrictIllegal() throws XmlException {
TargetStrictDocument doc = TargetStrictDocument.Factory.parse(
"<foo:TargetStrict xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" foo:LocalAttr=\"foo\"/>");
XmlOptions validateOptions = createOptions();
assertFalse(doc.validate(validateOptions));
String[] errExpected = {XmlErrorCodes.DECIMAL};
assertArrayEquals(errExpected, getErrorCodes(validateOptions));
}
@Test
void testLocalLaxLegal() throws XmlException {
LocalLaxDocument doc = LocalLaxDocument.Factory.parse(
"<foo:LocalLax xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" undeclAttr=\"val1\"/>");
assertTrue(doc.validate(createOptions()));
}
@Test
void testLocalLaxIllegal() throws XmlException {
LocalLaxDocument doc = LocalLaxDocument.Factory.parse(
"<foo:LocalLax xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" foo:undeclAttr=\"val1\"/>");
XmlOptions validateOptions = createOptions();
assertFalse(doc.validate(validateOptions));
String[] errExpected = {XmlErrorCodes.ELEM_COMPLEX_TYPE_LOCALLY_VALID$NOT_WILDCARD_VALID};
assertArrayEquals(errExpected, getErrorCodes(validateOptions));
}
@Test
void testLocalSkipLegal() throws XmlException {
LocalSkipDocument doc = LocalSkipDocument.Factory.parse(
"<foo:LocalSkip xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" undeclAttr=\"val1\"/>");
assertTrue(doc.validate(createOptions()));
}
/**
* can a test ever be illegal here?
*/
@Disabled
@Test
void testLocalSkipIllegal() throws XmlException {
LocalSkipDocument doc = LocalSkipDocument.Factory.parse(
"<foo:LocalSkip xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" undeclAttr=\"val1\"/>");
XmlOptions validateOptions = createOptions();
assertFalse(doc.validate(validateOptions));
String[] errExpected = {XmlErrorCodes.ATTR_LOCALLY_VALID};
assertArrayEquals(errExpected, getErrorCodes(validateOptions));
}
@Test
void testLocalStrictIllegal() throws XmlException {
LocalStrictDocument doc = LocalStrictDocument.Factory.parse(
"<foo:LocalStrict xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" undeclAttr=\"val1\"/>");
XmlOptions validateOptions = createOptions();
assertFalse(doc.validate(validateOptions));
String[] errExpected = {XmlErrorCodes.ASSESS_ATTR_SCHEMA_VALID$NOT_RESOLVED};
assertArrayEquals(errExpected, getErrorCodes(validateOptions));
}
@Test
void testLocalStrictLegal() throws XmlException {
LocalStrictDocument doc = LocalStrictDocument.Factory.parse(
"<foo:LocalStrict xmlns:foo=\"http://xbean/scomp/namespace/AttributeWC\" NoNSAttr=\"2\"/>");
assertTrue(doc.validate(createOptions()));
}
}