e6a279b32925dd536b07d09173330d74b7127379
[yangtools.git] / yang / yang-common / src / test / java / org / opendaylight / yangtools / yang / common / QNameTest.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.yangtools.yang.common;
9
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;
14 import java.net.URI;
15 import java.util.Date;
16 import org.junit.Test;
17
18 public class QNameTest {
19     private final String namespace = "urn:foo", revision = "2013-12-24", localName = "bar";
20     private final URI ns;
21
22     public QNameTest() throws Exception {
23         this.ns = new URI(namespace);
24     }
25
26     @Test
27     public void testStringSerialization() throws Exception {
28         {
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);
34         }
35         // no revision
36         {
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);
42         }
43         // no namespace nor revision
44         {
45             QName qName = new QName(null, localName);
46             assertEquals(localName, qName.toString());
47             QName copied = QName.create(qName.toString());
48             assertEquals(qName, copied);
49         }
50     }
51
52     @Test
53     public void testIllegalLocalNames() {
54         assertLocalNameFails(null);
55         assertLocalNameFails("");
56         assertLocalNameFails("(");
57         assertLocalNameFails(")");
58         assertLocalNameFails("?");
59         assertLocalNameFails("&");
60     }
61
62     @Test
63     public void testCompareTo() throws Exception {
64         String A = "a";
65         String B = "b";
66
67         QName a = QName.create(A);
68         QName b = QName.create(A);
69         assertTrue(a.compareTo(b) == 0);
70         assertTrue(b.compareTo(a) == 0);
71
72         // compare with localName
73         a = QName.create(A);
74         b = QName.create(B);
75         assertTrue(a.compareTo(b) < 0);
76         assertTrue(b.compareTo(a) > 0);
77
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);
83
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);
89
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);
94
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);
100
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);
106
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);
111     }
112
113     @Test
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());
124     }
125
126     @Test
127     public void testQNameModule() {
128         final QNameModule qNameModule = QNameModule.create(ns, new Date());
129         assertNotNull(qNameModule.toString());
130         assertNotNull(qNameModule.getRevisionNamespace());
131     }
132
133     private static void assertLocalNameFails(final String localName) {
134         try {
135             new QName(null, localName);
136             fail("Local name should fail:" + localName);
137         } catch (IllegalArgumentException e) {
138         }
139     }
140 }