@@ -26,7 +26,7 @@ namespace tao
2626 // create test vector
2727 const std::string ezp ( " o\0 p" , 3 );
2828 const std::string ezq ( " o\0 q" , 3 );
29- const value v {
29+ const value cv {
3030 { " foo" , value::array ( { " bar" , " baz" } ) },
3131 { " " , 0 },
3232 { " a/b" , 1 },
@@ -38,31 +38,46 @@ namespace tao
3838 { " " , 7 },
3939 { " m~n" , 8 },
4040 { ezp, 9 },
41- { ezq, 10 }
41+ { ezq, 10 },
42+ { " -" , 11 }
4243 };
4344
4445 // check access
45- TEST_ASSERT ( v.at ( " " _json_pointer ) == v );
46- TEST_ASSERT ( v.at ( " /foo" _json_pointer ) == value::array ( { " bar" , " baz" } ) );
47- TEST_ASSERT ( v.at ( " /foo/0" _json_pointer ) == " bar" );
48- TEST_ASSERT ( v.at ( " /" _json_pointer ) == 0 );
49- TEST_ASSERT ( v.at ( " /a~1b" _json_pointer ) == 1 );
50- TEST_ASSERT ( v.at ( " /c%d" _json_pointer ) == 2 );
51- TEST_ASSERT ( v.at ( " /e^f" _json_pointer ) == 3 );
52- TEST_ASSERT ( v.at ( " /g|h" _json_pointer ) == 4 );
53- TEST_ASSERT ( v.at ( " /i\\ j" _json_pointer ) == 5 );
54- TEST_ASSERT ( v.at ( " /k\" l" _json_pointer ) == 6 );
55- TEST_ASSERT ( v.at ( " / " _json_pointer ) == 7 );
56- TEST_ASSERT ( v.at ( " /m~0n" _json_pointer ) == 8 );
57- TEST_ASSERT ( v.at ( " /o\0 p" _json_pointer ) == 9 );
58- TEST_ASSERT ( v.at ( " /o\0 q" _json_pointer ) == 10 );
59-
60- TEST_THROWS ( v.at ( " /o\0 r" _json_pointer ) );
61-
62- TEST_THROWS ( v.at ( " /bar" _json_pointer ) );
63- TEST_THROWS ( v.at ( " /foo/bar" _json_pointer ) );
64- TEST_THROWS ( v.at ( " //" _json_pointer ) );
65- TEST_THROWS ( v.at ( " /-" _json_pointer ) );
46+ TEST_ASSERT ( cv.at ( " " _json_pointer ) == cv );
47+
48+ TEST_ASSERT ( cv.at ( " /foo" _json_pointer ) == value::array ( { " bar" , " baz" } ) );
49+ TEST_THROWS ( cv.at ( " /bar" _json_pointer ) );
50+
51+ TEST_ASSERT ( cv.at ( " /foo/0" _json_pointer ) == " bar" );
52+ TEST_ASSERT ( cv.at ( " /foo/1" _json_pointer ) == " baz" );
53+ TEST_THROWS ( cv.at ( " /foo/2" _json_pointer ) );
54+
55+ TEST_THROWS ( cv.at ( " /foo/00" _json_pointer ) );
56+ TEST_THROWS ( cv.at ( " /foo/01" _json_pointer ) );
57+ TEST_THROWS ( cv.at ( " /foo/0 " _json_pointer ) );
58+ TEST_THROWS ( cv.at ( " /foo/ 0" _json_pointer ) );
59+ TEST_THROWS ( cv.at ( " /foo/1 " _json_pointer ) );
60+ TEST_THROWS ( cv.at ( " /foo/ 1" _json_pointer ) );
61+ TEST_THROWS ( cv.at ( " /foo/-" _json_pointer ) );
62+ TEST_THROWS ( cv.at ( " /foo/bar" _json_pointer ) );
63+
64+ TEST_ASSERT ( cv.at ( " /" _json_pointer ) == 0 );
65+ TEST_THROWS ( cv.at ( " //" _json_pointer ) );
66+
67+ TEST_ASSERT ( cv.at ( " /a~1b" _json_pointer ) == 1 );
68+ TEST_ASSERT ( cv.at ( " /c%d" _json_pointer ) == 2 );
69+ TEST_ASSERT ( cv.at ( " /e^f" _json_pointer ) == 3 );
70+ TEST_ASSERT ( cv.at ( " /g|h" _json_pointer ) == 4 );
71+ TEST_ASSERT ( cv.at ( " /i\\ j" _json_pointer ) == 5 );
72+ TEST_ASSERT ( cv.at ( " /k\" l" _json_pointer ) == 6 );
73+ TEST_ASSERT ( cv.at ( " / " _json_pointer ) == 7 );
74+ TEST_ASSERT ( cv.at ( " /m~0n" _json_pointer ) == 8 );
75+
76+ TEST_ASSERT ( cv.at ( " /o\0 p" _json_pointer ) == 9 );
77+ TEST_ASSERT ( cv.at ( " /o\0 q" _json_pointer ) == 10 );
78+ TEST_THROWS ( cv.at ( " /o\0 r" _json_pointer ) );
79+
80+ TEST_ASSERT ( cv.at ( " /-" _json_pointer ) == 11 );
6681 }
6782
6883 } // json
0 commit comments