RFC6901 JSON Pointer implementation in OCaml using jsont
1URI Fragment Encoding Tests (RFC 6901 Section 6)
2
3Roundtrip through URI fragment encoding:
4 $ ./test_pointer.exe uri-fragment ""
5 OK: ->
6 $ ./test_pointer.exe uri-fragment "/foo"
7 OK: /foo -> /foo
8 $ ./test_pointer.exe uri-fragment "/foo/0"
9 OK: /foo/0 -> /foo/0
10 $ ./test_pointer.exe uri-fragment "/"
11 OK: / -> /
12 $ ./test_pointer.exe uri-fragment "/a~1b"
13 OK: /a~1b -> /a~1b
14 $ ./test_pointer.exe uri-fragment "/m~0n"
15 OK: /m~0n -> /m~0n
16
17Characters requiring percent-encoding:
18 $ ./test_pointer.exe uri-fragment "/c%d"
19 OK: /c%d -> /c%25d
20 $ ./test_pointer.exe uri-fragment "/e^f"
21 OK: /e^f -> /e%5Ef
22 $ ./test_pointer.exe uri-fragment "/g|h"
23 OK: /g|h -> /g%7Ch
24 $ ./test_pointer.exe uri-fragment '/i\j'
25 OK: /i\j -> /i%5Cj
26 $ ./test_pointer.exe uri-fragment '/k"l'
27 OK: /k"l -> /k%22l
28 $ ./test_pointer.exe uri-fragment "/ "
29 OK: / -> /%20
30
31Roundtrip tests:
32 $ ./test_pointer.exe roundtrip ""
33 OK:
34 $ ./test_pointer.exe roundtrip "/foo"
35 OK: /foo
36 $ ./test_pointer.exe roundtrip "/foo/0"
37 OK: /foo/0
38 $ ./test_pointer.exe roundtrip "/"
39 OK: /
40 $ ./test_pointer.exe roundtrip "/a~1b"
41 OK: /a~1b
42 $ ./test_pointer.exe roundtrip "/m~0n"
43 OK: /m~0n
44 $ ./test_pointer.exe roundtrip "/-"
45 OK: /-
46 $ ./test_pointer.exe roundtrip "/a/b/c"
47 OK: /a/b/c
48
49RFC 6901 Section 6 examples (URI fragment encoding):
50Note: These test the full RFC 6901 Section 6 examples
51 $ ./test_pointer.exe uri-fragment "/c%d"
52 OK: /c%d -> /c%25d
53 $ ./test_pointer.exe uri-fragment "/e^f"
54 OK: /e^f -> /e%5Ef
55 $ ./test_pointer.exe uri-fragment "/g|h"
56 OK: /g|h -> /g%7Ch
57 $ ./test_pointer.exe uri-fragment '/i\j'
58 OK: /i\j -> /i%5Cj
59 $ ./test_pointer.exe uri-fragment '/k"l'
60 OK: /k"l -> /k%22l
61 $ ./test_pointer.exe uri-fragment "/ "
62 OK: / -> /%20
63
64Unicode in URI fragments:
65 $ ./test_pointer.exe uri-fragment "/café"
66 OK: /café -> /caf%C3%A9
67 $ ./test_pointer.exe uri-fragment "/日本語"
68 OK: /日本語 -> /%E6%97%A5%E6%9C%AC%E8%AA%9E
69
70Combined escapes (tilde escape + URI encode):
71Note: %25 in result is the URI encoding of %, and 100% is treated as member name
72 $ ./test_pointer.exe uri-fragment "/100%"
73 OK: /100% -> /100%25
74
75Multiple special chars:
76 $ ./test_pointer.exe uri-fragment "/a b^c|d"
77 OK: /a b^c|d -> /a%20b%5Ec%7Cd