*/
package org.opendaylight.yangtools.yang.binding;
+import static com.google.common.collect.ImmutableList.of;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import java.lang.reflect.Constructor;
import java.net.URI;
import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import org.junit.Test;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
throw e.getCause();
}
}
-}
\ No newline at end of file
+
+ @Test
+ public void mapEnumAssignedNamesTest() {
+ // Okay identifier
+ assertEqualMapping("__", "__");
+ assertEqualMapping("True", "true");
+ assertEqualMapping("ĽaľahoPapľuhu", "ľaľaho papľuhu");
+
+ // Contains a '$', but that's okay
+ assertEqualMapping("$", "$");
+ assertEqualMapping("$abc", "$abc");
+ assertEqualMapping("A$bc", "a$bc");
+ assertEqualMapping("Ab$c", "ab$c");
+ assertEqualMapping("Abc$", "abc$");
+
+ // Mostly okay, but numbers need to be prefixed
+ assertEqualMapping(of("AZ", "_09"), of("a-z", "0-9"));
+
+ // Invalid identifier (conflicts with a Java 9 keyword)
+ assertEqualMapping("_", "_");
+
+ // Invalid characters, fall back to bijection
+ assertEqualMapping("$$2A$", "*");
+ assertEqualMapping("$$2E$", ".");
+ assertEqualMapping("$$2F$", "/");
+ assertEqualMapping("$$3F$", "?");
+ assertEqualMapping("$a$2A$a", "a*a");
+
+ // Conflict, fallback to bijection
+ assertEqualMapping(of("_09", "$0$2D$9"), of("_09", "0-9"));
+ assertEqualMapping(of("$09", "$0$2D$9"), of("09", "0-9"));
+ assertEqualMapping(of("aZ", "$a$2D$z"), of("aZ", "a-z"));
+ assertEqualMapping(of("$a2$2E$5", "a25"), of("a2.5", "a25"));
+ assertEqualMapping(of("$a2$2E$5", "$a2$2D$5"), of("a2.5", "a2-5"));
+ assertEqualMapping(of("$ľaľaho$20$papľuhu", "$ľaľaho$20$$20$papľuhu"), of("ľaľaho papľuhu", "ľaľaho papľuhu"));
+ }
+
+ private static void assertEqualMapping(final String mapped, final String yang) {
+ assertEqualMapping(of(mapped), of(yang));
+ }
+
+ private static void assertEqualMapping(final List<String> mapped, final List<String> yang) {
+ assertEquals(mapped.size(), yang.size());
+ final Map<String, String> expected = new HashMap<>();
+ for (int i = 0; i < mapped.size(); ++i) {
+ expected.put(yang.get(i), mapped.get(i));
+ }
+
+ assertEquals(expected, BindingMapping.mapEnumAssignedNames(yang));
+ }
+}