2 * Copyright (c) 2014 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.mdsal.binding.model.util.generated.type.builder;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertNotEquals;
13 import static org.junit.Assert.assertNotNull;
14 import static org.junit.Assert.assertNull;
15 import java.util.Collections;
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.opendaylight.mdsal.binding.model.api.Enumeration;
19 import org.opendaylight.yangtools.yang.common.QName;
20 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
21 import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
22 import org.opendaylight.yangtools.yang.model.util.type.BaseTypes;
23 import org.opendaylight.yangtools.yang.model.util.type.EnumPairBuilder;
25 public class EnumerationBuilderImplTest {
27 private final QName qName = QName.create("TestQName", "10-10-2014", "TestLocalQName");
28 private final String DESCRIPTION = "Test description of Enum";
29 private final String packageName = "org.opendaylight.test";
30 private final String name = "TestName";
31 private final String moduleName = "TestModuleName";
32 private final String reference = "TestRef";
33 private final String valueName = "TestValue";
34 private final String valueDescription = "Value used for test";
35 private final int value = 12;
36 private Enumeration enumeration;
37 private EnumerationBuilderImpl enumerationBuilder;
38 private EnumerationBuilderImpl enumerationBuilderSame;
39 private EnumerationBuilderImpl enumerationBuilderOtherName;
40 private EnumerationBuilderImpl enumerationBuilderOtherPackage;
44 enumerationBuilder = new EnumerationBuilderImpl(packageName, name);
45 enumerationBuilder.setDescription(DESCRIPTION);
46 enumerationBuilder.setModuleName(moduleName);
47 enumerationBuilder.setReference(reference);
48 enumerationBuilder.setSchemaPath(Collections.singletonList(qName));
49 enumerationBuilder.addValue(valueName, value, valueDescription);
50 enumerationBuilder.addAnnotation(packageName, "TestAnnotation");
51 enumerationBuilderSame = new EnumerationBuilderImpl(packageName, name);
52 enumerationBuilderOtherName = new EnumerationBuilderImpl(packageName, "SomeOtherName");
53 enumerationBuilderOtherPackage = new EnumerationBuilderImpl("org.opendaylight.other", name);
54 enumeration = enumerationBuilder.toInstance(enumerationBuilder);
58 public void testAddNullAnnotation() {
59 assertNull(enumerationBuilder.addAnnotation(null, null));
60 assertNull(enumerationBuilder.addAnnotation(null, "test"));
61 assertNull(enumerationBuilder.addAnnotation(packageName, null));
65 public void testEnumerationBuilder() {
66 assertEquals(packageName + "." + name, enumerationBuilder.getFullyQualifiedName());
67 assertEquals(name , enumerationBuilder.getName());
68 assertEquals(packageName, enumerationBuilder.getPackageName());
70 assertNotEquals(enumerationBuilder, null);
71 assertEquals(enumerationBuilder, enumerationBuilder);
72 assertNotEquals(enumerationBuilder, "string");
73 assertNotEquals(enumerationBuilder, enumerationBuilderOtherName);
74 assertNotEquals(enumerationBuilder, enumerationBuilderOtherPackage);
75 assertEquals(enumerationBuilder,enumerationBuilderSame);
79 public void testEnumeration() {
80 assertEquals(name, enumeration.getName());
81 assertEquals(packageName, enumeration.getPackageName());
82 assertEquals(null, enumeration.getComment());
83 assertEquals(enumerationBuilder, enumeration.getParentType());
84 assertEquals(DESCRIPTION, enumeration.getDescription());
85 assertEquals(moduleName, enumeration.getModuleName());
86 assertEquals(packageName + '.' + name, enumeration.getFullyQualifiedName());
87 assertEquals(reference, enumeration.getReference());
88 assertEquals(Collections.singletonList(qName), enumeration.getSchemaPath());
89 assertEquals(Collections.EMPTY_LIST, enumeration.getEnclosedTypes());
90 assertEquals(Collections.EMPTY_LIST, enumeration.getEnumerations());
91 assertEquals(Collections.EMPTY_LIST, enumeration.getMethodDefinitions());
92 assertEquals(Collections.EMPTY_LIST, enumeration.getConstantDefinitions());
93 assertEquals(Collections.EMPTY_LIST, enumeration.getProperties());
94 assertEquals(Collections.EMPTY_LIST, enumeration.getImplements());
95 assertNotNull(enumeration.getValues());
96 assertNotNull(enumeration.getAnnotations());
98 assertFalse(enumeration.isAbstract());
99 assertNotEquals(enumeration, null);
100 assertEquals(enumeration, enumeration);
101 assertNotEquals(enumeration, "string");
103 Enumeration enumerationOtherPackage = enumerationBuilderOtherPackage.toInstance(enumerationBuilderOtherPackage);
104 assertNotEquals(enumeration, enumerationOtherPackage);
106 Enumeration enumerationOtherName = enumerationBuilderOtherName.toInstance(enumerationBuilderOtherName);
107 assertNotEquals(enumeration, enumerationOtherName);
109 enumerationBuilderSame.addValue(valueName, value, valueDescription);
110 Enumeration enumerationSame = enumerationBuilderSame.toInstance(enumerationBuilderSame);
111 assertEquals(enumeration, enumerationSame);
113 EnumerationBuilderImpl enumerationBuilderSame1 = new EnumerationBuilderImpl(packageName, name);
114 Enumeration enumerationSame1 = enumerationBuilderSame1.toInstance(enumerationBuilderSame1);
115 enumerationBuilderSame1.addValue(valueName, 14, valueDescription);
116 // Enums are equal thanks to same package name and local name
117 assertEquals(enumeration, enumerationSame1);
121 public void testEnumerationToString() {
122 String formattedString =
123 "public enum " + name + " {\n" +
124 "\t TestValue " + "(12 );\n" +
126 String s = "Enumeration [packageName="+packageName+", definingType="+packageName+"."+name+", name="+name+
127 ", values=[EnumPair [name=TestValue, mappedName=TestValue, value=12]]]";
129 assertEquals(s, enumeration.toString());
130 assertEquals(formattedString, enumeration.toFormattedString());
132 assertEquals("EnumerationBuilderImpl " +
133 "[packageName=org.opendaylight.test, name=TestName, " +
134 "values=[EnumPair [name=TestValue, mappedName=TestValue, value=12]]]",
135 enumerationBuilder.toString());
139 public void testUpdateEnumPairsFromEnumTypeDef() {
140 EnumTypeDefinition enumTypeDefinition = BaseTypes.enumerationTypeBuilder(SchemaPath.SAME)
141 .addEnum(EnumPairBuilder.create("SomeName", 42).setDescription("Some Other Description")
142 .setReference("Some other reference").build()).build();
143 enumerationBuilder.updateEnumPairsFromEnumTypeDef(enumTypeDefinition);