Fix leafref-to-enum encoding
[mdsal.git] / binding / mdsal-binding-generator-impl / src / test / java / org / opendaylight / mdsal / binding / generator / impl / Mdsal552Test.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.mdsal.binding.generator.impl;
9
10 import static org.hamcrest.CoreMatchers.instanceOf;
11 import static org.hamcrest.MatcherAssert.assertThat;
12 import static org.junit.Assert.assertEquals;
13 import static org.junit.Assert.assertNotNull;
14
15 import java.util.List;
16 import org.junit.Test;
17 import org.opendaylight.mdsal.binding.model.api.GeneratedType;
18 import org.opendaylight.mdsal.binding.model.api.JavaTypeName;
19 import org.opendaylight.mdsal.binding.model.api.MethodSignature;
20 import org.opendaylight.mdsal.binding.model.api.Type;
21 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
22
23 public class Mdsal552Test {
24     private static final JavaTypeName BAR_INPUT =
25             JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal552.norev", "BarInput");
26     private static final JavaTypeName BAZ =
27             JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal552.norev", "Baz");
28     private static final JavaTypeName ENUMERATION =
29             JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal552.norev", "Mdsal552Data").createEnclosed("Foo");
30
31     @Test
32     public void enumLeafrefTest() {
33         final List<Type> types = new BindingGeneratorImpl().generateTypes(
34                 YangParserTestUtils.parseYangResource("/mdsal552.yang"));
35         assertNotNull(types);
36         assertEquals(5, types.size());
37
38         final Type baz = types.stream()
39                 .filter(type -> BAZ.equals(type.getIdentifier()))
40                 .findFirst().orElseThrow();
41         assertThat(baz, instanceOf(GeneratedType.class));
42         final MethodSignature bazGetRef = ((GeneratedType) baz).getMethodDefinitions().stream()
43                 .filter(method -> method.getName().equals("getRef"))
44                 .findFirst().orElseThrow();
45         assertEquals(ENUMERATION, bazGetRef.getReturnType().getIdentifier());
46
47         final Type input = types.stream()
48                 .filter(type -> BAR_INPUT.equals(type.getIdentifier()))
49                 .findFirst().orElseThrow();
50         assertThat(input, instanceOf(GeneratedType.class));
51         final MethodSignature inputGetRef = ((GeneratedType) input).getMethodDefinitions().stream()
52                 .filter(method -> method.getName().equals("getRef"))
53                 .findFirst().orElseThrow();
54         assertEquals(ENUMERATION, inputGetRef.getReturnType().getIdentifier());
55     }
56 }