JavaIdentifierNormalizer ThreadSafe/Memory leak fix
[mdsal.git] / binding2 / mdsal-binding2-generator-util / src / test / java / org / opendaylight / mdsal / binding / javav2 / generator / util / generated / type / builder / EnumerationBuilderImplTest.java
1 /*
2  * Copyright (c) 2017 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.javav2.generator.util.generated.type.builder;
9
10 import static org.junit.Assert.assertNotNull;
11 import static org.junit.Assert.assertTrue;
12
13 import org.junit.Test;
14 import org.opendaylight.mdsal.binding.javav2.generator.context.ModuleContext;
15 import org.opendaylight.mdsal.binding.javav2.model.api.Enumeration;
16 import org.opendaylight.yangtools.yang.model.api.Status;
17
18 public class EnumerationBuilderImplTest {
19
20     @Test
21     public void sameEnumTest() {
22         ModuleContext context = new ModuleContext();
23         EnumerationBuilderImpl enumerationBuilderImpl = new EnumerationBuilderImpl("package.same.test", "test", context);
24         Enumeration enumeration = enumerationBuilderImpl.toInstance(enumerationBuilderImpl);
25         String formattedString = enumeration.toFormattedString();
26
27         assertNotNull(formattedString);
28         assertTrue(!formattedString.isEmpty());
29         assertTrue(formattedString.contains("Test"));
30
31         enumerationBuilderImpl = new EnumerationBuilderImpl("package.same.test", "Test", context);
32         enumeration = enumerationBuilderImpl.toInstance(enumerationBuilderImpl);
33         formattedString = enumeration.toFormattedString();
34
35         assertNotNull(formattedString);
36         assertTrue(!formattedString.isEmpty());
37         assertTrue(formattedString.contains("Test1"));
38     }
39
40     @Test
41     public void enumTest() {
42         final EnumerationBuilderImpl enumerationBuilderImpl =
43                 new EnumerationBuilderImpl("package.test", "test**", new ModuleContext());
44         enumerationBuilderImpl.addValue("value", 1, "des", "ref", Status.CURRENT);
45         final Enumeration enumeration = enumerationBuilderImpl.toInstance(enumerationBuilderImpl);
46         final String formattedString = enumeration.toFormattedString();
47
48         assertNotNull(formattedString);
49         assertTrue(!formattedString.isEmpty());
50         assertTrue(formattedString.contains("public enum TestAsteriskAsterisk {"));
51         assertTrue(formattedString.contains("VALUE"));
52     }
53
54     @Test
55     public void enumUniqueTest() {
56         final EnumerationBuilderImpl enumerationBuilderImpl =
57                 new EnumerationBuilderImpl("package.ex.ex.ex.test", "test", new ModuleContext());
58         enumerationBuilderImpl.addValue("foo", 1, "des", "ref", Status.CURRENT);
59         enumerationBuilderImpl.addValue("Foo", 1, "des", "ref", Status.CURRENT);
60         enumerationBuilderImpl.addValue("foo1", 1, "des", "ref", Status.CURRENT);
61         enumerationBuilderImpl.addValue("Foo1", 1, "des", "ref", Status.CURRENT);
62         enumerationBuilderImpl.addValue("FOO1", 1, "des", "ref", Status.CURRENT);
63         enumerationBuilderImpl.addValue("FOO", 1, "des", "ref", Status.CURRENT);
64         enumerationBuilderImpl.addValue("foO1", 1, "des", "ref", Status.CURRENT);
65         enumerationBuilderImpl.addValue("foO2", 1, "des", "ref", Status.CURRENT);
66         enumerationBuilderImpl.addValue("foO2", 1, "des", "ref", Status.CURRENT);
67         enumerationBuilderImpl.addValue("Foo*", 1, "des", "ref", Status.CURRENT);
68         enumerationBuilderImpl.addValue("foo*", 1, "des", "ref", Status.CURRENT);
69
70         enumerationBuilderImpl.addValue("f__11", 1, "des", "ref", Status.CURRENT);
71         enumerationBuilderImpl.addValue("f__1_1", 1, "des", "ref", Status.CURRENT);
72         enumerationBuilderImpl.addValue("f__1", 1, "des", "ref", Status.CURRENT);
73         enumerationBuilderImpl.addValue("F__1", 1, "des", "ref", Status.CURRENT);
74         enumerationBuilderImpl.addValue("f_1_1", 1, "des", "ref", Status.CURRENT);
75         enumerationBuilderImpl.addValue("F_1_1", 1, "des", "ref", Status.CURRENT);
76
77         enumerationBuilderImpl.addValue("fo", 1, "des", "ref", Status.CURRENT);
78         enumerationBuilderImpl.addValue("Fo", 1, "des", "ref", Status.CURRENT);
79         enumerationBuilderImpl.addValue("fO", 1, "des", "ref", Status.CURRENT);
80         enumerationBuilderImpl.addValue("FO", 1, "des", "ref", Status.CURRENT);
81
82         final Enumeration enumeration = enumerationBuilderImpl.toInstance(enumerationBuilderImpl);
83         final String formattedString = enumeration.toFormattedString();
84
85         assertNotNull(formattedString);
86         assertTrue(!formattedString.isEmpty());
87         assertTrue(formattedString.contains("FOO"));
88         assertTrue(formattedString.contains("FOO_1"));
89         assertTrue(formattedString.contains("FOO1"));
90         assertTrue(formattedString.contains("FOO1_1"));
91         assertTrue(formattedString.contains("FOO1_2"));
92         assertTrue(formattedString.contains("FOO_2"));
93         assertTrue(formattedString.contains("FOO1_3"));
94         assertTrue(formattedString.contains("FOO2"));
95         assertTrue(formattedString.contains("FOO2_1"));
96         assertTrue(formattedString.contains("FOO_ASTERISK"));
97         assertTrue(formattedString.contains("FOO_ASTERISK_1"));
98
99         assertTrue(formattedString.contains("F_11"));
100         assertTrue(formattedString.contains("F_1_1"));
101         assertTrue(formattedString.contains("F_1"));
102         assertTrue(formattedString.contains("F_1_2"));
103         assertTrue(formattedString.contains("F_1_1_1"));
104         assertTrue(formattedString.contains("F_1_1_2"));
105
106         assertTrue(formattedString.contains("FO"));
107         assertTrue(formattedString.contains("FO_1"));
108         assertTrue(formattedString.contains("FO_2"));
109         assertTrue(formattedString.contains("FO_3"));
110     }
111
112     @Test
113     public void asteriskInEnumTest() {
114         final EnumerationBuilderImpl enumerationBuilderImpl =
115                 new EnumerationBuilderImpl("package.ex.test", "test**", new ModuleContext());
116         enumerationBuilderImpl.addValue("val**ue", 1, "des", "ref", Status.CURRENT);
117         enumerationBuilderImpl.addValue("val*ue", 1, "des", "ref", Status.CURRENT);
118         enumerationBuilderImpl.addValue("*value*", 1, "des", "ref", Status.CURRENT);
119         enumerationBuilderImpl.addValue("*", 1, "des", "ref", Status.CURRENT);
120         final Enumeration enumeration = enumerationBuilderImpl.toInstance(enumerationBuilderImpl);
121         final String formattedString = enumeration.toFormattedString();
122
123         assertNotNull(formattedString);
124         assertTrue(!formattedString.isEmpty());
125         assertTrue(formattedString.contains("public enum TestAsteriskAsterisk {"));
126         assertTrue(formattedString.contains("VAL_ASTERISK_ASTERISK_UE"));
127         assertTrue(formattedString.contains("VAL_ASTERISK_UE"));
128         assertTrue(formattedString.contains("ASTERISK_VALUE_ASTERISK"));
129         assertTrue(formattedString.contains("ASTERISK"));
130     }
131
132     @Test
133     public void reverseSolidusInEnumTest() {
134         final EnumerationBuilderImpl enumerationBuilderImpl =
135                 new EnumerationBuilderImpl("package.ex.ex.test", "test\\\\", new ModuleContext());
136         enumerationBuilderImpl.addValue("val\\\\ue", 1, "des", "ref", Status.CURRENT);
137         enumerationBuilderImpl.addValue("val\\ue", 1, "des", "ref", Status.CURRENT);
138         enumerationBuilderImpl.addValue("\\value\\", 1, "des", "ref", Status.CURRENT);
139         enumerationBuilderImpl.addValue("\\", 1, "des", "ref", Status.CURRENT);
140         final Enumeration enumeration = enumerationBuilderImpl.toInstance(enumerationBuilderImpl);
141         final String formattedString = enumeration.toFormattedString();
142         assertNotNull(formattedString);
143         assertTrue(!formattedString.isEmpty());
144         assertTrue(formattedString.contains("public enum TestReverseSolidusReverseSolidus {"));
145         assertTrue(formattedString.contains("VAL_REVERSE_SOLIDUS_REVERSE_SOLIDUS_UE"));
146         assertTrue(formattedString.contains("VAL_REVERSE_SOLIDUS_UE"));
147         assertTrue(formattedString.contains("REVERSE_SOLIDUS_VALUE_REVERSE_SOLIDUS"));
148         assertTrue(formattedString.contains("REVERSE_SOLIDUS"));
149     }
150 }