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";
21 private final String revision = "2013-12-24";
22 private final String localName = "bar";
23 private final URI ns = URI.create(namespace);
26 public void testStringSerialization() throws Exception {
28 QName qname = QName.create(namespace, revision, localName);
29 assertEquals(QName.QNAME_LEFT_PARENTHESIS + namespace + QName.QNAME_REVISION_DELIMITER
30 + revision + QName.QNAME_RIGHT_PARENTHESIS + localName, qname.toString());
31 QName copied = QName.create(qname.toString());
32 assertEquals(qname, copied);
36 QName qname = new QName(ns, localName);
37 assertEquals(QName.QNAME_LEFT_PARENTHESIS + namespace + QName.QNAME_RIGHT_PARENTHESIS
38 + localName, qname.toString());
39 QName copied = QName.create(qname.toString());
40 assertEquals(qname, copied);
42 // no namespace nor revision
44 QName qname = new QName(null, localName);
45 assertEquals(localName, qname.toString());
46 QName copied = QName.create(qname.toString());
47 assertEquals(qname, copied);
52 public void testIllegalLocalNames() {
53 assertLocalNameFails(null);
54 assertLocalNameFails("");
55 assertLocalNameFails("(");
56 assertLocalNameFails(")");
57 assertLocalNameFails("?");
58 assertLocalNameFails("&");
62 public void testCompareTo() throws Exception {
66 QName qa = QName.create(A);
67 QName qb = QName.create(A);
68 assertTrue(qa.compareTo(qb) == 0);
69 assertTrue(qb.compareTo(qa) == 0);
71 // compare with localName
74 assertTrue(qa.compareTo(qb) < 0);
75 assertTrue(qb.compareTo(qa) > 0);
77 // compare with namespace
78 qa = QName.create(A, revision, A);
79 qb = QName.create(B, revision, A);
80 assertTrue(qa.compareTo(qb) < 0);
81 assertTrue(qb.compareTo(qa) > 0);
83 // compare with 1 null namespace
84 qa = QName.create(null, QName.parseRevision(revision), A);
85 qb = QName.create(URI.create(A), QName.parseRevision(revision), A);
86 assertTrue(qa.compareTo(qb) < 0);
87 assertTrue(qb.compareTo(qa) > 0);
89 // compare with both null namespace
90 qb = QName.create(null, QName.parseRevision(revision), A);
91 assertTrue(qa.compareTo(qb) == 0);
92 assertTrue(qb.compareTo(qa) == 0);
94 // compare with revision
95 qa = QName.create(A, "2013-12-24", A);
96 qb = QName.create(A, "2013-12-25", A);
97 assertTrue(qa.compareTo(qb) < 0);
98 assertTrue(qb.compareTo(qa) > 0);
100 // compare with 1 null revision
101 qa = QName.create(URI.create(A), null, A);
102 qb = QName.create(URI.create(A), QName.parseRevision(revision), A);
103 assertTrue(qa.compareTo(qb) < 0);
104 assertTrue(qb.compareTo(qa) > 0);
106 // compare with both null revision
107 qb = QName.create(URI.create(A), null, A);
108 assertTrue(qa.compareTo(qb) == 0);
109 assertTrue(qb.compareTo(qa) == 0);
113 public void testQName() {
114 final QName qname = QName.create(namespace, revision, localName);
115 final QName qname1 = QName.create(namespace, localName);
116 final QName qname2 = QName.create(qname1, localName);
117 assertEquals(qname1, qname.withoutRevision());
118 assertEquals(qname1, qname2);
119 assertTrue(qname.isEqualWithoutRevision(qname1));
120 assertNotNull(QName.formattedRevision(new Date()));
121 assertNotNull(qname.hashCode());
122 assertEquals(qname, qname.intern());
126 public void testQNameModule() {
127 final QNameModule qnameModule = QNameModule.create(ns, new Date());
128 assertNotNull(qnameModule.toString());
129 assertNotNull(qnameModule.getRevisionNamespace());
132 private static void assertLocalNameFails(final String localName) {
134 new QName(null, localName);
135 fail("Local name should fail:" + localName);
136 } catch (IllegalArgumentException e) {