blob: 35cc4bcf6c5e1c8d6ab65705f84c61e7660980e0 [file] [log] [blame]
Bharat saraswald6f12412016-03-28 15:50:13 +05301/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswald6f12412016-03-28 15:50:13 +05303 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.yangutils.translator.tojava.utils;
18
19import java.lang.reflect.Constructor;
20import java.lang.reflect.InvocationTargetException;
21
22import org.junit.Test;
23import org.onosproject.yangutils.datamodel.YangDataTypes;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053024import org.onosproject.yangutils.datamodel.YangDerivedInfo;
25import org.onosproject.yangutils.datamodel.YangNode;
Bharat saraswald6f12412016-03-28 15:50:13 +053026import org.onosproject.yangutils.datamodel.YangType;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053027import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
28import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053029import org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053030import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModule;
31import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaTypeDef;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053032import org.onosproject.yangutils.utils.io.impl.YangToJavaNamingConflictUtil;
Bharat saraswald6f12412016-03-28 15:50:13 +053033
34import static org.hamcrest.core.Is.is;
Bharat saraswal6ef0b762016-04-05 12:45:45 +053035import static org.hamcrest.core.IsNot.not;
Bharat saraswald6f12412016-03-28 15:50:13 +053036import static org.junit.Assert.assertThat;
37import static org.onosproject.yangutils.datamodel.YangDataTypes.BOOLEAN;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053038import static org.onosproject.yangutils.datamodel.YangDataTypes.DERIVED;
Bharat saraswald6f12412016-03-28 15:50:13 +053039import static org.onosproject.yangutils.datamodel.YangDataTypes.INT32;
40import static org.onosproject.yangutils.datamodel.YangDataTypes.STRING;
41import static org.onosproject.yangutils.datamodel.YangDataTypes.UINT8;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053042import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaDataType;
43import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportClass;
44import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportPackage;
Bharat saraswald6f12412016-03-28 15:50:13 +053045import static org.onosproject.yangutils.utils.UtilConstants.JAVA_LANG;
46
47/**
48 * Unit test case for attribute java data type.
49 */
50public class AttributesJavaDataTypeTest {
51
52 private static final YangDataTypes TYPE1 = STRING;
53 private static final YangDataTypes TYPE2 = INT32;
54 private static final YangDataTypes TYPE3 = BOOLEAN;
55 private static final YangDataTypes TYPE4 = UINT8;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053056 private static final YangDataTypes TYPE_DEF = DERIVED;
Bharat saraswald6f12412016-03-28 15:50:13 +053057 private static final String CLASS_INFO1 = "String";
58 private static final String CLASS_INFO2 = "int";
59 private static final String CLASS_INFO3 = "boolean";
60 private static final String CLASS_INFO4 = "short";
61 private static final String CLASS_INFO5 = "Integer";
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053062 private static final String TYPE_DEF_PKG = "target.test";
Bharat saraswald6f12412016-03-28 15:50:13 +053063 private static String test = "";
janani bdd1314f2016-05-19 17:39:50 +053064 private static YangToJavaNamingConflictUtil pluginConfig = null;
Bharat saraswald6f12412016-03-28 15:50:13 +053065
66 /**
67 * Unit test for private constructor.
68 *
69 * @throws SecurityException if any security violation is observed
70 * @throws NoSuchMethodException if when the method is not found
71 * @throws IllegalArgumentException if there is illegal argument found
72 * @throws InstantiationException if instantiation is provoked for the private constructor
73 * @throws IllegalAccessException if instance is provoked or a method is provoked
74 * @throws InvocationTargetException when an exception occurs by the method or constructor
75 */
76 @Test
Bharat saraswal33dfa012016-05-17 19:59:16 +053077 public void callPrivateConstructors()
78 throws SecurityException, NoSuchMethodException, IllegalArgumentException,
Bharat saraswald6f12412016-03-28 15:50:13 +053079 InstantiationException, IllegalAccessException, InvocationTargetException {
80
81 Class<?>[] classesToConstruct = {AttributesJavaDataType.class };
82 for (Class<?> clazz : classesToConstruct) {
83 Constructor<?> constructor = clazz.getDeclaredConstructor();
84 constructor.setAccessible(true);
Bharat saraswal6ef0b762016-04-05 12:45:45 +053085 assertThat(null, not(constructor.newInstance()));
Bharat saraswald6f12412016-03-28 15:50:13 +053086 }
87 }
88
89 /**
90 * Unit test for java class info method test.
91 */
92 @Test
93 public void testgetJavaClassInfo() {
Bharat saraswal33dfa012016-05-17 19:59:16 +053094 test = getJavaImportClass(getStubYangType(TYPE1), false, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +053095 assertThat(true, is(test.equals(CLASS_INFO1)));
96
Bharat saraswal33dfa012016-05-17 19:59:16 +053097 test = getJavaImportClass(getStubYangType(TYPE2), true, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +053098 assertThat(true, is(test.equals(CLASS_INFO5)));
99
Bharat saraswal33dfa012016-05-17 19:59:16 +0530100 test = getJavaImportClass(getStubYangType(TYPE3), false, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +0530101 assertThat(null, is(test));
102
Bharat saraswal33dfa012016-05-17 19:59:16 +0530103 test = getJavaImportClass(getStubYangType(TYPE4), false, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +0530104 assertThat(null, is(test));
105 }
106
107 /**
108 * Unit test for java data type method.
109 */
110 @Test
111 public void testgetJavaDataType() {
Bharat saraswald6f12412016-03-28 15:50:13 +0530112 test = getJavaDataType(getStubYangType(TYPE1));
113 assertThat(true, is(test.equals(CLASS_INFO1)));
114
115 test = getJavaDataType(getStubYangType(TYPE2));
116 assertThat(true, is(test.equals(CLASS_INFO2)));
117
118 test = getJavaDataType(getStubYangType(TYPE3));
119 assertThat(true, is(test.equals(CLASS_INFO3)));
120
121 test = getJavaDataType(getStubYangType(TYPE4));
122 assertThat(true, is(test.equals(CLASS_INFO4)));
123 }
124
125 /**
126 * Unit test for java package info method.
127 */
128 @Test
129 public void testgetJavaPkgInfo() {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530130 test = getJavaImportPackage(getStubYangType(TYPE1), false, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +0530131 assertThat(true, is(test.equals(JAVA_LANG)));
132
Bharat saraswalcad0e652016-05-26 23:48:38 +0530133 test = getJavaImportPackage(getStubYangType(TYPE2), true, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +0530134 assertThat(true, is(test.equals(JAVA_LANG)));
135
Bharat saraswalcad0e652016-05-26 23:48:38 +0530136 test = getJavaImportPackage(getStubYangType(TYPE3), false, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +0530137 assertThat(null, is(test));
138
Bharat saraswalcad0e652016-05-26 23:48:38 +0530139 test = getJavaImportPackage(getStubYangType(TYPE4), false, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +0530140 assertThat(null, is(test));
141 }
142
143 /**
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530144 * Unit test case for typedef.
145 *
146 * @throws DataModelException when fails to do data model operations
147 */
148 @Test
149 public void testForTypeDef() throws DataModelException {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530150 test = getJavaImportPackage(getStubExtendedInfo(getStubYangType(TYPE_DEF)), false, pluginConfig);
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530151 assertThat(true, is(test.equals(TYPE_DEF_PKG)));
152 }
153
154 /**
Bharat saraswald6f12412016-03-28 15:50:13 +0530155 * Returns stub YANG type for test.
156 *
157 * @param dataTypes YANG data types
158 * @return YANG type
159 */
160 private YangType<?> getStubYangType(YangDataTypes dataTypes) {
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530161 YangType<?> type = new YangType<>();
Bharat saraswald6f12412016-03-28 15:50:13 +0530162 type.setDataType(dataTypes);
163 return type;
164 }
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530165
166 /**
167 * Returns YANG type with extended info.
168 *
169 * @param type YANG type
170 * @return YANG type with extended info
171 * @throws DataModelException when fails to do data model operations
172 */
173 @SuppressWarnings("unchecked")
174 private YangType<?> getStubExtendedInfo(YangType<?> type) throws DataModelException {
175 YangJavaTypeDef typedef = new YangJavaTypeDef();
176 getStubParent().addChild(typedef);
177 YangDerivedInfo<?> derInfo = new YangDerivedInfo<>();
178 derInfo.setReferredTypeDef(typedef);
179 ((YangType<YangDerivedInfo<?>>) type).setDataTypeExtendedInfo(derInfo);
180 return type;
181 }
182
183 /**
184 * Returns java file info.
185 *
186 * @return java file info
187 */
188 private JavaFileInfo addStubJavaFileInfo() {
189 JavaFileInfo fileInfo = new JavaFileInfo();
190 fileInfo.setJavaName("test");
191 fileInfo.setPackage("target");
192 return fileInfo;
193 }
194
195 /**
196 * Adds stub parent module for typedef.
197 *
198 * @return stub parent module
199 */
200 private YangNode getStubParent() {
201 YangJavaModule parent = new YangJavaModule();
202 parent.setJavaFileInfo(addStubJavaFileInfo());
203 return parent;
204 }
Bharat saraswald6f12412016-03-28 15:50:13 +0530205}