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