Correct YangInstanceIdentifierSerializerTest 41/106541/3
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 19 Jun 2023 22:01:23 +0000 (00:01 +0200)
committerIvan Hrasko <ivan.hrasko@pantheon.tech>
Tue, 20 Jun 2023 07:29:39 +0000 (07:29 +0000)
Addressing modes for 'list' statements differs when they have a 'key'
statement from when they do not: former takes
NodeIdentifierWithPredicates to identify children, which the latter
takes NodeIdentifiers.

Expand the test cases to differentiate between the two -- note that
upstream accepts NodeIdentifierWithPredicates even for unkeyed lists,
but that is about to change.

Change-Id: Ib13d43097f86a6932e63e33d3a48788abe7640ec
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/YangInstanceIdentifierSerializerTest.java

index 3f73f3d67b9c25c2e174358c78e182ccdd45f3aa..7fcb0f42a2ac7ca1198240ab5204d873ef58258e 100644 (file)
@@ -12,7 +12,6 @@ import static org.junit.Assert.assertThrows;
 import static org.junit.Assert.assertTrue;
 
 import com.google.common.collect.ImmutableSet;
-import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import org.junit.AfterClass;
@@ -32,7 +31,6 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
  * Unit tests for {@link YangInstanceIdentifierSerializer}.
  */
 public class YangInstanceIdentifierSerializerTest {
-
     // schema context with test modules
     private static EffectiveModelContext SCHEMA_CONTEXT;
 
@@ -108,20 +106,36 @@ public class YangInstanceIdentifierSerializerTest {
     public void serializeListWithNoKeysTest() {
         final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
                 .node(QName.create("serializer:test", "2016-06-06", "list-no-key"))
-                .nodeWithKey(QName.create("serializer:test", "2016-06-06", "list-no-key"), new HashMap<>())
+                .node(QName.create("serializer:test", "2016-06-06", "list-no-key"))
                 .build();
 
         final String result = YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data);
         assertEquals("Serialization not successful", "serializer-test:list-no-key", result);
     }
 
+    /**
+     * Positive test of serialization of <code>YangInstanceIdentifier</code> to <code>String</code> when serialized
+     * <code>YangInstanceIdentifier</code> contains a keyed list, but the path argument does not specify them. Returned
+     * <code>String</code> is compared to have expected value.
+     */
+    @Test
+    public void serializeMapWithNoKeysTest() {
+        final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
+                .node(QName.create("serializer:test", "2016-06-06", "list-one-key"))
+                .nodeWithKey(QName.create("serializer:test", "2016-06-06", "list-one-key"), Map.of())
+                .build();
+
+        final String result = YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data);
+        assertEquals("Serialization not successful", "serializer-test:list-one-key", result);
+    }
+
     /**
      * Positive test of serialization of <code>YangInstanceIdentifier</code> to <code>String</code> when serialized
      * <code>YangInstanceIdentifier</code> contains list with one key. Returned <code>String</code> is compared to have
      * expected value.
      */
     @Test
-    public void serializeListWithOneKeyTest() {
+    public void serializeMapWithOneKeyTest() {
         final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
                 .node(QName.create("serializer:test", "2016-06-06", "list-one-key"))
                 .nodeWithKey(QName.create("serializer:test", "2016-06-06", "list-one-key"),
@@ -138,7 +152,7 @@ public class YangInstanceIdentifierSerializerTest {
      * to have expected value.
      */
     @Test
-    public void serializeListWithMultipleKeysTest() {
+    public void serializeMapWithMultipleKeysTest() {
         final QName list = QName.create("serializer:test", "2016-06-06", "list-multiple-keys");
         final Map<QName, Object> values = new LinkedHashMap<>();
         values.put(QName.create(list, "name"), "value-1");
@@ -256,7 +270,7 @@ public class YangInstanceIdentifierSerializerTest {
      */
     @Test
     public void serializePercentEncodingTest() {
-        final String value = "foo" + ":foo bar/" + "foo,bar/" + "'bar'";
+        final String value = "foo:foo bar/foo,bar/'bar'";
         final String encoded = "foo%3Afoo%20bar%2Ffoo%2Cbar%2F%27bar%27";
 
         final YangInstanceIdentifier data = YangInstanceIdentifier.builder()