package org.opendaylight.yangtools.yang.common;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import java.net.URI;
-import java.util.Date;
+import java.net.URISyntaxException;
import org.junit.Test;
public class QNameTest {
- private final String namespace = "urn:foo";
- private final String revision = "2013-12-24";
- private final String localName = "bar";
- private final URI ns = URI.create(namespace);
+ private static final String NAMESPACE = "urn:foo";
+ private static final String REVISION = "2013-12-24";
+ private static final String LOCALNAME = "bar";
+ private static final XMLNamespace NS = XMLNamespace.of(NAMESPACE);
@Test
public void testStringSerialization() throws Exception {
- {
- QName qname = QName.create(namespace, revision, localName);
- assertEquals(QName.QNAME_LEFT_PARENTHESIS + namespace + QName.QNAME_REVISION_DELIMITER
- + revision + QName.QNAME_RIGHT_PARENTHESIS + localName, qname.toString());
- QName copied = QName.create(qname.toString());
- assertEquals(qname, copied);
- }
+ QName qname = QName.create(NAMESPACE, REVISION, LOCALNAME);
+ assertEquals("(urn:foo?revision=2013-12-24)bar", qname.toString());
+ assertEquals(qname, QName.create(qname.toString()));
+ }
+
+ @Test
+ public void testStringSerializationNoRevision() throws Exception {
// no revision
- {
- QName qname = new QName(ns, localName);
- assertEquals(QName.QNAME_LEFT_PARENTHESIS + namespace + QName.QNAME_RIGHT_PARENTHESIS
- + localName, qname.toString());
- QName copied = QName.create(qname.toString());
- assertEquals(qname, copied);
- }
- // no namespace nor revision
- {
- QName qname = new QName(null, localName);
- assertEquals(localName, qname.toString());
- QName copied = QName.create(qname.toString());
- assertEquals(qname, copied);
- }
+ QName qname = QName.create(NS, LOCALNAME);
+ assertEquals("(urn:foo)bar", qname.toString());
+ assertEquals(qname, QName.create(qname.toString()));
}
@Test
public void testIllegalLocalNames() {
- assertLocalNameFails(null);
- assertLocalNameFails("");
- assertLocalNameFails("(");
- assertLocalNameFails(")");
- assertLocalNameFails("?");
- assertLocalNameFails("&");
+ assertThrows(NullPointerException.class, () -> QName.create(NS, null));
+ assertThrows(IllegalArgumentException.class, () -> QName.create(NS, ""));
+ assertThrows(IllegalArgumentException.class, () -> QName.create(NS, "("));
+ assertThrows(IllegalArgumentException.class, () -> QName.create(NS, ")"));
+ assertThrows(IllegalArgumentException.class, () -> QName.create(NS, "?"));
+ assertThrows(IllegalArgumentException.class, () -> QName.create(NS, "&"));
}
@Test
final String A = "a";
final String B = "b";
- QName qa = QName.create(A);
- QName qb = QName.create(A);
- assertTrue(qa.compareTo(qb) == 0);
- assertTrue(qb.compareTo(qa) == 0);
-
- // compare with localName
- qa = QName.create(A);
- qb = QName.create(B);
- assertTrue(qa.compareTo(qb) < 0);
- assertTrue(qb.compareTo(qa) > 0);
-
// compare with namespace
- qa = QName.create(A, revision, A);
- qb = QName.create(B, revision, A);
+ QName qa = QName.create(A, REVISION, A);
+ QName qb = QName.create(B, REVISION, A);
assertTrue(qa.compareTo(qb) < 0);
assertTrue(qb.compareTo(qa) > 0);
- // compare with 1 null namespace
- qa = QName.create(null, QName.parseRevision(revision), A);
- qb = QName.create(URI.create(A), QName.parseRevision(revision), A);
- assertTrue(qa.compareTo(qb) < 0);
- assertTrue(qb.compareTo(qa) > 0);
-
- // compare with both null namespace
- qb = QName.create(null, QName.parseRevision(revision), A);
- assertTrue(qa.compareTo(qb) == 0);
- assertTrue(qb.compareTo(qa) == 0);
-
// compare with revision
qa = QName.create(A, "2013-12-24", A);
qb = QName.create(A, "2013-12-25", A);
assertTrue(qb.compareTo(qa) > 0);
// compare with 1 null revision
- qa = QName.create(URI.create(A), null, A);
- qb = QName.create(URI.create(A), QName.parseRevision(revision), A);
+ qa = QName.create(XMLNamespace.of(A), A);
+ qb = QName.create(XMLNamespace.of(A), Revision.of(REVISION), A);
assertTrue(qa.compareTo(qb) < 0);
assertTrue(qb.compareTo(qa) > 0);
// compare with both null revision
- qb = QName.create(URI.create(A), null, A);
+ qb = QName.create(XMLNamespace.of(A), A);
assertTrue(qa.compareTo(qb) == 0);
assertTrue(qb.compareTo(qa) == 0);
}
@Test
public void testQName() {
- final QName qname = QName.create(namespace, revision, localName);
- final QName qname1 = QName.create(namespace, localName);
- final QName qname2 = QName.create(qname1, localName);
+ final QName qname = QName.create(NAMESPACE, REVISION, LOCALNAME);
+ final QName qname1 = QName.create(NAMESPACE, LOCALNAME);
+ final QName qname2 = QName.create(qname1, LOCALNAME);
assertEquals(qname1, qname.withoutRevision());
assertEquals(qname1, qname2);
assertTrue(qname.isEqualWithoutRevision(qname1));
- assertNotNull(QName.formattedRevision(new Date()));
- assertNotNull(qname.hashCode());
+ assertEquals("2000-01-01", QName.formattedRevision(Revision.ofNullable("2000-01-01")));
assertEquals(qname, qname.intern());
}
@Test
- public void testQNameModule() {
- final QNameModule qnameModule = QNameModule.create(ns, new Date());
- assertNotNull(qnameModule.toString());
- assertNotNull(qnameModule.getRevisionNamespace());
- }
-
- private static void assertLocalNameFails(final String localName) {
- try {
- new QName(null, localName);
- fail("Local name should fail:" + localName);
- } catch (IllegalArgumentException e) {
- // Expected
- }
+ public void testQNameModule() throws URISyntaxException {
+ final QNameModule qnameModule = QNameModule.create(NS, Revision.of("2000-01-01"));
+ assertEquals("QNameModule{ns=urn:foo, rev=2000-01-01}", qnameModule.toString());
}
}