f578d7327487f24c3a3e4f8363a10af23f1daab1
[yangtools.git] / binding / binding-codegen / src / test / java / org / opendaylight / mdsal / binding / java / api / generator / PresenceContainerTest.java
1 /*
2  * Copyright (c) 2022 PANTHEON.tech, s.r.o. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.mdsal.binding.java.api.generator;
9
10 import static org.junit.Assert.assertFalse;
11 import static org.junit.Assert.assertTrue;
12 import static org.mockito.Mockito.doReturn;
13
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;
26
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",
34             "2022-03-17", "scp");
35     private static final QName DATA_QNAME = QName.create("urn:opendaylight:presence-container",
36             "2022-03-17", "data");
37
38     private static Module module;
39
40     @Mock
41     GeneratedType type;
42
43     @BeforeClass
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"))
47                 .orElseThrow();
48     }
49
50     /**
51      * Test that type which is NOT container is NOT recognized as non-presence container.
52      */
53     @Test
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));
59     }
60
61     /**
62      * Test that presence container is NOT recognized as non-presence container.
63      */
64     @Test
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));
70     }
71
72     /**
73      * Test that non-presence container IS recognized as non-presence container.
74      */
75     @Test
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));
81     }
82 }