Optimize QName.toString() a bit
[yangtools.git] / yang / yang-common / src / test / java / org / opendaylight / yangtools / yang / common / QNameTest.java
index 00e896620ed2110fe1c8153326edd8490d88cc99..90a8e45f39082e5cde0006a4b1c82eb2ffc27bf7 100644 (file)
@@ -8,49 +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.net.URISyntaxException;
-import java.util.Date;
-import java.util.Optional;
 import org.junit.Test;
 
 public class QNameTest {
     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);
+    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 = QName.create(NS, LOCALNAME);
-            assertEquals(QName.QNAME_LEFT_PARENTHESIS + NAMESPACE + QName.QNAME_RIGHT_PARENTHESIS
-                    + 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
@@ -71,13 +63,13 @@ public class QNameTest {
         assertTrue(qb.compareTo(qa) > 0);
 
         // compare with 1 null revision
-        qa = QName.create(URI.create(A), 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), A);
+        qb = QName.create(XMLNamespace.of(A), A);
         assertTrue(qa.compareTo(qb) == 0);
         assertTrue(qb.compareTo(qa) == 0);
     }
@@ -90,24 +82,13 @@ public class QNameTest {
         assertEquals(qname1, qname.withoutRevision());
         assertEquals(qname1, qname2);
         assertTrue(qname.isEqualWithoutRevision(qname1));
-        assertNotNull(QName.formattedRevision(Optional.of(new Date())));
-        assertNotNull(qname.hashCode());
+        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, new Date());
-        assertNotNull(qnameModule.toString());
-        assertNotNull(qnameModule.getRevisionNamespace());
-    }
-
-    private static void assertLocalNameFails(final String localName) {
-        try {
-            QName.create(NS, localName);
-            fail("Local name should fail:" + localName);
-        } catch (IllegalArgumentException e) {
-            // Expected
-        }
+        final QNameModule qnameModule = QNameModule.create(NS, Revision.of("2000-01-01"));
+        assertEquals("QNameModule{ns=urn:foo, rev=2000-01-01}", qnameModule.toString());
     }
 }