bc4aceadf5aa87dc549859e8fd7c151fb289ddfa
[yangtools.git] / model / yang-model-util / src / test / java / org / opendaylight / yangtools / yang / model / util / YT588Test.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. 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.assertInstanceOf;
11
12 import org.junit.jupiter.api.Test;
13 import org.opendaylight.yangtools.yang.common.QName;
14 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
15 import org.opendaylight.yangtools.yang.model.api.PathExpression;
16 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
17 import org.opendaylight.yangtools.yang.model.api.TypedDataSchemaNode;
18 import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition;
19 import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition;
20 import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition;
21 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
22
23 class YT588Test {
24     private static final String NS = "foo";
25     private static final String REV = "2016-03-01";
26
27     @Test
28     void test() {
29         final var context = YangParserTestUtils.parseYangResource("/yt588.yang");
30         final var root = QName.create(NS, REV, "root");
31         final var leafRef2 = QName.create(NS, REV, "leaf-ref-2");
32         final var conGrp = QName.create(NS, REV, "con-grp");
33         final var leafRef = QName.create(NS, REV, "leaf-ref");
34
35         assertResolvedTypeDefinition(BinaryTypeDefinition.class,
36             SchemaInferenceStack.ofDataTreePath(context, root, conGrp, leafRef),
37             assertInstanceOf(LeafrefTypeDefinition.class,
38                 assertInstanceOf(LeafSchemaNode.class, context.findDataTreeChild(root, conGrp, leafRef).orElseThrow())
39                     .getType()).getPathStatement());
40
41         assertResolvedTypeDefinition(Int16TypeDefinition.class,
42             SchemaInferenceStack.ofDataTreePath(context, root, leafRef2),
43             assertInstanceOf(LeafrefTypeDefinition.class,
44                 assertInstanceOf(LeafSchemaNode.class, context.findDataTreeChild(root, leafRef2).orElseThrow())
45                     .getType()).getPathStatement());
46     }
47
48     private static void assertResolvedTypeDefinition(final Class<? extends TypeDefinition<?>> expectedType,
49             final SchemaInferenceStack stack, final PathExpression expression) {
50         final var typed = assertInstanceOf(TypedDataSchemaNode.class, stack.resolvePathExpression(expression));
51         assertInstanceOf(expectedType, typed.getType());
52     }
53 }