1 package org.opendaylight.yangtools.sal.binding.generator.impl;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertTrue;
8 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;
9 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;
10 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;
11 import org.opendaylight.yangtools.sal.binding.model.api.MethodSignature;
12 import org.opendaylight.yangtools.sal.binding.model.api.ParameterizedType;
13 import org.opendaylight.yangtools.sal.binding.model.api.Type;
15 public class SupportTestUtil {
17 public static void containsMethods(final GeneratedType genType, final NameTypePattern... searchedSignsWhat) {
18 final List<MethodSignature> searchedSignsIn = genType.getMethodDefinitions();
19 containsMethods(searchedSignsIn, searchedSignsWhat);
22 public static void containsMethods(final List<MethodSignature> searchedSignsIn,
23 final NameTypePattern... searchedSignsWhat) {
24 if (searchedSignsIn == null) {
25 throw new IllegalArgumentException("List of method signatures in which should be searched can't be null");
27 if (searchedSignsWhat == null) {
28 throw new IllegalArgumentException("Array of method signatures which should be searched can't be null");
31 for (NameTypePattern searchedSignWhat : searchedSignsWhat) {
32 boolean nameMatchFound = false;
33 String typeNameFound = "";
34 for (MethodSignature searchedSignIn : searchedSignsIn) {
35 if (searchedSignWhat.getName().equals(searchedSignIn.getName())) {
36 nameMatchFound = true;
37 typeNameFound = resolveFullNameOfReturnType(searchedSignIn.getReturnType());
38 if (searchedSignWhat.getType().equals(typeNameFound)) {
43 assertTrue("Method " + searchedSignWhat.getName() + " wasn't found.", nameMatchFound);
44 assertEquals("Return type in method " + searchedSignWhat.getName() + " doesn't match expected type ",
45 searchedSignWhat.getType(), typeNameFound);
50 public static void containsAttributes(final GeneratedTransferObject genTO, boolean equal, boolean hash,
51 boolean toString, final NameTypePattern... searchedSignsWhat) {
52 List<GeneratedProperty> searchedPropertiesIn = genTO.getProperties();
53 containsAttributes(searchedPropertiesIn, "", searchedSignsWhat);
55 searchedPropertiesIn = genTO.getEqualsIdentifiers();
56 containsAttributes(searchedPropertiesIn, "equal", searchedSignsWhat);
59 searchedPropertiesIn = genTO.getHashCodeIdentifiers();
60 containsAttributes(searchedPropertiesIn, "hash", searchedSignsWhat);
63 searchedPropertiesIn = genTO.getToStringIdentifiers();
64 containsAttributes(searchedPropertiesIn, "toString", searchedSignsWhat);
69 public static void containsAttributes(final List<GeneratedProperty> searchedPropertiesIn, final String listType,
70 final NameTypePattern... searchedPropertiesWhat) {
72 for (NameTypePattern searchedPropertyWhat : searchedPropertiesWhat) {
73 boolean nameMatchFound = false;
74 String typeNameFound = "";
75 for (GeneratedProperty searchedPropertyIn : searchedPropertiesIn) {
76 if (searchedPropertyWhat.getName().equals(searchedPropertyIn.getName())) {
77 nameMatchFound = true;
78 typeNameFound = resolveFullNameOfReturnType(searchedPropertyIn.getReturnType());
79 if (searchedPropertyWhat.getType().equals(typeNameFound)) {
84 assertTrue("Property " + searchedPropertyWhat.getName() + " wasn't found in " + listType
85 + " property list.", nameMatchFound);
86 assertEquals("The type of property " + searchedPropertyWhat.getName() + " in " + listType
87 + " property list doesn't match expected type.", searchedPropertyWhat.getType(), typeNameFound);
92 public static String resolveFullNameOfReturnType(final Type type) {
93 final StringBuilder nameBuilder = new StringBuilder();
94 if (type instanceof ParameterizedType) {
95 nameBuilder.append(type.getName() + "<");
96 ParameterizedType parametrizedTypes = (ParameterizedType) type;
97 for (Type parametrizedType : parametrizedTypes.getActualTypeArguments()) {
98 nameBuilder.append(parametrizedType.getName() + ",");
100 if (nameBuilder.charAt(nameBuilder.length() - 1) == ',') {
101 nameBuilder.deleteCharAt(nameBuilder.length() - 1);
103 nameBuilder.append(">");
105 nameBuilder.append(type.getName());
107 return nameBuilder.toString();
110 public static void containsInterface(String interfaceNameSearched, GeneratedType genType) {
111 List<Type> caseCImplements = genType.getImplements();
112 boolean interfaceFound = false;
113 for (Type caseCImplement : caseCImplements) {
114 String interfaceName = resolveFullNameOfReturnType(caseCImplement);
115 if (interfaceName.equals(interfaceNameSearched)) {
116 interfaceFound = true;
120 assertTrue("Generated type " + genType.getName() + " doesn't implement interface " + interfaceNameSearched,