fe4f0a2452f79e74b53cef3176b02d78b42ffdb4
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / test / java / org / opendaylight / controller / yang / model / validator / YangModelValidationSubModuleTest.java
1 /*
2  * Copyright (c) 2013 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.controller.yang.model.validator;
9
10 import static org.junit.Assert.*;
11 import static org.junit.matchers.JUnitMatchers.*;
12 import static org.mockito.Mockito.*;
13
14 import org.antlr.v4.runtime.tree.ParseTree;
15 import org.junit.Before;
16 import org.junit.Test;
17 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Belongs_to_stmtContext;
18 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Submodule_header_stmtsContext;
19 import org.opendaylight.controller.antlrv4.code.gen.YangParser.Submodule_stmtContext;
20 import org.opendaylight.controller.yang.model.parser.util.YangValidationException;
21
22 public class YangModelValidationSubModuleTest {
23
24     private YangModelBasicValidationListener valid;
25
26     @Before
27     public void setUp() {
28         valid = new YangModelBasicValidationListener();
29     }
30
31     @Test(expected = YangValidationException.class)
32     public void testNoRevision() {
33
34         Submodule_stmtContext ctx = YangModelValidationTest.mockStatement(
35                 Submodule_stmtContext.class, "submodule1");
36
37         try {
38             valid.enterSubmodule_stmt(ctx);
39         } catch (YangValidationException e) {
40             assertThat(
41                     e.getMessage(),
42                     containsString("Missing Submodule-header statement in Submodule:submodule"));
43             throw e;
44         }
45     }
46
47     @Test(expected = YangValidationException.class)
48     public void testNoBelongsTo() {
49         Submodule_header_stmtsContext header = mock(Submodule_header_stmtsContext.class);
50         mockSubmoduleParent(header, "submodule");
51
52         try {
53             valid.enterSubmodule_header_stmts(header);
54         } catch (YangValidationException e) {
55             assertThat(
56                     e.getMessage(),
57                     containsString("Missing Belongs-to statement in Submodule-header:"));
58             throw e;
59         }
60     }
61
62     @Test(expected = YangValidationException.class)
63     public void testBelongsToNoPrefix() {
64         Belongs_to_stmtContext belongsTo = YangModelValidationTest
65                 .mockStatement(Belongs_to_stmtContext.class, "supermodule");
66
67         mockSubmoduleParent(belongsTo, "submodule");
68
69         try {
70             valid.enterBelongs_to_stmt(belongsTo);
71         } catch (YangValidationException e) {
72             assertThat(
73                     e.getMessage(),
74                     containsString("Missing Prefix statement in Belongs-to:supermodule"));
75             throw e;
76         }
77     }
78
79     private Submodule_stmtContext mockSubmoduleParent(ParseTree child,
80             String moduleName) {
81         Submodule_stmtContext ctx = YangModelValidationTest.mockStatement(
82                 Submodule_stmtContext.class, moduleName);
83         YangModelValidationTest.addChild(ctx, child);
84         return ctx;
85     }
86 }