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.ArrayList;
15 import java.util.Date;
16 import java.util.HashSet;
17 import java.util.List;
20 import org.junit.Before;
21 import org.junit.Test;
22 import org.mockito.Mock;
23 import org.mockito.MockitoAnnotations;
24 import org.opendaylight.controller.yang.common.QName;
25 import org.opendaylight.controller.yang.model.api.AugmentationSchema;
26 import org.opendaylight.controller.yang.model.api.GroupingDefinition;
27 import org.opendaylight.controller.yang.model.api.ListSchemaNode;
28 import org.opendaylight.controller.yang.model.api.SchemaPath;
29 import org.opendaylight.controller.yang.model.api.Status;
30 import org.opendaylight.controller.yang.model.api.TypeDefinition;
31 import org.opendaylight.controller.yang.model.api.UsesNode;
32 import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
33 import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
35 public class ListSchemaNodeBuilderTest {
37 private ListSchemaNodeBuilder tested;
39 private static final String NAME = "test-list";
41 private final URI namespace = URI.create("test:list.name");
42 private final Date revision = new Date();
43 private final String prefix = "x";
45 private SchemaPath schemaPath;
46 private final String description = "description of list";
47 private final String reference = "reference";
49 private QName typedefQName;
50 private TypedefBuilder typeBuilder;
52 private AugmentationSchema augment;
54 private UsesNodeBuilder usesBuilder;
56 private UsesNode uses;
58 private GroupingBuilder groupingBuilder;
60 private GroupingDefinition grouping;
61 private List<QName> keyDefinition;
65 MockitoAnnotations.initMocks(this);
66 when(usesBuilder.build()).thenReturn(uses);
67 when(groupingBuilder.build()).thenReturn(grouping);
69 schemaPath = TestUtils.createSchemaPath(true, namespace, "main", NAME);
70 typedefQName = new QName(namespace, "test-type");
71 typeBuilder = new TypedefBuilder(typedefQName);
73 keyDefinition = new ArrayList<QName>();
74 keyDefinition.add(new QName(namespace, "name"));
76 QName qname = new QName(namespace, revision, prefix, NAME);
77 tested = new ListSchemaNodeBuilder(qname);
82 tested.addTypedef(typeBuilder);
83 tested.setPath(schemaPath);
84 tested.setDescription(description);
85 tested.setReference(reference);
86 tested.setStatus(Status.OBSOLETE);
87 tested.setConfiguration(false);
88 tested.addUsesNode(usesBuilder);
89 tested.addAugmentation(augment);
90 tested.setUserOrdered(true);
91 tested.setKeyDefinition(keyDefinition);
93 ListSchemaNode result = tested.build();
95 Set<TypeDefinition<?>> expectedTypedefs = result.getTypeDefinitions();
96 assertEquals(1, expectedTypedefs.size());
97 assertEquals(typedefQName, expectedTypedefs.iterator().next()
100 Set<AugmentationSchema> expectedAugments = new HashSet<AugmentationSchema>();
101 expectedAugments.add(augment);
102 assertEquals(expectedAugments, result.getAvailableAugmentations());
104 assertEquals(schemaPath, result.getPath());
105 assertEquals(description, result.getDescription());
106 assertEquals(reference, result.getReference());
107 assertEquals(Status.OBSOLETE, result.getStatus());
108 assertFalse(result.isConfiguration());
110 Set<UsesNode> expectedUses = new HashSet<UsesNode>();
111 expectedUses.add(uses);
112 assertEquals(expectedUses, result.getUses());
114 assertTrue(result.isUserOrdered());
115 assertEquals(keyDefinition, result.getKeyDefinition());