3b8f5e9448cc39ee176494ec7908df26cf0fc7e7
[mdsal.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.assertEquals;\r
11 import static org.junit.Assert.assertFalse;\r
12 import static org.junit.Assert.assertNotNull;\r
13 \r
14 import java.io.File;\r
15 import java.net.URISyntaxException;\r
16 import java.net.URL;\r
17 import java.util.ArrayList;\r
18 import java.util.HashSet;\r
19 import java.util.List;\r
20 import java.util.Set;\r
21 \r
22 import org.junit.BeforeClass;\r
23 import org.junit.Test;\r
24 import org.opendaylight.yangtools.sal.binding.generator.api.BindingGenerator;\r
25 import org.opendaylight.yangtools.sal.binding.model.api.Type;\r
26 import org.opendaylight.yangtools.yang.model.api.Module;\r
27 import org.opendaylight.yangtools.yang.model.api.SchemaContext;\r
28 import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;\r
29 import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;\r
30 \r
31 public class GenTypesSubSetTest {\r
32 \r
33     private final static List<File> yangModels = new ArrayList<>();\r
34     private final static URL yangModelsFolder = AugmentedTypeTest.class\r
35             .getResource("/leafref-test-models");\r
36 \r
37     @BeforeClass\r
38     public static void loadTestResources() throws URISyntaxException {\r
39         final File augFolder = new File(yangModelsFolder.toURI());\r
40 \r
41         for (final File fileEntry : augFolder.listFiles()) {\r
42             if (fileEntry.isFile()) {\r
43                 yangModels.add(fileEntry);\r
44             }\r
45         }\r
46     }\r
47 \r
48     @Test\r
49     public void genTypesFromSubsetOfTwoModulesTest() {\r
50         final YangModelParser parser = new YangParserImpl();\r
51         final Set<Module> modules = parser.parseYangModels(yangModels);\r
52         final SchemaContext context = parser.resolveSchemaContext(modules);\r
53 \r
54         final Set<Module> toGenModules = new HashSet<>();\r
55         for (final Module module : modules) {\r
56             if (module.getName().equals("abstract-topology")) {\r
57                 toGenModules.add(module);\r
58             } else if (module.getName().equals("ietf-interfaces")) {\r
59                 toGenModules.add(module);\r
60             }\r
61         }\r
62 \r
63         assertEquals("Set of to Generate Modules must contain 2 modules", 2,\r
64                 toGenModules.size());\r
65         assertNotNull("Schema Context is null", context);\r
66         final BindingGenerator bindingGen = new BindingGeneratorImpl();\r
67         final List<Type> genTypes = bindingGen.generateTypes(context, toGenModules);\r
68         assertNotNull("genTypes is null", genTypes);\r
69         assertFalse("genTypes is empty", genTypes.isEmpty());\r
70         assertEquals("Expected Generated Types from provided sub set of " +\r
71                 "modules should be 23!", 23,\r
72                 genTypes.size());\r
73     }\r
74 \r
75     @Test\r
76     public void genTypesFromSubsetOfThreeModulesTest() {\r
77         final YangModelParser parser = new YangParserImpl();\r
78         final Set<Module> modules = parser.parseYangModels(yangModels);\r
79         final SchemaContext context = parser.resolveSchemaContext(modules);\r
80 \r
81         final Set<Module> toGenModules = new HashSet<>();\r
82         for (final Module module : modules) {\r
83             if (module.getName().equals("abstract-topology")) {\r
84                 toGenModules.add(module);\r
85             } else if (module.getName().equals("ietf-interfaces")) {\r
86                 toGenModules.add(module);\r
87             } else if (module.getName().equals("iana-if-type")) {\r
88                 toGenModules.add(module);\r
89             }\r
90         }\r
91 \r
92         assertEquals("Set of to Generate Modules must contain 3 modules", 3,\r
93                 toGenModules.size());\r
94 \r
95         assertNotNull("Schema Context is null", context);\r
96         final BindingGenerator bindingGen = new BindingGeneratorImpl();\r
97         final List<Type> genTypes = bindingGen.generateTypes(context, toGenModules);\r
98         assertNotNull("genTypes is null", genTypes);\r
99         assertFalse("genTypes is empty", genTypes.isEmpty());\r
100         assertEquals("Expected Generated Types", 24, genTypes.size());\r
101     }\r
102 }\r