package fr.acxio.tools.agia.alfresco.domain;
/*
* Copyright 2014 Acxio
*
* 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.
*/
import static org.junit.Assert.*;
import javax.xml.namespace.NamespaceContext;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import fr.acxio.tools.agia.alfresco.configuration.AlfrescoNamespaceContext;
@RunWith(JUnit4.class)
public class QNameTest {
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void TestQNameConstruction() {
QName aQName = new QName("namespace1", "name1", "prefix1");
assertEquals("namespace1", aQName.getNamespaceURI());
assertEquals("name1", aQName.getLocalName());
assertEquals("prefix1", aQName.getPrefix());
aQName = new QName("namespace1", "name1");
assertEquals("namespace1", aQName.getNamespaceURI());
assertEquals("name1", aQName.getLocalName());
assertEquals(null, aQName.getPrefix());
aQName = new QName(null, "name1");
assertEquals("", aQName.getNamespaceURI());
assertEquals("name1", aQName.getLocalName());
assertEquals(null, aQName.getPrefix());
aQName = new QName("", "name1");
assertEquals("", aQName.getNamespaceURI());
assertEquals("name1", aQName.getLocalName());
assertEquals(null, aQName.getPrefix());
aQName = new QName("{namespace1}name1");
assertEquals("namespace1", aQName.getNamespaceURI());
assertEquals("name1", aQName.getLocalName());
aQName = new QName("{}name1");
assertEquals("", aQName.getNamespaceURI());
assertEquals("name1", aQName.getLocalName());
aQName = new QName("name1");
assertEquals("", aQName.getNamespaceURI());
assertEquals("name1", aQName.getLocalName());
}
@Test
public void TestQNameInvalidConstruction1() {
exception.expect(IllegalArgumentException.class);
new QName("");
}
@Test
public void TestQNameInvalidConstruction2() {
exception.expect(IllegalArgumentException.class);
new QName("invalid{}name");
}
@Test
public void TestQNameInvalidConstruction3() {
exception.expect(IllegalArgumentException.class);
new QName("{name");
}
@Test
public void TestQNameInvalidConstruction4() {
exception.expect(IllegalArgumentException.class);
new QName("{}");
}
@Test
public void TestQNameInvalidConstruction5() {
exception.expect(IllegalArgumentException.class);
new QName(null, (String)null);
}
@Test
public void TestQNameInvalidConstruction6() {
exception.expect(IllegalArgumentException.class);
new QName(null, "");
}
@Test
public void TestQNameInvalidConstruction7() {
exception.expect(IllegalArgumentException.class);
new QName("", "");
}
@Test
public void TestQNameRepresentation() {
QName aQName = new QName("namespace", "name1");
assertEquals("{namespace}name1", aQName.toString());
aQName = new QName("", "name2");
assertEquals("{}name2", aQName.toString());
aQName = new QName("{namespace}name3");
assertEquals("{namespace}name3", aQName.toString());
aQName = new QName("{}name4");
assertEquals("{}name4", aQName.toString());
aQName = new QName("name5");
assertEquals("{}name5", aQName.toString());
}
@Test
public void TestQNameComparison() {
QName aQName1 = new QName("namespace", "name");
QName aQName2 = new QName("namespace", "name");
QName aQName3 = new QName("{namespace}name");
assertEquals(aQName1, aQName2);
assertEquals(aQName1, aQName3);
QName aQName4 = new QName("", "name");
QName aQName5 = new QName("", "name");
QName aQName6 = new QName(null, "name");
assertEquals(aQName4, aQName5);
assertEquals(aQName4, aQName6);
QName aQName7 = new QName("namespace", "name");
QName aQName8 = new QName("namespace", "differentname");
assertFalse(aQName7.equals(aQName8));
QName aQName9 = new QName("namespace", "name");
QName aQName10 = new QName("differentnamespace", "name");
assertFalse(aQName9.equals(aQName10));
}
@Test
public void TestQNamePrefixResolutionNull() {
exception.expect(IllegalArgumentException.class);
new QName("alf", "alfresco prefix", (NamespaceContext)null);
}
@Test
public void TestQNamePrefixResolution() {
AlfrescoNamespaceContext aNamespaceContext = new AlfrescoNamespaceContext();
aNamespaceContext.bindNamespaceUri("alf", "http://www.alfresco.org");
QName qname1 = new QName("alf", "alfresco prefix", aNamespaceContext);
assertEquals("http://www.alfresco.org", qname1.getNamespaceURI());
QName qname2 = new QName("", "default prefix", aNamespaceContext);
assertEquals("", qname2.getNamespaceURI());
QName qname3 = new QName(null, "null default prefix", aNamespaceContext);
assertEquals("", qname3.getNamespaceURI());
}
@Test
public void TestQNamePrefixResolutionUnknown() {
AlfrescoNamespaceContext aNamespaceContext = new AlfrescoNamespaceContext();
exception.expect(IllegalArgumentException.class);
new QName("garbage", "garbage prefix", aNamespaceContext);
}
@Test
public void TestShortQNamePrefixResolutionNull() {
exception.expect(IllegalArgumentException.class);
new QName("alf:alfresco prefix", (NamespaceContext)null);
}
@Test
public void TestQNameShortPrefixResolutionUnknown() {
AlfrescoNamespaceContext aNamespaceContext = new AlfrescoNamespaceContext();
exception.expect(IllegalArgumentException.class);
new QName("garbage:garbage prefix", aNamespaceContext);
}
@Test
public void TestShortQNamePrefixResolution() {
AlfrescoNamespaceContext aNamespaceContext = new AlfrescoNamespaceContext();
aNamespaceContext.bindNamespaceUri("alf", "http://www.alfresco.org");
QName qname1 = new QName("alf:alfresco prefix", aNamespaceContext);
assertEquals("http://www.alfresco.org", qname1.getNamespaceURI());
QName qname2 = new QName(":default prefix", aNamespaceContext);
assertEquals("", qname2.getNamespaceURI());
QName qname3 = new QName("null default prefix", aNamespaceContext);
assertEquals("", qname3.getNamespaceURI());
QName qname4 = new QName("{http://www.alfresco.org}alfresco prefix", aNamespaceContext);
assertEquals("http://www.alfresco.org", qname4.getNamespaceURI());
assertEquals("alfresco prefix", qname4.getLocalName());
assertEquals("alf", qname4.getPrefix());
QName qname5 = new QName("{garbage}garbage prefix", aNamespaceContext);
assertEquals("garbage", qname5.getNamespaceURI());
assertEquals("garbage prefix", qname5.getLocalName());
assertEquals(0, qname5.getPrefix().length());
}
@Test
public void TestQNameShortRepresentation()
{
AlfrescoNamespaceContext aNamespaceContext = new AlfrescoNamespaceContext();
aNamespaceContext.bindNamespaceUri("alf", "http://www.alfresco.org");
QName aQName = new QName("alf", "name1", aNamespaceContext);
assertEquals("alf:name1", aQName.getShortName());
aQName = new QName("alf:name1", aNamespaceContext);
assertEquals("alf:name1", aQName.getShortName());
aQName = new QName(":name1", aNamespaceContext);
assertEquals(":name1", aQName.getShortName());
aQName = new QName("name1", aNamespaceContext);
assertEquals(":name1", aQName.getShortName());
aQName = new QName("{namespace1}name1", aNamespaceContext);
assertEquals(":name1", aQName.getShortName());
}
}