Pick up byte-buddy from yangtools
[mdsal.git] / binding / mdsal-binding-dom-codec / src / test / java / org / opendaylight / mdsal / binding / dom / codec / impl / ActionSerializeDeserializeTest.java
1 /*
2  * Copyright (c) 2018 Pantheon Technologies 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.dom.codec.impl;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.opendaylight.yangtools.yang.common.YangConstants.operationInputQName;
12 import static org.opendaylight.yangtools.yang.common.YangConstants.operationOutputQName;
13
14 import org.eclipse.jdt.annotation.NonNull;
15 import org.junit.Test;
16 import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.cont.Foo;
17 import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.cont.FooInput;
18 import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.cont.FooInputBuilder;
19 import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.cont.FooOutput;
20 import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.cont.FooOutputBuilder;
21 import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.grp.BarInput;
22 import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.grp.BarInputBuilder;
23 import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.grp.BarOutput;
24 import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.grp.BarOutputBuilder;
25 import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.grpcont.Bar;
26 import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.lstio.Fooio;
27 import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.lstio.FooioInput;
28 import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.lstio.FooioInputBuilder;
29 import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.lstio.FooioOutput;
30 import org.opendaylight.yang.gen.v1.urn.odl.actions.norev.lstio.FooioOutputBuilder;
31 import org.opendaylight.yangtools.yang.common.QName;
32 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
33 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
34 import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
35
36 public class ActionSerializeDeserializeTest extends AbstractBindingCodecTest {
37     private static final NodeIdentifier FOO_INPUT = NodeIdentifier.create(operationInputQName(Foo.QNAME.getModule()));
38     private static final NodeIdentifier FOO_OUTPUT = NodeIdentifier.create(operationOutputQName(Foo.QNAME.getModule()));
39     private static final NodeIdentifier FOO_XYZZY = NodeIdentifier.create(QName.create(Foo.QNAME, "xyzzy"));
40     private static final @NonNull ContainerNode DOM_FOO_INPUT = ImmutableNodes.newContainerBuilder()
41         .withNodeIdentifier(FOO_INPUT)
42         .withChild(ImmutableNodes.leafNode(FOO_XYZZY, "xyzzy"))
43         .build();
44     private static final @NonNull ContainerNode DOM_FOO_OUTPUT = ImmutableNodes.newContainerBuilder()
45         .withNodeIdentifier(FOO_OUTPUT)
46         .build();
47     private static final @NonNull FooInput BINDING_FOO_INPUT = new FooInputBuilder().setXyzzy("xyzzy").build();
48     private static final @NonNull FooOutput BINDING_FOO_OUTPUT = new FooOutputBuilder().build();
49
50     private static final NodeIdentifier BAR_INPUT = NodeIdentifier.create(operationInputQName(Foo.QNAME.getModule()));
51     private static final NodeIdentifier BAR_OUTPUT = NodeIdentifier.create(operationOutputQName(Foo.QNAME.getModule()));
52     private static final NodeIdentifier BAR_XYZZY = NodeIdentifier.create(QName.create(Bar.QNAME, "xyzzy"));
53     private static final ContainerNode DOM_BAR_INPUT = ImmutableNodes.newContainerBuilder()
54         .withNodeIdentifier(BAR_INPUT)
55         .build();
56     private static final ContainerNode DOM_BAR_OUTPUT = ImmutableNodes.newContainerBuilder()
57         .withNodeIdentifier(BAR_OUTPUT)
58         .withChild(ImmutableNodes.leafNode(BAR_XYZZY, "xyzzy"))
59         .build();
60     private static final @NonNull BarInput BINDING_BAR_INPUT = new BarInputBuilder().build();
61     private static final @NonNull BarOutput BINDING_BAR_OUTPUT = new BarOutputBuilder().setXyzzy("xyzzy").build();
62
63     private static final NodeIdentifier FOOIO_INPUT = NodeIdentifier.create(operationInputQName(Fooio.QNAME
64             .getModule()));
65     private static final NodeIdentifier FOOIO_OUTPUT = NodeIdentifier.create(operationOutputQName(Fooio.QNAME
66             .getModule()));
67     private static final NodeIdentifier FOOIO_I = NodeIdentifier.create(QName.create(Fooio.QNAME, "fooi"));
68     private static final NodeIdentifier FOOIO_O = NodeIdentifier.create(QName.create(Fooio.QNAME, "fooo"));
69     private static final @NonNull ContainerNode DOM_FOOIO_INPUT = ImmutableNodes.newContainerBuilder()
70         .withNodeIdentifier(FOOIO_INPUT)
71         .withChild(ImmutableNodes.leafNode(FOOIO_I, "ifoo"))
72         .build();
73     private static final @NonNull ContainerNode DOM_FOOIO_OUTPUT = ImmutableNodes.newContainerBuilder()
74         .withNodeIdentifier(FOOIO_OUTPUT)
75         .withChild(ImmutableNodes.leafNode(FOOIO_O, "ofoo"))
76         .build();
77     private static final @NonNull FooioInput BINDING_FOOIO_INPUT = new FooioInputBuilder().setFooi("ifoo").build();
78     private static final @NonNull FooioOutput BINDING_FOOIO_OUTPUT = new FooioOutputBuilder().setFooo("ofoo").build();
79
80     @Test
81     public void testSerialization() {
82         assertEquals(DOM_FOO_INPUT, codecContext.toLazyNormalizedNodeActionInput(Foo.class, BINDING_FOO_INPUT)
83                 .getDelegate());
84         assertEquals(DOM_BAR_INPUT, codecContext.toLazyNormalizedNodeActionInput(Bar.class, BINDING_BAR_INPUT)
85                 .getDelegate());
86         assertEquals(DOM_FOO_OUTPUT, codecContext.toLazyNormalizedNodeActionOutput(Foo.class, BINDING_FOO_OUTPUT)
87                 .getDelegate());
88         assertEquals(DOM_BAR_OUTPUT, codecContext.toLazyNormalizedNodeActionOutput(Bar.class, BINDING_BAR_OUTPUT)
89                 .getDelegate());
90     }
91
92     @Test
93     public void testKeyedListActionSerialization() {
94         assertEquals(DOM_FOOIO_INPUT, codecContext.toLazyNormalizedNodeActionInput(Fooio.class, BINDING_FOOIO_INPUT)
95                 .getDelegate());
96         assertEquals(DOM_FOOIO_OUTPUT, codecContext.toLazyNormalizedNodeActionOutput(Fooio.class, BINDING_FOOIO_OUTPUT)
97                 .getDelegate());
98     }
99
100     @Test
101     public void testDeserialization() {
102         assertEquals(BINDING_FOO_INPUT, codecContext.fromNormalizedNodeActionInput(Foo.class, DOM_FOO_INPUT));
103         assertEquals(BINDING_BAR_INPUT, codecContext.fromNormalizedNodeActionInput(Bar.class, DOM_FOO_INPUT));
104         assertEquals(BINDING_FOO_OUTPUT, codecContext.fromNormalizedNodeActionOutput(Foo.class, DOM_FOO_OUTPUT));
105         assertEquals(BINDING_BAR_OUTPUT, codecContext.fromNormalizedNodeActionOutput(Bar.class, DOM_FOO_INPUT));
106     }
107
108     @Test
109     public void testKeyedListActionDeserialization() {
110         assertEquals(BINDING_FOOIO_INPUT, codecContext.fromNormalizedNodeActionInput(Fooio.class, DOM_FOOIO_INPUT));
111         assertEquals(BINDING_FOOIO_OUTPUT, codecContext.fromNormalizedNodeActionOutput(Fooio.class, DOM_FOOIO_OUTPUT));
112     }
113 }