Optimize QName.toString() a bit
[yangtools.git] / yang / yang-common / src / test / java / org / opendaylight / yangtools / yang / common / QNameTest.java
index 56bc0bc629541807022210859796243b8c22b202..90a8e45f39082e5cde0006a4b1c82eb2ffc27bf7 100644 (file)
@@ -8,54 +8,41 @@
 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
@@ -63,34 +50,12 @@ public class QNameTest {
         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);
@@ -98,43 +63,32 @@ public class QNameTest {
         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());
     }
 }