From 23bc68f227e561f55e5a226c9879c61638f37e95 Mon Sep 17 00:00:00 2001 From: Fahad Al-Dajani <130736979+fahadaldajani92@users.noreply.github.com> Date: Thu, 8 Oct 2026 16:55:26 +0300 Subject: [PATCH] test: cover literal tilde tokens in JSONPointer --- .../java/org/json/junit/JSONPointerTest.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/test/java/org/json/junit/JSONPointerTest.java b/src/test/java/org/json/junit/JSONPointerTest.java index 7095d45da..273e062fb 100644 --- a/src/test/java/org/json/junit/JSONPointerTest.java +++ b/src/test/java/org/json/junit/JSONPointerTest.java @@ -124,6 +124,24 @@ public void tokenListPreservesLiteralTokens() { assertEquals("tilde zero", new JSONPointer(java.util.Arrays.asList("~0")).queryFrom(object)); } + @Test + public void escapedTildeTokensSelectLiteralKeys() { + JSONObject object = new JSONObject().put("~1", "literal ~1").put("/", "slash") + .put("~0", "literal ~0").put("~", "tilde") + .put("a~1b", "literal a~1b").put("a/b", "a slash b") + .put("a~0b", "literal a~0b").put("a~b", "a tilde b"); + + assertEquals("literal ~1", object.query("/~01")); + assertEquals("literal ~1", object.query("#/~01")); + assertEquals("literal ~0", object.query("/~00")); + assertEquals("literal ~0", object.query("#/~00")); + assertEquals("literal a~1b", object.query("/a~01b")); + assertEquals("literal a~0b", object.query("/a~00b")); + assertEquals("literal ~1", JSONPointer.builder().append("~1").build().queryFrom(object)); + assertEquals("literal ~0", JSONPointer.builder().append("~0").build().queryFrom(object)); + assertEquals("literal ~1", new JSONPointer(java.util.Arrays.asList("~1")).queryFrom(object)); + } + /** * We pass backslashes as-is *