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