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", revision = "2013-12-24", localName = "bar";
- private final URI ns;
+ 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);
- public QNameTest() throws Exception {
- this.ns = new URI(namespace);
+ @Test
+ public void testStringSerialization() throws Exception {
+ 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 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);
- }
+ 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
public void testCompareTo() throws Exception {
- String A = "a";
- String B = "b";
-
- QName a = QName.create(A);
- QName b = QName.create(A);
- assertTrue(a.compareTo(b) == 0);
- assertTrue(b.compareTo(a) == 0);
-
- // compare with localName
- a = QName.create(A);
- b = QName.create(B);
- assertTrue(a.compareTo(b) < 0);
- assertTrue(b.compareTo(a) > 0);
+ final String A = "a";
+ final String B = "b";
// compare with namespace
- a = QName.create(A, revision, A);
- b = QName.create(B, revision, A);
- assertTrue(a.compareTo(b) < 0);
- assertTrue(b.compareTo(a) > 0);
-
- // compare with 1 null namespace
- a = QName.create(null, QName.parseRevision(revision), A);
- b = QName.create(URI.create(A), QName.parseRevision(revision), A);
- assertTrue(a.compareTo(b) < 0);
- assertTrue(b.compareTo(a) > 0);
-
- // compare with both null namespace
- b = QName.create(null, QName.parseRevision(revision), A);
- assertTrue(a.compareTo(b) == 0);
- assertTrue(b.compareTo(a) == 0);
+ 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 revision
- a = QName.create(A, "2013-12-24", A);
- b = QName.create(A, "2013-12-25", A);
- assertTrue(a.compareTo(b) < 0);
- assertTrue(b.compareTo(a) > 0);
+ qa = QName.create(A, "2013-12-24", A);
+ qb = QName.create(A, "2013-12-25", A);
+ assertTrue(qa.compareTo(qb) < 0);
+ assertTrue(qb.compareTo(qa) > 0);
// compare with 1 null revision
- a = QName.create(URI.create(A), null, A);
- b = QName.create(URI.create(A), QName.parseRevision(revision), A);
- assertTrue(a.compareTo(b) < 0);
- assertTrue(b.compareTo(a) > 0);
+ 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
- b = QName.create(URI.create(A), null, A);
- assertTrue(a.compareTo(b) == 0);
- assertTrue(b.compareTo(a) == 0);
+ 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);
- assertEquals(qName1, qName.withoutRevision());
- assertEquals(qName1, qName2);
- assertTrue(qName.isEqualWithoutRevision(qName1));
- assertNotNull(QName.formattedRevision(new Date()));
- assertNotNull(qName.hashCode());
- assertEquals(qName, qName.intern());
+ 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));
+ 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) {
- }
+ 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());
}
-}
\ No newline at end of file
+}