2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.controller.yang.model.parser.builder.impl;
10 import static org.junit.Assert.*;
11 import static org.mockito.Mockito.when;
14 import java.util.Date;
15 import java.util.HashSet;
18 import org.junit.Before;
19 import org.junit.Test;
20 import org.mockito.Mock;
21 import org.mockito.MockitoAnnotations;
22 import org.opendaylight.controller.yang.common.QName;
23 import org.opendaylight.controller.yang.model.api.AugmentationSchema;
24 import org.opendaylight.controller.yang.model.api.ContainerSchemaNode;
25 import org.opendaylight.controller.yang.model.api.GroupingDefinition;
26 import org.opendaylight.controller.yang.model.api.SchemaPath;
27 import org.opendaylight.controller.yang.model.api.Status;
28 import org.opendaylight.controller.yang.model.api.TypeDefinition;
29 import org.opendaylight.controller.yang.model.api.UsesNode;
30 import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
31 import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
33 public class ContainerSchemaNodeBuilderTest {
35 private ContainerSchemaNodeBuilder tested;
37 private final String NAME = "test-container";
39 private final URI namespace = URI.create("test:container.name");
40 private final Date revision = new Date();
41 private final String prefix = "x";
43 private SchemaPath schemaPath;
44 private final String description = "description of container";
45 private final String reference = "reference";
47 private QName typedefQName;
48 private TypedefBuilder typeBuilder;
50 private AugmentationSchema augment;
52 private UsesNodeBuilder usesBuilder;
54 private UsesNode uses;
56 private GroupingBuilder groupingBuilder;
58 private GroupingDefinition grouping;
62 MockitoAnnotations.initMocks(this);
63 when(usesBuilder.build()).thenReturn(uses);
64 when(groupingBuilder.build()).thenReturn(grouping);
66 schemaPath = TestUtils.createSchemaPath(true, namespace, "main",
68 typedefQName = new QName(namespace, "test-type");
69 typeBuilder = new TypedefBuilder(typedefQName);
71 QName qname = new QName(namespace, revision, prefix, NAME);
72 tested = new ContainerSchemaNodeBuilder(qname);
77 tested.addTypedef(typeBuilder);
78 tested.setPath(schemaPath);
79 tested.setDescription(description);
80 tested.setReference(reference);
81 tested.setStatus(Status.OBSOLETE);
82 tested.setConfiguration(false);
83 tested.addUsesNode(usesBuilder);
84 tested.addAugmentation(augment);
85 tested.setPresenceContainer(true);
87 ContainerSchemaNode result = tested.build();
89 Set<TypeDefinition<?>> expectedTypedefs = result.getTypeDefinitions();
90 assertEquals(1, expectedTypedefs.size());
91 assertEquals(typedefQName, expectedTypedefs.iterator().next()
94 Set<AugmentationSchema> expectedAugments = new HashSet<AugmentationSchema>();
95 expectedAugments.add(augment);
96 assertEquals(expectedAugments, result.getAvailableAugmentations());
98 assertEquals(schemaPath, result.getPath());
99 assertEquals(description, result.getDescription());
100 assertEquals(reference, result.getReference());
101 assertEquals(Status.OBSOLETE, result.getStatus());
102 assertFalse(result.isConfiguration());
104 Set<UsesNode> expectedUses = new HashSet<UsesNode>();
105 expectedUses.add(uses);
106 assertEquals(expectedUses, result.getUses());
108 assertTrue(result.isPresenceContainer());