Remove StatementParserMode.SEMVER_MODE
[yangtools.git] / parser / yang-parser-impl / src / test / java / org / opendaylight / yangtools / yang / parser / repo / OpenconfigVerSharedSchemaRepositoryTest.java
1 /*
2  * Copyright (c) 2016 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 package org.opendaylight.yangtools.yang.parser.repo;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertNotNull;
12 import static org.junit.Assert.assertTrue;
13
14 import com.google.common.util.concurrent.ListenableFuture;
15 import org.junit.Test;
16 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
17 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
18 import org.opendaylight.yangtools.yang.model.repo.api.EffectiveModelContextFactory;
19 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
20 import org.opendaylight.yangtools.yang.parser.rfc7950.ir.IRSchemaSource;
21 import org.opendaylight.yangtools.yang.parser.rfc7950.repo.TextToIRTransformer;
22
23 public class OpenconfigVerSharedSchemaRepositoryTest {
24     @Test
25     public void testSharedSchemaRepository() throws Exception {
26         final SharedSchemaRepository sharedSchemaRepository = new SharedSchemaRepository("shared-schema-repo-test");
27
28         final SettableSchemaProvider<IRSchemaSource> bar = getImmediateYangSourceProviderFromResource(
29                 "/openconfig-version/shared-schema-repository/bar@2016-01-01.yang");
30         bar.register(sharedSchemaRepository);
31         bar.setResult();
32         final SettableSchemaProvider<IRSchemaSource> foo = getImmediateYangSourceProviderFromResource(
33                 "/openconfig-version/shared-schema-repository/foo.yang");
34         foo.register(sharedSchemaRepository);
35         foo.setResult();
36         final SettableSchemaProvider<IRSchemaSource> semVer = getImmediateYangSourceProviderFromResource(
37                 "/openconfig-version/shared-schema-repository/openconfig-extensions.yang");
38         semVer.register(sharedSchemaRepository);
39         semVer.setResult();
40
41         final EffectiveModelContextFactory fact = sharedSchemaRepository.createEffectiveModelContextFactory();
42         final ListenableFuture<EffectiveModelContext> inetAndTopologySchemaContextFuture =
43                 fact.createEffectiveModelContext(bar.getId(), foo.getId(), semVer.getId());
44         assertTrue(inetAndTopologySchemaContextFuture.isDone());
45         assertSchemaContext(inetAndTopologySchemaContextFuture.get(), 3);
46
47         final ListenableFuture<EffectiveModelContext> barSchemaContextFuture =
48                 fact.createEffectiveModelContext(bar.getId(), semVer.getId());
49         assertTrue(barSchemaContextFuture.isDone());
50         assertSchemaContext(barSchemaContextFuture.get(), 2);
51     }
52
53     private static void assertSchemaContext(final SchemaContext schemaContext, final int moduleSize) {
54         assertNotNull(schemaContext);
55         assertEquals(moduleSize, schemaContext.getModules().size());
56     }
57
58     static SettableSchemaProvider<IRSchemaSource> getImmediateYangSourceProviderFromResource(final String resourceName)
59             throws Exception {
60         final YangTextSchemaSource yangSource = YangTextSchemaSource.forResource(resourceName);
61         return SettableSchemaProvider.createImmediate(TextToIRTransformer.transformText(yangSource),
62             IRSchemaSource.class);
63     }
64 }