59b965c56a860bda63c5eda4f8964a12bc2efdd5
[yangtools.git] / yang / yang-parser-impl / src / test / java / org / opendaylight / yangtools / yang / parser / builder / impl / RpcDefinitionBuilderTest.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
3  * This program and the accompanying materials are made available under the
4  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
5  * and is available at http://www.eclipse.org/legal/epl-v10.html
6  */
7 package org.opendaylight.yangtools.yang.parser.builder.impl;
8
9 import static org.junit.Assert.assertEquals;
10 import static org.junit.Assert.assertFalse;
11 import static org.junit.Assert.assertNotEquals;
12 import static org.junit.Assert.assertNotNull;
13 import static org.junit.Assert.assertNull;
14 import static org.junit.Assert.assertTrue;
15 import org.junit.Test;
16 import org.opendaylight.yangtools.yang.common.QName;
17 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
18 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
19 import org.opendaylight.yangtools.yang.model.api.Status;
20 import org.opendaylight.yangtools.yang.model.util.Uint16;
21 import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder;
22 import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder;
23 import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder;
24 /**
25  * Test suite for increasing of test coverage of RpcDefinitionBuilder implementation.
26  *
27  * @see org.opendaylight.yangtools.yang.parser.builder.impl.RpcDefinitionBuilder
28  *
29  * @author Lukas Sedlak <lsedlak@cisco.com>
30  */
31 public class RpcDefinitionBuilderTest extends AbstractBuilderTest {
32
33     @Test
34     public void testBuild() {
35         final QName rpcQName = QName.create(module.getNamespace(), module.getRevision(), "send-message");
36         SchemaPath rpcPath = SchemaPath.create(true, rpcQName);
37         final RpcDefinitionBuilder rpcBuilder = new RpcDefinitionBuilder(module.getModuleName(), 10, rpcQName, rpcPath);
38
39         final QName testTypedef = QName.create(module.getNamespace(), module.getRevision(), "test-typedef");
40         final SchemaPath testTypedefPath = SchemaPath.create(true, rpcQName, testTypedef);
41         final TypeDefinitionBuilder typedefBuilder = new TypeDefinitionBuilderImpl(module.getModuleName(),
42             12, testTypedef, testTypedefPath);
43         typedefBuilder.setType(Uint16.getInstance());
44
45         rpcBuilder.addTypedef(typedefBuilder);
46
47         final QName testGroup = QName.create(module.getNamespace(), module.getRevision(), "test-group");
48         final SchemaPath groupPath = SchemaPath.create(true, rpcQName, testGroup);
49         final GroupingBuilder groupBuilder = new GroupingBuilderImpl(module.getModuleName(), 15, testGroup, groupPath);
50
51         rpcBuilder.addGrouping(groupBuilder);
52
53         final QName unknownNode = QName.create(module.getNamespace(), module.getRevision(), "unknown-ext-use");
54         final SchemaPath unknownNodePath = SchemaPath.create(true, rpcQName, unknownNode);
55         final UnknownSchemaNodeBuilder unknownNodeBuilder =  new UnknownSchemaNodeBuilderImpl(module.getModuleName(),
56             25, unknownNode, unknownNodePath);
57
58         rpcBuilder.addUnknownNodeBuilder(unknownNodeBuilder);
59
60         final RpcDefinitionBuilder rpcBuilder2 = new RpcDefinitionBuilder(module.getModuleName(), 10, rpcQName, rpcPath);
61         final RpcDefinitionBuilder rpcBuilder3 = new RpcDefinitionBuilder(module.getModuleName(), 10, unknownNode, rpcPath);
62         final RpcDefinitionBuilder rpcBuilder4 = new RpcDefinitionBuilder(module.getModuleName(), 10, rpcQName, unknownNodePath);
63
64         assertEquals(rpcBuilder, rpcBuilder2);
65         assertNotEquals(rpcBuilder, null);
66         assertNotEquals(rpcBuilder, rpcBuilder3);
67         assertNotEquals(rpcBuilder, rpcBuilder4);
68
69         assertEquals(rpcBuilder.toString(), "rpc send-message");
70
71         final RpcDefinition instance = rpcBuilder.build();
72
73         assertNotNull(instance);
74
75         final RpcDefinition sameInstance = rpcBuilder.build();
76         assertTrue(sameInstance == instance);
77         assertEquals(sameInstance, instance);
78
79         assertEquals(instance.getPath(), rpcPath);
80         assertEquals(instance.getStatus(), Status.CURRENT);
81         assertNull(instance.getOutput());
82         assertFalse(instance.getTypeDefinitions().isEmpty());
83         assertFalse(instance.getGroupings().isEmpty());
84         assertFalse(instance.getUnknownSchemaNodes().isEmpty());
85
86         assertEquals(instance.getTypeDefinitions().size(), 1);
87         assertEquals(instance.getGroupings().size(), 1);
88         assertEquals(instance.getUnknownSchemaNodes().size(), 1);
89
90         RpcDefinition instance2 = rpcBuilder2.build();
91         RpcDefinition instance3 = rpcBuilder3.build();
92         RpcDefinition instance4 = rpcBuilder4.build();
93
94         assertEquals(instance, instance2);
95         assertNotEquals(instance, null);
96         assertNotEquals(instance, instance3);
97         assertNotEquals(instance, instance4);
98
99         assertEquals(instance.toString(), "RpcDefinitionImpl[qname=(urn:opendaylight.rpc:def:test-model?" +
100             "revision=2014-01-06)send-message, path=AbsoluteSchemaPath{path=[(urn:opendaylight.rpc:def:test-model?" +
101             "revision=2014-01-06)send-message]}, input=null, output=null]");
102     }
103 }