Obsolete Neon SR2 streams
[yangtools.git] / codec / 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.SODIUM_SR1, 96, 110, 125, 3_927 },
31             new Object[] { NormalizedNodeStreamVersion.MAGNESIUM,  96, 110, 125, 3_927 });
32     }
33
34     @Parameter(1)
35     public int emptySize;
36     @Parameter(2)
37     public int oneSize;
38     @Parameter(3)
39     public int twoSize;
40     @Parameter(4)
41     public int size256;
42
43     @Test
44     public void testEmptyIdentifier() {
45         assertEquals(createEntry(0), emptySize);
46     }
47
48     @Test
49     public void testOneIdentifier() {
50         assertEquals(createEntry(1), oneSize);
51     }
52
53     @Test
54     public void testTwoIdentifiers() {
55         assertEquals(createEntry(2), twoSize);
56     }
57
58     @Test
59     public void test256() {
60         assertEquals(createEntry(256), size256);
61     }
62
63     private static MapEntryNode createEntry(final int size) {
64         final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> builder = Builders.mapEntryBuilder();
65         final Map<QName, Object> predicates = Maps.newHashMapWithExpectedSize(size);
66         for (QName qname : generateQNames(size)) {
67             builder.withChild(ImmutableNodes.leafNode(qname, "a"));
68             predicates.put(qname, "a");
69         }
70
71         return builder.withNodeIdentifier(NodeIdentifierWithPredicates.of(TestModel.TEST_QNAME, predicates)).build();
72     }
73 }