Move NormalizedNode builders
[yangtools.git] / yang / yang-data-codec-binfmt / src / test / java / org / opendaylight / yangtools / yang / data / codec / binfmt / MapEntrySerializationTest.java
1 /*
2  * Copyright (c) 2019 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.data.codec.binfmt;
9
10 import com.google.common.collect.Maps;
11 import java.util.Arrays;
12 import java.util.Map;
13 import org.junit.Test;
14 import org.junit.runner.RunWith;
15 import org.junit.runners.Parameterized;
16 import org.junit.runners.Parameterized.Parameter;
17 import org.junit.runners.Parameterized.Parameters;
18 import org.opendaylight.yangtools.yang.common.QName;
19 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
20 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
21 import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder;
22 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
23 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
24
25 @RunWith(Parameterized.class)
26 public class MapEntrySerializationTest extends AbstractSerializationTest {
27     @Parameters(name = "{0}")
28     public static Iterable<Object[]> data() {
29         return Arrays.asList(
30             new Object[] { NormalizedNodeStreamVersion.LITHIUM,    100, 139, 178, 10_324 },
31             new Object[] { NormalizedNodeStreamVersion.NEON_SR2,   102, 127, 152,  6_742 },
32             new Object[] { NormalizedNodeStreamVersion.SODIUM_SR1,  96, 110, 125,  3_927 },
33             new Object[] { NormalizedNodeStreamVersion.MAGNESIUM,   96, 110, 125,  3_927 });
34     }
35
36     @Parameter(1)
37     public int emptySize;
38     @Parameter(2)
39     public int oneSize;
40     @Parameter(3)
41     public int twoSize;
42     @Parameter(4)
43     public int size256;
44
45     @Test
46     public void testEmptyIdentifier() {
47         assertEquals(createEntry(0), emptySize);
48     }
49
50     @Test
51     public void testOneIdentifier() {
52         assertEquals(createEntry(1), oneSize);
53     }
54
55     @Test
56     public void testTwoIdentifiers() {
57         assertEquals(createEntry(2), twoSize);
58     }
59
60     @Test
61     public void test256() {
62         assertEquals(createEntry(256), size256);
63     }
64
65     private static MapEntryNode createEntry(final int size) {
66         final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> builder = Builders.mapEntryBuilder();
67         final Map<QName, Object> predicates = Maps.newHashMapWithExpectedSize(size);
68         for (QName qname : generateQNames(size)) {
69             builder.withChild(ImmutableNodes.leafNode(qname, "a"));
70             predicates.put(qname, "a");
71         }
72
73         return builder.withNodeIdentifier(NodeIdentifierWithPredicates.of(TestModel.TEST_QNAME, predicates)).build();
74     }
75 }