2 * Copyright (c) 2023 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.generator.impl;
10 import static org.junit.jupiter.api.Assertions.assertEquals;
11 import static org.junit.jupiter.api.Assertions.assertInstanceOf;
13 import java.util.Arrays;
15 import java.util.stream.Collectors;
16 import org.junit.jupiter.api.Test;
17 import org.opendaylight.mdsal.binding.model.api.JavaTypeName;
18 import org.opendaylight.mdsal.binding.runtime.api.BindingRuntimeTypes;
19 import org.opendaylight.mdsal.binding.runtime.api.GroupingRuntimeType;
20 import org.opendaylight.mdsal.binding.runtime.api.RuntimeType;
21 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
24 private static final BindingRuntimeTypes RUNTIME_TYPES = new DefaultBindingRuntimeGenerator()
25 .generateTypeMapping(YangParserTestUtils.parseYangResource("/mdsal669.yang"));
29 assertInstances(JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "Bar"),
30 JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "Foo"),
31 JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "Target1"),
32 JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev.used.augmented", "ToBeAugmented1"),
33 JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev.used.augmented.indirect",
38 void bazIsUsedByOneAndTwo() {
39 assertInstances(JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "Baz"),
40 JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "One"),
41 JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "Two"));
45 void unusedIsNotUsed() {
46 assertInstances(JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "Unused"));
50 void fooAsStringIsNotUsed() {
51 assertInstances(JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "FooAsString"));
55 void unusedBarIsNotUsed() {
56 assertInstances(JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "UnusedBar"));
60 void unusedAugmendIsNotUsed() {
61 assertInstances(JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "UnusedAugmented"));
65 void unusedIntermediateAugmentedIsNotUsed() {
67 JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "UnusedIntermediateAugmentedUser"));
69 JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "UnusedIntermediateAugmented"));
73 void usedAugmentedIndirectIsUsed() {
74 assertInstances(JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "UsedAugmentedIndirectGrp"),
75 JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "UsedAugmentedIndirectUser"));
76 assertInstances(JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "UsedAugmentedIndirect"),
77 JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "UsedAugmentedIndirectUser"));
81 void usedAugmentedIsUsed() {
82 assertInstances(JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "UsedAugmented"),
83 JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "UsedAugmentedUser"));
87 void toBeAugmentedIsUsed() {
88 assertInstances(JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "ToBeAugmented"),
89 JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "UsedAugmentedIndirectUser"),
90 JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal669.norev", "UsedAugmentedUser"));
93 private static void assertInstances(final JavaTypeName groupingTypeName, final JavaTypeName... instanceTypeNames) {
95 Arrays.stream(instanceTypeNames).map(Mdsal669Test::assertType).collect(Collectors.toSet()),
96 Set.copyOf(assertGrouping(groupingTypeName).instantiations()));
99 private static GroupingRuntimeType assertGrouping(final JavaTypeName typeName) {
100 return assertInstanceOf(GroupingRuntimeType.class, assertType(typeName));
103 private static RuntimeType assertType(final JavaTypeName typeName) {
104 return RUNTIME_TYPES.findSchema(typeName).orElseThrow();