Test for YANG choices added
[controller.git] / opendaylight / sal / yang-prototype / code-generator / binding-generator-impl / src / test / java / org / opendaylight / controller / sal / binding / generator / impl / SupportTestUtil.java
1 package org.opendaylight.controller.sal.binding.generator.impl;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertTrue;
5
6 import java.util.List;
7
8 import org.opendaylight.controller.sal.binding.model.api.GeneratedType;
9 import org.opendaylight.controller.sal.binding.model.api.MethodSignature;
10 import org.opendaylight.controller.sal.binding.model.api.ParameterizedType;
11 import org.opendaylight.controller.sal.binding.model.api.Type;
12
13 public class SupportTestUtil {
14
15     public static void containsSignatures(final GeneratedType genType,
16             final MethodSignaturePattern... searchedSignsWhat) {
17         final List<MethodSignature> searchedSignsIn = genType.getMethodDefinitions();
18         containsSignatures(searchedSignsIn, searchedSignsWhat);
19     }
20
21     public static void containsSignatures(final List<MethodSignature> searchedSignsIn,
22             final MethodSignaturePattern... searchedSignsWhat) {
23         if (searchedSignsIn == null) {
24             throw new IllegalArgumentException("List of method signatures in which should be searched can't be null");
25         }
26         if (searchedSignsWhat == null) {
27             throw new IllegalArgumentException("Array of method signatures which should be searched can't be null");
28         }
29
30         for (MethodSignaturePattern searchedSignWhat : searchedSignsWhat) {
31             boolean nameMatchFound = false;
32             String typeNameFound = "";
33             for (MethodSignature searchedSignIn : searchedSignsIn) {
34                 if (searchedSignWhat.getName().equals(searchedSignIn.getName())) {
35                     nameMatchFound = true;
36                     typeNameFound = resolveFullNameOfReturnType(searchedSignIn.getReturnType());
37                     if (searchedSignWhat.getType().equals(typeNameFound)) {
38                         break;
39                     }
40                 }
41             }
42             assertTrue("Method " + searchedSignWhat.getName() + " wasn't found.", nameMatchFound);
43             assertEquals("Return type in method " + searchedSignWhat.getName() + " doesn't match expected type ",
44                     searchedSignWhat.getType(), typeNameFound);
45
46         }
47     }
48
49     public static String resolveFullNameOfReturnType(final Type type) {
50         final StringBuilder nameBuilder = new StringBuilder();
51         if (type instanceof ParameterizedType) {
52             nameBuilder.append(type.getName() + "<");
53             ParameterizedType parametrizedTypes = (ParameterizedType) type;
54             for (Type parametrizedType : parametrizedTypes.getActualTypeArguments()) {
55                 nameBuilder.append(parametrizedType.getName() + ",");
56             }
57             if (nameBuilder.charAt(nameBuilder.length() - 1) == ',') {
58                 nameBuilder.deleteCharAt(nameBuilder.length() - 1);
59             }
60             nameBuilder.append(">");
61         } else {
62             nameBuilder.append(type.getName());
63         }
64         return nameBuilder.toString();
65     }
66
67     public static void containsInterface(String interfaceNameSearched, GeneratedType genType) {
68         List<Type> caseCImplements = genType.getImplements();
69         boolean interfaceFound = false;
70         for (Type caseCImplement : caseCImplements) {
71             String interfaceName = resolveFullNameOfReturnType(caseCImplement);
72             if (interfaceName.equals(interfaceNameSearched)) {
73                 interfaceFound = true;
74                 break;
75             }
76         }
77         assertTrue("Generated type " + genType.getName() + " doesn't implement inrerface " + interfaceNameSearched,
78                 interfaceFound);
79     }
80
81 }