blob: 91a723fd1d11be6eb7bd8d1ab33105f19897d1de [file] [log] [blame]
/*
* Copyright 2016 Open Networking Laboratory
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.yangutils.translator.tojava.utils;
import org.junit.Test;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertNotNull;
import org.onosproject.yangutils.datamodel.YangDataTypes;
import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.translator.tojava.AttributeInfo;
import org.onosproject.yangutils.translator.tojava.ImportInfo;
import org.onosproject.yangutils.utils.UtilConstants;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
/**
* Unit tests for generated methods from the file type.
*/
public final class MethodsGeneratorTest {
public static AttributeInfo testAttr = new AttributeInfo();
public static YangType<?> attrType = new YangType<>();
/**
* Unit test for private constructor.
*
* @throws SecurityException if any security violation is observed
* @throws NoSuchMethodException if when the method is not found
* @throws IllegalArgumentException if there is illegal argument found
* @throws InstantiationException if instantiation is provoked for the private constructor
* @throws IllegalAccessException if instance is provoked or a method is provoked
* @throws InvocationTargetException when an exception occurs by the method or constructor
*/
@Test
public void callPrivateConstructors() throws SecurityException, NoSuchMethodException, IllegalArgumentException,
InstantiationException, IllegalAccessException, InvocationTargetException {
Class<?>[] classesToConstruct = {MethodsGenerator.class };
for (Class<?> clazz : classesToConstruct) {
Constructor<?> constructor = clazz.getDeclaredConstructor();
constructor.setAccessible(true);
assertNotNull(constructor.newInstance());
}
}
/**
* Unit test case for checking the parse builder and typedef constructor.
*/
@Test
public void getParseBuilderInterfaceMethodConstructorTest() {
ImportInfo forSetter = new ImportInfo();
attrType.setDataTypeName("binary");
attrType.getDataTypeName();
attrType.setDataType(YangDataTypes.BINARY);
attrType.getDataType();
testAttr.setAttributeName("attributeTest");
testAttr.setAttributeType(attrType);
forSetter.setPkgInfo("test1/test3");
forSetter.setClassInfo("This class contains");
testAttr.setImportInfo(forSetter);
String parseBuilderInterface = MethodsGenerator.parseBuilderInterfaceMethodString(testAttr, "newTestName");
assertThat(parseBuilderInterface.contains("attributeTest") && parseBuilderInterface.contains("newTestName"),
is(true));
String parseBuilderInterfaceBuild = MethodsGenerator.parseBuilderInterfaceBuildMethodString("testname7");
assertThat(parseBuilderInterfaceBuild.contains("Builds object of")
&& parseBuilderInterfaceBuild.contains("testname7"), is(true));
String stringTypeDef = MethodsGenerator.getTypeDefConstructor(testAttr, "Testname");
}
/**
* Unit test case for checking the values received from constructor, default constructor and build string formation.
*/
@Test
public void getValuesTest() {
String stringConstructor = MethodsGenerator.getConstructorString("testname");
assertThat(stringConstructor.contains(UtilConstants.JAVA_DOC_CONSTRUCTOR)
&& stringConstructor.contains(UtilConstants.JAVA_DOC_PARAM)
&& stringConstructor.contains(UtilConstants.BUILDER_OBJECT), is(true));
String stringDefaultConstructor = MethodsGenerator.getDefaultConstructorString("testnameBuilder", "public");
assertThat(stringDefaultConstructor.contains(UtilConstants.JAVA_DOC_DEFAULT_CONSTRUCTOR)
&& stringDefaultConstructor.contains(UtilConstants.BUILDER)
&& stringDefaultConstructor.contains("testname"), is(true));
String stringBuild = MethodsGenerator.getBuildString("testname");
assertThat(stringBuild.contains(UtilConstants.OVERRIDE) && stringBuild.contains(UtilConstants.BUILD)
&& stringBuild.contains(UtilConstants.RETURN), is(true));
}
/**
* Unit test for checking the values received for class getter, class and typedef setters with list data type.
*/
@Test
public void getGetterSetterTest() {
ImportInfo forGetterSetter = new ImportInfo();
attrType.setDataTypeName("int");
attrType.getDataTypeName();
attrType.setDataType(YangDataTypes.UINT8);
attrType.getDataType();
testAttr.setAttributeName("AttributeTest1");
testAttr.setAttributeType(attrType);
forGetterSetter.setPkgInfo(null);
forGetterSetter.setClassInfo("This class contains");
testAttr.setImportInfo(forGetterSetter);
testAttr.setListAttr(true);
String getterForClass = MethodsGenerator.getGetterForClass(testAttr);
assertThat(getterForClass.contains(UtilConstants.GET_METHOD_PREFIX) && getterForClass.contains("List<")
&& getterForClass.contains("attributeTest1"), is(true));
String setterForClass = MethodsGenerator.getSetterForClass(testAttr, "TestThis");
assertThat(setterForClass.contains(UtilConstants.SET_METHOD_PREFIX) && setterForClass.contains("List<")
&& setterForClass.contains("attributeTest1"), is(true));
String typeDefSetter = MethodsGenerator.getSetterForTypeDefClass(testAttr);
assertThat(typeDefSetter.contains(UtilConstants.SET_METHOD_PREFIX) && typeDefSetter.contains("List<")
&& typeDefSetter.contains("attributeTest1") && typeDefSetter.contains("this."), is(true));
}
/**
* Unit test case for checking the parse builder and typedef constructor with list data type.
*/
@Test
public void getConstructorWithListTypeTest() {
ImportInfo forSetter = new ImportInfo();
attrType.setDataTypeName("binary");
attrType.getDataTypeName();
attrType.setDataType(YangDataTypes.BINARY);
attrType.getDataType();
testAttr.setAttributeName("attributeTest");
testAttr.setAttributeType(attrType);
forSetter.setPkgInfo(null);
forSetter.setClassInfo("This class contains");
testAttr.setImportInfo(forSetter);
testAttr.setListAttr(true);
String parseBuilderInterface = MethodsGenerator.parseBuilderInterfaceMethodString(testAttr, "newTestName");
assertThat(parseBuilderInterface.contains("attributeTest") && parseBuilderInterface.contains("List<"),
is(true));
String parseBuilderInterfaceBuild = MethodsGenerator.parseBuilderInterfaceBuildMethodString("testname7");
assertThat(parseBuilderInterfaceBuild.contains("Builds object of")
&& parseBuilderInterfaceBuild.contains("testname7"), is(true));
String stringTypeDef = MethodsGenerator.getTypeDefConstructor(testAttr, "Testname");
assertThat(stringTypeDef.contains("(List<") && stringTypeDef.contains("Testname")
&& stringTypeDef.contains(UtilConstants.THIS), is(true));
}
}