Added model generation from ietf-topology models
[yangtools.git] / code-generator / binding-generator-impl / src / test / java / org / opendaylight / yangtools / sal / binding / generator / impl / GenTypesSubSetTest.java
1 /*\r
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.yangtools.sal.binding.generator.impl;\r
9 \r
10 import static org.junit.Assert.*;\r
11 \r
12 import java.io.File;\r
13 import java.util.ArrayList;\r
14 import java.util.HashSet;\r
15 import java.util.List;\r
16 import java.util.Set;\r
17 \r
18 import org.junit.BeforeClass;\r
19 import org.junit.Test;\r
20 import org.opendaylight.yangtools.sal.binding.generator.api.BindingGenerator;\r
21 import org.opendaylight.yangtools.sal.binding.model.api.Type;\r
22 import org.opendaylight.yangtools.yang.model.api.Module;\r
23 import org.opendaylight.yangtools.yang.model.api.SchemaContext;\r
24 import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;\r
25 import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;\r
26 \r
27 public class GenTypesSubSetTest {\r
28 \r
29     private final static List<File> yangModels = new ArrayList<>();\r
30     private final static String yangModelsFolder = AugmentedTypeTest.class\r
31             .getResource("/leafref-test-models").getPath();\r
32 \r
33     @BeforeClass\r
34     public static void loadTestResources() {\r
35         final File augFolder = new File(yangModelsFolder);\r
36 \r
37         for (final File fileEntry : augFolder.listFiles()) {\r
38             if (fileEntry.isFile()) {\r
39                 yangModels.add(fileEntry);\r
40             }\r
41         }\r
42     }\r
43 \r
44     @Test\r
45     public void genTypesFromSubsetOfTwoModulesTest() {\r
46         final YangModelParser parser = new YangParserImpl();\r
47         final Set<Module> modules = parser.parseYangModels(yangModels);\r
48         final SchemaContext context = parser.resolveSchemaContext(modules);\r
49 \r
50         final Set<Module> toGenModules = new HashSet<>();\r
51         for (final Module module : modules) {\r
52             if (module.getName().equals("abstract-topology")) {\r
53                 toGenModules.add(module);\r
54             } else if (module.getName().equals("ietf-interfaces")) {\r
55                 toGenModules.add(module);\r
56             }\r
57         }\r
58 \r
59         assertEquals("Set of to Generate Modules must contain 2 modules", 2,\r
60                 toGenModules.size());\r
61         assertNotNull("Schema Context is null", context);\r
62         final BindingGenerator bindingGen = new BindingGeneratorImpl();\r
63         final List<Type> genTypes = bindingGen.generateTypes(context, toGenModules);\r
64         assertNotNull("genTypes is null", genTypes);\r
65         assertFalse("genTypes is empty", genTypes.isEmpty());\r
66         assertEquals("Expected Generated Types from provided sub set of " +\r
67                 "modules should be 23!", 23,\r
68                 genTypes.size());\r
69     }\r
70 \r
71     @Test\r
72     public void genTypesFromSubsetOfThreeModulesTest() {\r
73         final YangModelParser parser = new YangParserImpl();\r
74         final Set<Module> modules = parser.parseYangModels(yangModels);\r
75         final SchemaContext context = parser.resolveSchemaContext(modules);\r
76 \r
77         final Set<Module> toGenModules = new HashSet<>();\r
78         for (final Module module : modules) {\r
79             if (module.getName().equals("abstract-topology")) {\r
80                 toGenModules.add(module);\r
81             } else if (module.getName().equals("ietf-interfaces")) {\r
82                 toGenModules.add(module);\r
83             } else if (module.getName().equals("iana-if-type")) {\r
84                 toGenModules.add(module);\r
85             }\r
86         }\r
87 \r
88         assertEquals("Set of to Generate Modules must contain 3 modules", 3,\r
89                 toGenModules.size());\r
90 \r
91         assertNotNull("Schema Context is null", context);\r
92         final BindingGenerator bindingGen = new BindingGeneratorImpl();\r
93         final List<Type> genTypes = bindingGen.generateTypes(context, toGenModules);\r
94         assertNotNull("genTypes is null", genTypes);\r
95         assertFalse("genTypes is empty", genTypes.isEmpty());\r
96         assertEquals("Expected Generated Types", 24, genTypes.size());\r
97     }\r
98 }\r