d245037d9926c4e894712a9932b95bd545051b68
[yangtools.git] / model / yang-model-util / src / test / java / org / opendaylight / yangtools / yang / model / util / YT1100Test.java
1 /*
2  * Copyright (c) 2020 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.yangtools.yang.model.util;
9
10 import static org.junit.jupiter.api.Assertions.assertEquals;
11 import static org.junit.jupiter.api.Assertions.assertInstanceOf;
12
13 import org.junit.jupiter.api.Test;
14 import org.opendaylight.yangtools.yang.common.QName;
15 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
16 import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition;
17 import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
18 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
19
20 class YT1100Test {
21     @Test
22     void testChoiceCaseRelativeLeafref() {
23         final var context = YangParserTestUtils.parseYangResource("/yt1100.yang");
24         final var module = context.findModule("yt1100").orElseThrow();
25         final var qnm = module.getQNameModule();
26         final var foo = QName.create(qnm, "foo");
27         final var schedulerNode = QName.create(qnm, "scheduler-node");
28         final var childSchedulerNodes = QName.create(qnm, "child-scheduler-nodes");
29         final var name = QName.create(qnm, "name");
30         final var leaf = assertInstanceOf(LeafSchemaNode.class,
31             module.findDataTreeChild(foo, schedulerNode, childSchedulerNodes, name).orElseThrow());
32         final var leafref = assertInstanceOf(LeafrefTypeDefinition.class, leaf.getType()).getPathStatement();
33
34         final var resolvedLeafRef = assertInstanceOf(LeafSchemaNode.class,
35             SchemaInferenceStack.ofDataTreePath(context, foo, schedulerNode, childSchedulerNodes, name)
36                 .resolvePathExpression(leafref));
37         assertEquals(QName.create(qnm, "name"), resolvedLeafRef.getQName());
38         assertInstanceOf(StringTypeDefinition.class, resolvedLeafRef.getType());
39     }
40 }