--- /dev/null
+/*
+ * Copyright (c) 2019 PANTHEON.tech, s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.data.codec.binfmt;
+
+import com.google.common.collect.Maps;
+import java.util.Arrays;
+import java.util.Map;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
+import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
+import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
+import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
+
+@RunWith(Parameterized.class)
+public class MapEntrySerializationTest extends AbstractSerializationTest {
+ @Parameters(name = "{0}")
+ public static Iterable<Object[]> data() {
+ return Arrays.asList(
+ new Object[] { NormalizedNodeStreamVersion.LITHIUM, 100, 139, 178, 10_324 },
+ new Object[] { NormalizedNodeStreamVersion.NEON_SR2, 102, 127, 152, 6_742 },
+ new Object[] { NormalizedNodeStreamVersion.SODIUM_SR1, 96, 110, 125, 3_927 },
+ new Object[] { NormalizedNodeStreamVersion.MAGNESIUM, 96, 110, 125, 3_927 });
+ }
+
+ @Parameter(1)
+ public int emptySize;
+ @Parameter(2)
+ public int oneSize;
+ @Parameter(3)
+ public int twoSize;
+ @Parameter(4)
+ public int size256;
+
+ @Test
+ public void testEmptyIdentifier() {
+ assertEquals(createEntry(0), emptySize);
+ }
+
+ @Test
+ public void testOneIdentifier() {
+ assertEquals(createEntry(1), oneSize);
+ }
+
+ @Test
+ public void testTwoIdentifiers() {
+ assertEquals(createEntry(2), twoSize);
+ }
+
+ @Test
+ public void test256() {
+ assertEquals(createEntry(256), size256);
+ }
+
+ private static MapEntryNode createEntry(final int size) {
+ final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> builder = Builders.mapEntryBuilder();
+ final Map<QName, Object> predicates = Maps.newHashMapWithExpectedSize(size);
+ for (QName qname : generateQNames(size)) {
+ builder.withChild(ImmutableNodes.leafNode(qname, "a"));
+ predicates.put(qname, "a");
+ }
+
+ return builder.withNodeIdentifier(NodeIdentifierWithPredicates.of(TestModel.TEST_QNAME, predicates)).build();
+ }
+}