2 * Copyright (c) 2022 PANTHEON.tech, s.r.o. 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.mdsal.binding.java.api.generator;
10 import static org.junit.Assert.assertFalse;
11 import static org.junit.Assert.assertTrue;
12 import static org.mockito.Mockito.doReturn;
14 import org.junit.BeforeClass;
15 import org.junit.Test;
16 import org.junit.runner.RunWith;
17 import org.mockito.Mock;
18 import org.mockito.junit.MockitoJUnitRunner;
19 import org.opendaylight.mdsal.binding.model.api.GeneratedType;
20 import org.opendaylight.mdsal.binding.model.api.YangSourceDefinition;
21 import org.opendaylight.yangtools.yang.common.QName;
22 import org.opendaylight.yangtools.yang.common.Revision;
23 import org.opendaylight.yangtools.yang.common.XMLNamespace;
24 import org.opendaylight.yangtools.yang.model.api.Module;
25 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
27 @RunWith(MockitoJUnitRunner.StrictStubs.class)
28 public class PresenceContainerTest {
29 private static final QName DIRECTORY_QNAME = QName.create("urn:opendaylight:presence-container",
30 "2022-03-17", "directory");
31 private static final QName USER_QNAME = QName.create("urn:opendaylight:presence-container",
32 "2022-03-17", "user");
33 private static final QName SCP_QNAME = QName.create("urn:opendaylight:presence-container",
35 private static final QName DATA_QNAME = QName.create("urn:opendaylight:presence-container",
36 "2022-03-17", "data");
38 private static Module module;
44 public static void beforeClass() {
45 final var context = YangParserTestUtils.parseYangResource("/presence-container.yang");
46 module = context.findModule(XMLNamespace.of("urn:opendaylight:presence-container"), Revision.of("2022-03-17"))
51 * Test that type which is NOT container is NOT recognized as non-presence container.
54 public void nonContainerIsNonPresenceContainerTest() {
55 final var userList = module.findDataTreeChild(DIRECTORY_QNAME, USER_QNAME).orElseThrow();
56 final var definition = YangSourceDefinition.of(module, userList);
57 doReturn(definition).when(type).getYangSourceDefinition();
58 assertFalse(GeneratorUtil.isNonPresenceContainer(type));
62 * Test that presence container is NOT recognized as non-presence container.
65 public void presenceContainerIsNonPresenceContainerTest() {
66 final var scpContainer = module.findDataTreeChild(DIRECTORY_QNAME, SCP_QNAME).orElseThrow();
67 final var definition = YangSourceDefinition.of(module, scpContainer);
68 doReturn(definition).when(type).getYangSourceDefinition();
69 assertFalse(GeneratorUtil.isNonPresenceContainer(type));
73 * Test that non-presence container IS recognized as non-presence container.
76 public void nonPresenceContainerIsNonPresenceContainerTest() {
77 final var dataContainer = module.findDataTreeChild(DIRECTORY_QNAME, DATA_QNAME).orElseThrow();
78 final var definition = YangSourceDefinition.of(module, dataContainer);
79 doReturn(definition).when(type).getYangSourceDefinition();
80 assertTrue(GeneratorUtil.isNonPresenceContainer(type));