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;
16 import java.util.Date;
17 import org.junit.Test;
19 public class QNameTest {
20 private final String namespace = "urn:foo", revision = "2013-12-24", localName = "bar";
23 public QNameTest() throws Exception {
24 this.ns = new URI(namespace);
28 public void testStringSerialization() throws Exception {
30 QName qName = QName.create(namespace, revision, localName);
31 assertEquals(QName.QNAME_LEFT_PARENTHESIS + namespace + QName.QNAME_REVISION_DELIMITER
32 + revision + QName.QNAME_RIGHT_PARENTHESIS + localName, qName.toString());
33 QName copied = QName.create(qName.toString());
34 assertEquals(qName, copied);
38 QName qName = new QName(ns, localName);
39 assertEquals(QName.QNAME_LEFT_PARENTHESIS + namespace + QName.QNAME_RIGHT_PARENTHESIS
40 + localName, qName.toString());
41 QName copied = QName.create(qName.toString());
42 assertEquals(qName, copied);
44 // no namespace nor revision
46 QName qName = new QName((URI) null, localName);
47 assertEquals(localName, qName.toString());
48 QName copied = QName.create(qName.toString());
49 assertEquals(qName, copied);
54 public void testIllegalLocalNames() {
55 assertLocalNameFails(null);
56 assertLocalNameFails("");
57 assertLocalNameFails("(");
58 assertLocalNameFails(")");
59 assertLocalNameFails("?");
60 assertLocalNameFails("&");
64 public void testCompareTo() throws Exception {
68 QName a = QName.create(A);
69 QName b = QName.create(A);
70 assertTrue(a.compareTo(b) == 0);
71 assertTrue(b.compareTo(a) == 0);
73 // compare with localName
76 assertTrue(a.compareTo(b) < 0);
77 assertTrue(b.compareTo(a) > 0);
79 // compare with namespace
80 a = QName.create(A, revision, A);
81 b = QName.create(B, revision, A);
82 assertTrue(a.compareTo(b) < 0);
83 assertTrue(b.compareTo(a) > 0);
85 // compare with 1 null namespace
86 a = QName.create(null, QName.parseRevision(revision), A);
87 b = QName.create(URI.create(A), QName.parseRevision(revision), A);
88 assertTrue(a.compareTo(b) < 0);
89 assertTrue(b.compareTo(a) > 0);
91 // compare with both null namespace
92 b = QName.create(null, QName.parseRevision(revision), A);
93 assertTrue(a.compareTo(b) == 0);
94 assertTrue(b.compareTo(a) == 0);
96 // compare with revision
97 a = QName.create(A, "2013-12-24", A);
98 b = QName.create(A, "2013-12-25", A);
99 assertTrue(a.compareTo(b) < 0);
100 assertTrue(b.compareTo(a) > 0);
102 // compare with 1 null revision
103 a = QName.create(URI.create(A), null, A);
104 b = QName.create(URI.create(A), QName.parseRevision(revision), A);
105 assertTrue(a.compareTo(b) < 0);
106 assertTrue(b.compareTo(a) > 0);
108 // compare with both null revision
109 b = QName.create(URI.create(A), null, A);
110 assertTrue(a.compareTo(b) == 0);
111 assertTrue(b.compareTo(a) == 0);
115 public void testQName() {
116 final QName qName = QName.create(namespace, revision, localName);
117 final QName qName1 = QName.create(namespace, localName);
118 final QName qName2 = QName.create(qName1, localName);
119 assertEquals(qName1, qName.withoutRevision());
120 assertEquals(qName1, qName2);
121 assertTrue(qName.isEqualWithoutRevision(qName1));
122 assertNotNull(QName.formattedRevision(new Date()));
123 assertNotNull(qName.hashCode());
124 assertEquals(qName, qName.intern());
128 public void testQNameModule() {
129 final QNameModule qNameModule = QNameModule.create(ns, new Date());
130 assertNotNull(qNameModule.toString());
131 assertNotNull(qNameModule.getRevisionNamespace());
134 private void assertLocalNameFails(final String localName) {
136 new QName((URI)null, localName);
137 fail("Local name should fail:" + localName);
138 } catch (IllegalArgumentException e) {