Remove explicit UOE throws
[mdsal.git] / binding / mdsal-binding-spec-util / src / test / java / org / opendaylight / mdsal / binding / spec / naming / BindingMappingTest.java
1 /*
2  * Copyright (c) 2016 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.mdsal.binding.spec.naming;
9
10 import static com.google.common.collect.ImmutableList.of;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertTrue;
13
14 import java.net.URI;
15 import java.util.HashMap;
16 import java.util.List;
17 import java.util.Map;
18 import org.junit.Test;
19 import org.opendaylight.yangtools.yang.common.QName;
20 import org.opendaylight.yangtools.yang.common.QNameModule;
21 import org.opendaylight.yangtools.yang.common.Revision;
22
23 public class BindingMappingTest {
24
25     @Test
26     public void basicTest() {
27         assertTrue(BindingMapping.getRootPackageName(QName.create(QNameModule.create(URI.create("test:URI"),
28                 Revision.of("2017-10-26")), "test")).contains("test.uri"));
29         assertTrue(BindingMapping.normalizePackageName("1testpublic").contains("_1testpublic"));
30         assertTrue(BindingMapping.getMethodName(QName.create("testNS", "testLocalName")).equals("testLocalName"));
31         assertTrue(BindingMapping.getMethodName("TestYangIdentifier").equals("testYangIdentifier"));
32         assertTrue(BindingMapping.getClassName(QName.create("testNS", "testClass")).equals("TestClass"));
33         assertTrue(BindingMapping.getClassName("testClass").equals("TestClass"));
34         assertTrue(BindingMapping.getGetterSuffix(QName.create("test", "test")).equals("Test"));
35         assertTrue(BindingMapping.getGetterSuffix(QName.create("test", "class")).equals("XmlClass"));
36         assertTrue(BindingMapping.getPropertyName("Test").equals("test"));
37         assertTrue(BindingMapping.getPropertyName("test").equals("test"));
38         assertTrue(BindingMapping.getPropertyName("Class").equals("xmlClass"));
39         assertEquals("_5", BindingMapping.getPropertyName("5"));
40         assertEquals("", BindingMapping.getPropertyName(""));
41         assertEquals("", BindingMapping.getClassName(""));
42     }
43
44     @Test
45     public void mapEnumAssignedNamesTest() {
46         // Okay identifier
47         assertEqualMapping("__", "__");
48         assertEqualMapping("True", "true");
49         assertEqualMapping("ĽaľahoPapľuhu", "ľaľaho papľuhu");
50
51         // Contains a '$', but that's okay
52         assertEqualMapping("$", "$");
53         assertEqualMapping("$abc", "$abc");
54         assertEqualMapping("A$bc", "a$bc");
55         assertEqualMapping("Ab$c", "ab$c");
56         assertEqualMapping("Abc$", "abc$");
57
58         // Mostly okay, but numbers need to be prefixed
59         assertEqualMapping(of("AZ", "_09"), of("a-z", "0-9"));
60
61         // Invalid identifier (conflicts with a Java 9 keyword)
62         assertEqualMapping("$_", "_");
63
64         // Invalid characters, fall back to bijection
65         assertEqualMapping("$$2A$", "*");
66         assertEqualMapping("$$2E$", ".");
67         assertEqualMapping("$$2F$", "/");
68         assertEqualMapping("$$3F$", "?");
69         assertEqualMapping("$a$2A$a", "a*a");
70
71         // Conflict, fallback to bijection
72         assertEqualMapping(of("_09", "$0$2D$9"), of("_09", "0-9"));
73         assertEqualMapping(of("$09", "$0$2D$9"), of("09", "0-9"));
74         assertEqualMapping(of("aZ", "$a$2D$z"), of("aZ", "a-z"));
75         assertEqualMapping(of("$a2$2E$5", "a25"), of("a2.5", "a25"));
76         assertEqualMapping(of("$a2$2E$5", "$a2$2D$5"), of("a2.5", "a2-5"));
77         assertEqualMapping(of("$ľaľaho$20$papľuhu", "$ľaľaho$20$$20$papľuhu"), of("ľaľaho papľuhu", "ľaľaho  papľuhu"));
78     }
79
80     private static void assertEqualMapping(final String mapped, final String yang) {
81         assertEqualMapping(of(mapped), of(yang));
82     }
83
84     private static void assertEqualMapping(final List<String> mapped, final List<String> yang) {
85         assertEquals(mapped.size(), yang.size());
86         final Map<String, String> expected = new HashMap<>();
87         for (int i = 0; i < mapped.size(); ++i) {
88             expected.put(yang.get(i), mapped.get(i));
89         }
90
91         assertEquals(expected, BindingMapping.mapEnumAssignedNames(yang));
92     }
93 }