2 * Copyright (c) 2019 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.yangtools.yang.data.codec.binfmt;
10 import com.google.common.collect.Maps;
11 import java.util.Arrays;
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;
25 @RunWith(Parameterized.class)
26 public class MapEntrySerializationTest extends AbstractSerializationTest {
27 @Parameters(name = "{0}")
28 public static Iterable<Object[]> data() {
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 });
46 public void testEmptyIdentifier() {
47 assertEquals(createEntry(0), emptySize);
51 public void testOneIdentifier() {
52 assertEquals(createEntry(1), oneSize);
56 public void testTwoIdentifiers() {
57 assertEquals(createEntry(2), twoSize);
61 public void test256() {
62 assertEquals(createEntry(256), size256);
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");
73 return builder.withNodeIdentifier(NodeIdentifierWithPredicates.of(TestModel.TEST_QNAME, predicates)).build();