Bug 4662: Introduce a SemanticVersion concept - SchemaContextFactory
[yangtools.git] / yang / yang-parser-impl / src / test / java / org / opendaylight / yangtools / yang / parser / repo / DependencyResolverTest.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.yangtools.yang.parser.repo;
10
11 import static org.junit.Assert.assertEquals;
12
13 import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
14
15 import com.google.common.base.Optional;
16 import java.util.HashMap;
17 import java.util.Map;
18 import org.junit.Test;
19 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
20 import org.opendaylight.yangtools.yang.parser.impl.util.YangModelDependencyInfo;
21
22 @Deprecated
23 public class DependencyResolverTest {
24
25     @Test
26     public void testModulesWithoutRevisionAndImport() throws Exception {
27         final Map<SourceIdentifier, YangModelDependencyInfo> map = new HashMap<>();
28
29         addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.fromInputStream(getClass().getResourceAsStream("/no-revision/imported.yang")));
30         addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.fromInputStream(getClass().getResourceAsStream("/no-revision/imported@2012-12-12.yang")));
31         addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.fromInputStream(getClass().getResourceAsStream("/no-revision/top@2012-10-10.yang")));
32
33         final DependencyResolver resolved = RevisionDependencyResolver.create(map);
34
35         assertEquals(0, resolved.getUnresolvedSources().size());
36         assertEquals(0, resolved.getUnsatisfiedImports().size());
37     }
38
39     @Test
40     public void testSubmoduleNoModule() throws Exception {
41         final Map<SourceIdentifier, YangModelDependencyInfo> map = new HashMap<>();
42
43         // Subfoo does not have parent in reactor
44         addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.fromInputStream(getClass().getResourceAsStream("/model/subfoo.yang")));
45         addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.fromInputStream(getClass().getResourceAsStream("/model/bar.yang")));
46         addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.fromInputStream(getClass().getResourceAsStream("/model/baz.yang")));
47
48         final DependencyResolver resolved = RevisionDependencyResolver.create(map);
49
50         assertEquals(2, resolved.getResolvedSources().size());
51         assertEquals(1, resolved.getUnresolvedSources().size());
52         assertEquals(0, resolved.getUnsatisfiedImports().size());
53     }
54
55     @Test
56     public void testSubmodule() throws Exception {
57         final Map<SourceIdentifier, YangModelDependencyInfo> map = new HashMap<>();
58
59         addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.fromInputStream(getClass().getResourceAsStream("/model/subfoo.yang")));
60         addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.fromInputStream(getClass().getResourceAsStream("/model/foo.yang")));
61         addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.fromInputStream(getClass().getResourceAsStream("/model/bar.yang")));
62         addToMap(map, YangModelDependencyInfo.ModuleDependencyInfo.fromInputStream(getClass().getResourceAsStream("/model/baz.yang")));
63
64         final DependencyResolver resolved = RevisionDependencyResolver.create(map);
65
66         assertEquals(4, resolved.getResolvedSources().size());
67         assertEquals(0, resolved.getUnresolvedSources().size());
68         assertEquals(0, resolved.getUnsatisfiedImports().size());
69     }
70
71     private static void addToMap(final Map<SourceIdentifier, YangModelDependencyInfo> map, final YangModelDependencyInfo yangModelDependencyInfo) {
72         map.put(getSourceId(yangModelDependencyInfo), yangModelDependencyInfo);
73     }
74
75     private static SourceIdentifier getSourceId(final YangModelDependencyInfo depInfo) {
76         final String name = depInfo.getName();
77         return RevisionSourceIdentifier.create(name, Optional.fromNullable(depInfo.getFormattedRevision()));
78     }
79 }