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.SODIUM_SR1, 96, 110, 125, 3_927 },
31 new Object[] { NormalizedNodeStreamVersion.MAGNESIUM, 96, 110, 125, 3_927 });
44 public void testEmptyIdentifier() {
45 assertEquals(createEntry(0), emptySize);
49 public void testOneIdentifier() {
50 assertEquals(createEntry(1), oneSize);
54 public void testTwoIdentifiers() {
55 assertEquals(createEntry(2), twoSize);
59 public void test256() {
60 assertEquals(createEntry(256), size256);
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");
71 return builder.withNodeIdentifier(NodeIdentifierWithPredicates.of(TestModel.TEST_QNAME, predicates)).build();