TCK: [api] Define standard property for handling duplicated keys Signed-off-by: Jorge Bescos Gascon <jorge.bescos.gascon@oracle.com>
diff --git a/tck/tck-tests/src/main/java/jakarta/jsonp/tck/api/jsonreadertests/ClientTests.java b/tck/tck-tests/src/main/java/jakarta/jsonp/tck/api/jsonreadertests/ClientTests.java index 8a1b988..b532084 100644 --- a/tck/tck-tests/src/main/java/jakarta/jsonp/tck/api/jsonreadertests/ClientTests.java +++ b/tck/tck-tests/src/main/java/jakarta/jsonp/tck/api/jsonreadertests/ClientTests.java
@@ -20,6 +20,9 @@ import jakarta.jsonp.tck.common.*; import jakarta.jsonp.tck.lib.harness.Fault; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + import java.io.*; import java.util.*; @@ -3229,4 +3232,71 @@ result.eval(); } + /* + * @testName: testDuplicateKeysDefault + * + * @test_Strategy: Tests key strategy added in JSON-P 2.1. + */ + @Test + public void testDuplicateKeysDefault() { + Map<String, Object> config = new HashMap<>(); + JsonReaderFactory factory = Json.createReaderFactory(config); + String json = "{\"val1\":\"A\",\"val1\":\"B\"}"; + JsonReader reader = factory.createReader(new StringReader(json)); + JsonObject object = reader.readObject(); + reader.close(); + assertEquals("B", object.getString("val1")); + } + + /* + * @testName: testDuplicateKeysNone + * + * @test_Strategy: Tests key strategy added in JSON-P 2.1. + */ + @Test + public void testDuplicateKeysNone() { + Map<String, Object> config = new HashMap<>(); + config.put(JsonConfig.KEY_STRATEGY, JsonConfig.KeyStrategy.NONE); + JsonReaderFactory factory = Json.createReaderFactory(config); + String json = "{\"val1\":\"A\",\"val1\":\"B\"}"; + JsonReader reader = factory.createReader(new StringReader(json)); + try { + reader.readObject(); + fail("It is expected a JsonException"); + } catch (JsonException e) {} + } + + /* + * @testName: testDuplicateKeysFirst + * + * @test_Strategy: Tests key strategy added in JSON-P 2.1. + */ + @Test + public void testDuplicateKeysFirst() { + Map<String, Object> config = new HashMap<>(); + config.put(JsonConfig.KEY_STRATEGY, JsonConfig.KeyStrategy.FIRST); + JsonReaderFactory factory = Json.createReaderFactory(config); + String json = "{\"val1\":\"A\",\"val1\":\"B\"}"; + JsonReader reader = factory.createReader(new StringReader(json)); + JsonObject object = reader.readObject(); + reader.close(); + assertEquals("A", object.getString("val1")); + } + + /* + * @testName: testDuplicateKeysLast + * + * @test_Strategy: Tests key strategy added in JSON-P 2.1. + */ + @Test + public void testDuplicateKeysLast() { + Map<String, Object> config = new HashMap<>(); + config.put(JsonConfig.KEY_STRATEGY, JsonConfig.KeyStrategy.LAST); + JsonReaderFactory factory = Json.createReaderFactory(config); + String json = "{\"val1\":\"A\",\"val1\":\"B\"}"; + JsonReader reader = factory.createReader(new StringReader(json)); + JsonObject object = reader.readObject(); + reader.close(); + assertEquals("B", object.getString("val1")); + } }