package org.opendaylight.yangtools.yang.common;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
import java.net.URI;
-
+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 URI NS = URI.create(NAMESPACE);
- public QNameTest() throws Exception {
- this.ns = new URI(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());
+ 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((URI) null, localName);
- assertEquals(localName, qName.toString());
- QName copied = QName.create(qName.toString());
- assertEquals(qName, copied);
- }
+ QName qname = QName.create(NS, LOCALNAME);
+ assertEquals(QName.QNAME_LEFT_PARENTHESIS + NAMESPACE + QName.QNAME_RIGHT_PARENTHESIS + LOCALNAME,
+ 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(URI.create(A), A);
+ qb = QName.create(URI.create(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(URI.create(A), A);
+ assertTrue(qa.compareTo(qb) == 0);
+ assertTrue(qb.compareTo(qa) == 0);
}
- private void assertLocalNameFails(final String localName) {
- try {
- new QName((URI)null, localName);
- fail("Local name should fail:" + localName);
- } catch (IllegalArgumentException e) {
-
- }
+ @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));
+ assertEquals("2000-01-01", QName.formattedRevision(Revision.ofNullable("2000-01-01")));
+ assertEquals(qname, qname.intern());
}
+ @Test
+ 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());
+ }
}