Remove unneeded throws
[yangtools.git] / parser / yang-parser-rfc7950 / src / test / java / org / opendaylight / yangtools / yang / stmt / EffectiveIdentityTest.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.stmt;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertNotNull;
13 import static org.junit.Assert.assertTrue;
14 import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResource;
15
16 import com.google.common.collect.Iterables;
17 import java.net.URISyntaxException;
18 import java.util.Collection;
19 import org.junit.Test;
20 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
21 import org.opendaylight.yangtools.yang.model.api.Module;
22 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
23 import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.RFC7950Reactors;
24 import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
25 import org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException;
26 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
27 import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource;
28 import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor;
29
30 public class EffectiveIdentityTest {
31
32     private static final StatementStreamSource IDENTITY_TEST = sourceForResource(
33             "/stmt-test/identity/identity-test.yang");
34
35     private static final StatementStreamSource CYCLIC_IDENTITY_TEST = sourceForResource(
36             "/stmt-test/identity/cyclic-identity-test.yang");
37
38     @Test(expected = SomeModifiersUnresolvedException.class)
39     public void cyclicefineTest() throws SourceException, ReactorException, URISyntaxException {
40
41         CrossSourceStatementReactor.BuildAction reactor = RFC7950Reactors.defaultReactor().newBuild()
42                 .addSources(CYCLIC_IDENTITY_TEST);
43         try {
44             reactor.buildEffective();
45         } catch (SomeModifiersUnresolvedException e) {
46             StmtTestUtils.log(e, "      ");
47             throw e;
48         }
49     }
50
51     @Test
52     public void identityTest() throws SourceException, ReactorException,
53             URISyntaxException {
54         SchemaContext result = RFC7950Reactors.defaultReactor().newBuild().addSources(IDENTITY_TEST).buildEffective();
55         assertNotNull(result);
56
57         Module module = result.findModule("identity-test").get();
58         Collection<? extends IdentitySchemaNode> identities = module.getIdentities();
59
60         assertNotNull(identities);
61         assertEquals(4, identities.size());
62
63         IdentitySchemaNode root = null;
64         IdentitySchemaNode child1 = null;
65         IdentitySchemaNode child2 = null;
66         IdentitySchemaNode child12 = null;
67         for (IdentitySchemaNode identitySchemaNode : identities) {
68             switch (identitySchemaNode.getQName().getLocalName()) {
69                 case "root-identity":
70                     root = identitySchemaNode;
71                     break;
72                 case "child-identity-1":
73                     child1 = identitySchemaNode;
74                     break;
75                 case "child-identity-2":
76                     child2 = identitySchemaNode;
77                     break;
78                 case "child-identity-1-2":
79                     child12 = identitySchemaNode;
80                     break;
81                 default:
82                     break;
83             }
84         }
85
86         assertNotNull(root);
87         assertNotNull(child1);
88         assertNotNull(child2);
89         assertNotNull(child12);
90
91         assertTrue(root.getBaseIdentities().isEmpty());
92
93         Collection<? extends IdentitySchemaNode> rootDerivedIdentities = result.getDerivedIdentities(root);
94         assertEquals(2, rootDerivedIdentities.size());
95
96         assertTrue(rootDerivedIdentities.contains(child1));
97         assertTrue(rootDerivedIdentities.contains(child2));
98         assertFalse(rootDerivedIdentities.contains(child12));
99         assertFalse(child1.equals(child2));
100
101         assertTrue(root == Iterables.getOnlyElement(child1.getBaseIdentities()));
102         assertTrue(root == Iterables.getOnlyElement(child2.getBaseIdentities()));
103
104         assertEquals(0, result.getDerivedIdentities(child2).size());
105
106         Collection<? extends IdentitySchemaNode> child1DerivedIdentities = result.getDerivedIdentities(child1);
107         assertEquals(1, child1DerivedIdentities.size());
108         assertTrue(child1DerivedIdentities.contains(child12));
109         assertFalse(child1DerivedIdentities.contains(child1));
110
111         assertTrue(child1 == Iterables.getOnlyElement(child12.getBaseIdentities()));
112         assertTrue(child12 == child1DerivedIdentities.iterator().next());
113     }
114 }