Initial opendaylight infrastructure commit!!
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / test / java / org / opendaylight / controller / model / parser / builder / ListSchemaNodeBuilderTest.java
1 /*\r
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.controller.model.parser.builder;\r
9 \r
10 import static org.junit.Assert.*;\r
11 import static org.mockito.Mockito.when;\r
12 \r
13 import java.net.URI;\r
14 import java.util.ArrayList;\r
15 import java.util.Date;\r
16 import java.util.HashSet;\r
17 import java.util.List;\r
18 import java.util.Set;\r
19 \r
20 import org.junit.Before;\r
21 import org.junit.Test;\r
22 import org.mockito.Mock;\r
23 import org.mockito.MockitoAnnotations;\r
24 import org.opendaylight.controller.model.parser.api.GroupingBuilder;\r
25 import org.opendaylight.controller.model.parser.api.UsesNodeBuilder;\r
26 import org.opendaylight.controller.yang.common.QName;\r
27 import org.opendaylight.controller.yang.model.api.AugmentationSchema;\r
28 import org.opendaylight.controller.yang.model.api.ConstraintDefinition;\r
29 import org.opendaylight.controller.yang.model.api.GroupingDefinition;\r
30 import org.opendaylight.controller.yang.model.api.ListSchemaNode;\r
31 import org.opendaylight.controller.yang.model.api.MustDefinition;\r
32 import org.opendaylight.controller.yang.model.api.SchemaPath;\r
33 import org.opendaylight.controller.yang.model.api.Status;\r
34 import org.opendaylight.controller.yang.model.api.TypeDefinition;\r
35 import org.opendaylight.controller.yang.model.api.UsesNode;\r
36 \r
37 \r
38 public class ListSchemaNodeBuilderTest {\r
39 \r
40         private ListSchemaNodeBuilder tested;\r
41 \r
42         private static final String NAME = "test-list";\r
43 \r
44         private final URI namespace = URI.create("test:list.name");\r
45         private final Date revision = new Date();\r
46         private final String prefix = "x";\r
47 \r
48         private SchemaPath schemaPath;\r
49         private final String description = "description of list";\r
50         private final String reference = "reference";\r
51 \r
52         private QName typedefQName;\r
53         private TypedefBuilder typeBuilder;\r
54         @Mock private AugmentationSchema augment;\r
55         @Mock private ConstraintDefinition constraint;\r
56         @Mock private UsesNodeBuilder usesBuilder;\r
57         @Mock private UsesNode uses;\r
58         @Mock private MustDefinitionBuilder mustBuilder;\r
59         @Mock private MustDefinition must;\r
60         @Mock private GroupingBuilder groupingBuilder;\r
61         @Mock private GroupingDefinition grouping;\r
62         private List<QName> keyDefinition;\r
63 \r
64         @Before\r
65         public void init() {\r
66                 MockitoAnnotations.initMocks(this);\r
67                 when(usesBuilder.build()).thenReturn(uses);\r
68                 when(mustBuilder.build()).thenReturn(must);\r
69                 when(groupingBuilder.build()).thenReturn(grouping);\r
70 \r
71                 schemaPath = TestUtils.createSchemaPath(true, namespace, "main", NAME);\r
72                 typedefQName = new QName(namespace, "test-type");\r
73                 typeBuilder = new TypedefBuilder(typedefQName);\r
74 \r
75                 keyDefinition = new ArrayList<QName>();\r
76                 keyDefinition.add(new QName(namespace, "name"));\r
77 \r
78                 QName qname = new QName(namespace, revision, prefix, NAME);\r
79                 tested = new ListSchemaNodeBuilder(qname);\r
80         }\r
81 \r
82         @Test\r
83         public void test() {\r
84                 tested.addTypedef(typeBuilder);\r
85                 tested.setPath(schemaPath);\r
86                 tested.setDescription(description);\r
87                 tested.setReference(reference);\r
88                 tested.setStatus(Status.OBSOLOTE);\r
89                 tested.setConfiguration(false);\r
90                 tested.setConstraints(constraint);\r
91                 tested.addUsesNode(usesBuilder);\r
92                 tested.addAugmentation(augment);\r
93                 tested.setUserOrdered(true);\r
94                 tested.setKeyDefinition(keyDefinition);\r
95 \r
96                 ListSchemaNode result = tested.build();\r
97 \r
98                 Set<TypeDefinition<?>> expectedTypedefs = result.getTypeDefinitions();\r
99                 assertEquals(1, expectedTypedefs.size());\r
100                 assertEquals(typedefQName, expectedTypedefs.iterator().next().getQName());\r
101 \r
102                 Set<AugmentationSchema> expectedAugments = new HashSet<AugmentationSchema>();\r
103                 expectedAugments.add(augment);\r
104                 assertEquals(expectedAugments, result.getAvailableAugmentations());\r
105 \r
106                 assertEquals(schemaPath, result.getPath());\r
107                 assertEquals(description, result.getDescription());\r
108                 assertEquals(reference, result.getReference());\r
109                 assertEquals(Status.OBSOLOTE, result.getStatus());\r
110                 assertFalse(result.isConfiguration());\r
111                 assertEquals(constraint, result.getConstraints());\r
112 \r
113                 Set<UsesNode> expectedUses = new HashSet<UsesNode>();\r
114                 expectedUses.add(uses);\r
115                 assertEquals(expectedUses, result.getUses());\r
116 \r
117                 assertTrue(result.isUserOrdered());\r
118                 assertEquals(keyDefinition, result.getKeyDefinition());\r
119         }\r
120 \r
121 }\r