blob: e54e4f2cc6094f4f205aebdd90441ab31a27957b [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
Gaurav Agrawalc5f63272016-06-16 13:09:53 +053017package org.onosproject.yangutils.translator.tojava.javamodel;
Bharat saraswald6f12412016-03-28 15:50:13 +053018
19import java.lang.reflect.Constructor;
20import java.lang.reflect.InvocationTargetException;
Bharat saraswald6f12412016-03-28 15:50:13 +053021import org.junit.Test;
Gaurav Agrawal72cd1b72016-06-30 13:28:14 +053022import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053023import org.onosproject.yangutils.datamodel.YangDerivedInfo;
24import org.onosproject.yangutils.datamodel.YangNode;
Bharat saraswald6f12412016-03-28 15:50:13 +053025import org.onosproject.yangutils.datamodel.YangType;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053026import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +053027import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
28import org.onosproject.yangutils.datamodel.javadatamodel.YangToJavaNamingConflictUtil;
Bharat saraswald6f12412016-03-28 15:50:13 +053029
30import static org.hamcrest.core.Is.is;
Bharat saraswal6ef0b762016-04-05 12:45:45 +053031import static org.hamcrest.core.IsNot.not;
Bharat saraswald6f12412016-03-28 15:50:13 +053032import static org.junit.Assert.assertThat;
Gaurav Agrawal72cd1b72016-06-30 13:28:14 +053033import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BOOLEAN;
34import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DERIVED;
35import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
36import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.STRING;
37import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
Gaurav Agrawal8a5af142016-06-15 13:58:01 +053038import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaDataType;
39import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportClass;
40import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportPackage;
Bharat saraswald6f12412016-03-28 15:50:13 +053041import static org.onosproject.yangutils.utils.UtilConstants.JAVA_LANG;
42
43/**
44 * Unit test case for attribute java data type.
45 */
46public class AttributesJavaDataTypeTest {
47
48 private static final YangDataTypes TYPE1 = STRING;
49 private static final YangDataTypes TYPE2 = INT32;
50 private static final YangDataTypes TYPE3 = BOOLEAN;
51 private static final YangDataTypes TYPE4 = UINT8;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053052 private static final YangDataTypes TYPE_DEF = DERIVED;
Bharat saraswald6f12412016-03-28 15:50:13 +053053 private static final String CLASS_INFO1 = "String";
54 private static final String CLASS_INFO2 = "int";
55 private static final String CLASS_INFO3 = "boolean";
56 private static final String CLASS_INFO4 = "short";
57 private static final String CLASS_INFO5 = "Integer";
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053058 private static final String TYPE_DEF_PKG = "target.test";
Bharat saraswald6f12412016-03-28 15:50:13 +053059 private static String test = "";
janani bdd1314f2016-05-19 17:39:50 +053060 private static YangToJavaNamingConflictUtil pluginConfig = null;
Bharat saraswald6f12412016-03-28 15:50:13 +053061
62 /**
63 * Unit test for private constructor.
64 *
65 * @throws SecurityException if any security violation is observed
66 * @throws NoSuchMethodException if when the method is not found
67 * @throws IllegalArgumentException if there is illegal argument found
68 * @throws InstantiationException if instantiation is provoked for the private constructor
69 * @throws IllegalAccessException if instance is provoked or a method is provoked
70 * @throws InvocationTargetException when an exception occurs by the method or constructor
71 */
72 @Test
Bharat saraswal33dfa012016-05-17 19:59:16 +053073 public void callPrivateConstructors()
74 throws SecurityException, NoSuchMethodException, IllegalArgumentException,
Bharat saraswald6f12412016-03-28 15:50:13 +053075 InstantiationException, IllegalAccessException, InvocationTargetException {
76
77 Class<?>[] classesToConstruct = {AttributesJavaDataType.class };
78 for (Class<?> clazz : classesToConstruct) {
79 Constructor<?> constructor = clazz.getDeclaredConstructor();
80 constructor.setAccessible(true);
Bharat saraswal6ef0b762016-04-05 12:45:45 +053081 assertThat(null, not(constructor.newInstance()));
Bharat saraswald6f12412016-03-28 15:50:13 +053082 }
83 }
84
85 /**
86 * Unit test for java class info method test.
87 */
88 @Test
89 public void testgetJavaClassInfo() {
Bharat saraswal33dfa012016-05-17 19:59:16 +053090 test = getJavaImportClass(getStubYangType(TYPE1), false, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +053091 assertThat(true, is(test.equals(CLASS_INFO1)));
92
Bharat saraswal33dfa012016-05-17 19:59:16 +053093 test = getJavaImportClass(getStubYangType(TYPE2), true, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +053094 assertThat(true, is(test.equals(CLASS_INFO5)));
95
Bharat saraswal33dfa012016-05-17 19:59:16 +053096 test = getJavaImportClass(getStubYangType(TYPE3), false, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +053097 assertThat(null, is(test));
98
Bharat saraswal33dfa012016-05-17 19:59:16 +053099 test = getJavaImportClass(getStubYangType(TYPE4), false, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +0530100 assertThat(null, is(test));
101 }
102
103 /**
104 * Unit test for java data type method.
105 */
106 @Test
107 public void testgetJavaDataType() {
Bharat saraswald6f12412016-03-28 15:50:13 +0530108 test = getJavaDataType(getStubYangType(TYPE1));
109 assertThat(true, is(test.equals(CLASS_INFO1)));
110
111 test = getJavaDataType(getStubYangType(TYPE2));
112 assertThat(true, is(test.equals(CLASS_INFO2)));
113
114 test = getJavaDataType(getStubYangType(TYPE3));
115 assertThat(true, is(test.equals(CLASS_INFO3)));
116
117 test = getJavaDataType(getStubYangType(TYPE4));
118 assertThat(true, is(test.equals(CLASS_INFO4)));
119 }
120
121 /**
122 * Unit test for java package info method.
123 */
124 @Test
125 public void testgetJavaPkgInfo() {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530126 test = getJavaImportPackage(getStubYangType(TYPE1), false, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +0530127 assertThat(true, is(test.equals(JAVA_LANG)));
128
Bharat saraswalcad0e652016-05-26 23:48:38 +0530129 test = getJavaImportPackage(getStubYangType(TYPE2), true, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +0530130 assertThat(true, is(test.equals(JAVA_LANG)));
131
Bharat saraswalcad0e652016-05-26 23:48:38 +0530132 test = getJavaImportPackage(getStubYangType(TYPE3), false, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +0530133 assertThat(null, is(test));
134
Bharat saraswalcad0e652016-05-26 23:48:38 +0530135 test = getJavaImportPackage(getStubYangType(TYPE4), false, pluginConfig);
Bharat saraswald6f12412016-03-28 15:50:13 +0530136 assertThat(null, is(test));
137 }
138
139 /**
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530140 * Unit test case for typedef.
141 *
142 * @throws DataModelException when fails to do data model operations
143 */
144 @Test
145 public void testForTypeDef() throws DataModelException {
Bharat saraswalcad0e652016-05-26 23:48:38 +0530146 test = getJavaImportPackage(getStubExtendedInfo(getStubYangType(TYPE_DEF)), false, pluginConfig);
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530147 assertThat(true, is(test.equals(TYPE_DEF_PKG)));
148 }
149
150 /**
Bharat saraswald6f12412016-03-28 15:50:13 +0530151 * Returns stub YANG type for test.
152 *
153 * @param dataTypes YANG data types
154 * @return YANG type
155 */
156 private YangType<?> getStubYangType(YangDataTypes dataTypes) {
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530157 YangType<?> type = new YangType<>();
Bharat saraswald6f12412016-03-28 15:50:13 +0530158 type.setDataType(dataTypes);
159 return type;
160 }
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530161
162 /**
163 * Returns YANG type with extended info.
164 *
165 * @param type YANG type
166 * @return YANG type with extended info
167 * @throws DataModelException when fails to do data model operations
168 */
169 @SuppressWarnings("unchecked")
170 private YangType<?> getStubExtendedInfo(YangType<?> type) throws DataModelException {
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +0530171 YangJavaTypeDefTranslator typedef = new YangJavaTypeDefTranslator();
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530172 getStubParent().addChild(typedef);
173 YangDerivedInfo<?> derInfo = new YangDerivedInfo<>();
174 derInfo.setReferredTypeDef(typedef);
175 ((YangType<YangDerivedInfo<?>>) type).setDataTypeExtendedInfo(derInfo);
176 return type;
177 }
178
179 /**
180 * Returns java file info.
181 *
182 * @return java file info
183 */
184 private JavaFileInfo addStubJavaFileInfo() {
185 JavaFileInfo fileInfo = new JavaFileInfo();
186 fileInfo.setJavaName("test");
187 fileInfo.setPackage("target");
188 return fileInfo;
189 }
190
191 /**
192 * Adds stub parent module for typedef.
193 *
194 * @return stub parent module
195 */
196 private YangNode getStubParent() {
Shankara-Huaweibdf24bb2016-08-02 18:13:13 +0530197 YangJavaModuleTranslator parent = new YangJavaModuleTranslator();
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530198 parent.setJavaFileInfo(addStubJavaFileInfo());
199 return parent;
200 }
Bharat saraswald6f12412016-03-28 15:50:13 +0530201}