/* * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.yangtools.yang.common; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.net.URI; import java.util.Date; import org.junit.Test; public class QNameTest { private final String namespace = "urn:foo", revision = "2013-12-24", localName = "bar"; private final URI ns; 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()); QName copied = QName.create(qName.toString()); assertEquals(qName, copied); } // 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); } } @Test public void testIllegalLocalNames() { assertLocalNameFails(null); assertLocalNameFails(""); assertLocalNameFails("("); assertLocalNameFails(")"); assertLocalNameFails("?"); assertLocalNameFails("&"); } @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); // 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); // 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); // 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); // compare with both null revision b = QName.create(URI.create(A), null, A); assertTrue(a.compareTo(b) == 0); assertTrue(b.compareTo(a) == 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()); } @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) { } } }