+ assertEquals(5, genTypes.size());
+
+ int genTypesCount = 0;
+ int genTOsCount = 0;
+ for (final Type type : genTypes) {
+ if (type instanceof GeneratedType) {
+ final GeneratedType genType = (GeneratedType) type;
+ if (genType.getName().equals("ListParentContainer")) {
+ assertEquals(2, genType.getMethodDefinitions().size());
+ genTypesCount++;
+ } else if (genType.getName().equals("SimpleList")) {
+ assertEquals(7, genType.getMethodDefinitions().size());
+ final List<MethodSignature> methods = genType
+ .getMethodDefinitions();
+ int methodsCount = 0;
+ for (final MethodSignature method : methods) {
+ if (method.getName().equals("getSimpleListKey")) {
+ assertEquals("SimpleListKey", method
+ .getReturnType().getName());
+ methodsCount++;
+ } else if (method.getName().equals(
+ "getListChildContainer")) {
+ assertEquals("ListChildContainer", method
+ .getReturnType().getName());
+ methodsCount++;
+ } else if (method.getName().equals("getFoo")) {
+ methodsCount++;
+ } else if (method.getName().equals("setFoo")) {
+ methodsCount++;
+ } else if (method.getName().equals("getSimpleLeafList")) {
+ methodsCount++;
+ } else if (method.getName().equals("setSimpleLeafList")) {
+ methodsCount++;
+ } else if (method.getName().equals("getBar")) {
+ methodsCount++;
+ }
+ }
+ assertEquals(7, methodsCount);
+ genTypesCount++;
+ } else if (genType.getName().equals("ListChildContainer")) {
+ assertEquals(2, genType.getMethodDefinitions().size());
+ genTypesCount++;
+ }
+ } else if (type instanceof GeneratedTransferObject) {
+ genTOsCount++;
+ final GeneratedTransferObject genTO = (GeneratedTransferObject) type;
+ final List<GeneratedProperty> properties = genTO
+ .getProperties();
+ final List<GeneratedProperty> hashProps = genTO
+ .getHashCodeIdentifiers();
+ final List<GeneratedProperty> equalProps = genTO
+ .getEqualsIdentifiers();
+
+ assertEquals(1, properties.size());
+ assertEquals("ListKey", properties.get(0).getName());
+ assertEquals("Byte", properties.get(0).getReturnType()
+ .getName());
+ assertEquals(true, properties.get(0).isReadOnly());
+ assertEquals(1, hashProps.size());
+ assertEquals("ListKey", hashProps.get(0).getName());
+ assertEquals("Byte", hashProps.get(0).getReturnType().getName());
+ assertEquals(1, equalProps.size());
+ assertEquals("ListKey", equalProps.get(0).getName());
+ assertEquals("Byte", equalProps.get(0).getReturnType()
+ .getName());
+ }
+ }
+ assertEquals(3, genTypesCount);
+ assertEquals(1, genTOsCount);
+ }
+
+ @Test
+ public void testListCompositeKeyResolving() {
+ final String filePath = getClass().getResource(
+ "/list-composite-key.yang").getPath();
+ final SchemaContext context = resolveSchemaContextFromFiles(filePath);
+
+ assertTrue(context != null);
+
+ final BindingGenerator bindingGen = new BindingGeneratorImpl();
+ final List<Type> genTypes = bindingGen.generateTypes(context);
+
+ assertTrue(genTypes != null);
+ assertEquals(7, genTypes.size());
+
+ int genTypesCount = 0;
+ int genTOsCount = 0;
+ for (final Type type : genTypes) {
+ if (type instanceof GeneratedType) {
+ genTypesCount++;
+ } else if (type instanceof GeneratedTransferObject) {
+ final GeneratedTransferObject genTO = (GeneratedTransferObject) type;
+
+ if (genTO.getName().equals("CompositeKeyListKey")) {
+ final List<GeneratedProperty> properties = genTO
+ .getProperties();
+ int propertyCount = 0;
+ for (final GeneratedProperty prop : properties) {
+ if (prop.getName().equals("Key1")) {
+ propertyCount++;
+ } else if (prop.getName().equals("Key2")) {
+ propertyCount++;
+ }
+ }
+ assertEquals(2, propertyCount);
+ genTOsCount++;
+ } else if (genTO.getName().equals("InnerListKey")) {
+ final List<GeneratedProperty> properties = genTO
+ .getProperties();
+ assertEquals(1, properties.size());
+ genTOsCount++;
+ }
+ }
+ }
+
+ assertEquals(5, genTypesCount);
+ assertEquals(2, genTOsCount);