2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.yangtools.yang.common;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertNotNull;
12 import static org.junit.Assert.assertTrue;
13 import static org.junit.Assert.fail;
15 import java.util.Date;
16 import org.junit.Test;
18 public class QNameTest {
19 private final String namespace = "urn:foo", revision = "2013-12-24", localName = "bar";
22 public QNameTest() throws Exception {
23 this.ns = new URI(namespace);
27 public void testStringSerialization() throws Exception {
29 QName qName = QName.create(namespace, revision, localName);
30 assertEquals(QName.QNAME_LEFT_PARENTHESIS + namespace + QName.QNAME_REVISION_DELIMITER
31 + revision + QName.QNAME_RIGHT_PARENTHESIS + localName, qName.toString());
32 QName copied = QName.create(qName.toString());
33 assertEquals(qName, copied);
37 QName qName = new QName(ns, localName);
38 assertEquals(QName.QNAME_LEFT_PARENTHESIS + namespace + QName.QNAME_RIGHT_PARENTHESIS
39 + localName, qName.toString());
40 QName copied = QName.create(qName.toString());
41 assertEquals(qName, copied);
43 // no namespace nor revision
45 QName qName = new QName(null, localName);
46 assertEquals(localName, qName.toString());
47 QName copied = QName.create(qName.toString());
48 assertEquals(qName, copied);
53 public void testIllegalLocalNames() {
54 assertLocalNameFails(null);
55 assertLocalNameFails("");
56 assertLocalNameFails("(");
57 assertLocalNameFails(")");
58 assertLocalNameFails("?");
59 assertLocalNameFails("&");
63 public void testCompareTo() throws Exception {
67 QName a = QName.create(A);
68 QName b = QName.create(A);
69 assertTrue(a.compareTo(b) == 0);
70 assertTrue(b.compareTo(a) == 0);
72 // compare with localName
75 assertTrue(a.compareTo(b) < 0);
76 assertTrue(b.compareTo(a) > 0);
78 // compare with namespace
79 a = QName.create(A, revision, A);
80 b = QName.create(B, revision, A);
81 assertTrue(a.compareTo(b) < 0);
82 assertTrue(b.compareTo(a) > 0);
84 // compare with 1 null namespace
85 a = QName.create(null, QName.parseRevision(revision), A);
86 b = QName.create(URI.create(A), QName.parseRevision(revision), A);
87 assertTrue(a.compareTo(b) < 0);
88 assertTrue(b.compareTo(a) > 0);
90 // compare with both null namespace
91 b = QName.create(null, QName.parseRevision(revision), A);
92 assertTrue(a.compareTo(b) == 0);
93 assertTrue(b.compareTo(a) == 0);
95 // compare with revision
96 a = QName.create(A, "2013-12-24", A);
97 b = QName.create(A, "2013-12-25", A);
98 assertTrue(a.compareTo(b) < 0);
99 assertTrue(b.compareTo(a) > 0);
101 // compare with 1 null revision
102 a = QName.create(URI.create(A), null, A);
103 b = QName.create(URI.create(A), QName.parseRevision(revision), A);
104 assertTrue(a.compareTo(b) < 0);
105 assertTrue(b.compareTo(a) > 0);
107 // compare with both null revision
108 b = QName.create(URI.create(A), null, A);
109 assertTrue(a.compareTo(b) == 0);
110 assertTrue(b.compareTo(a) == 0);
114 public void testQName() {
115 final QName qName = QName.create(namespace, revision, localName);
116 final QName qName1 = QName.create(namespace, localName);
117 final QName qName2 = QName.create(qName1, localName);
118 assertEquals(qName1, qName.withoutRevision());
119 assertEquals(qName1, qName2);
120 assertTrue(qName.isEqualWithoutRevision(qName1));
121 assertNotNull(QName.formattedRevision(new Date()));
122 assertNotNull(qName.hashCode());
123 assertEquals(qName, qName.intern());
127 public void testQNameModule() {
128 final QNameModule qNameModule = QNameModule.create(ns, new Date());
129 assertNotNull(qNameModule.toString());
130 assertNotNull(qNameModule.getRevisionNamespace());
133 private static void assertLocalNameFails(final String localName) {
135 new QName(null, localName);
136 fail("Local name should fail:" + localName);
137 } catch (IllegalArgumentException e) {