| 134 | |
| 135 | template<class ErrorCode> |
| 136 | void |
| 137 | testNonThrowing() |
| 138 | { |
| 139 | ErrorCode ec; |
| 140 | BOOST_TEST( !value().find_pointer("/x", ec) ); |
| 141 | BOOST_TEST( ec == error::value_is_scalar ); |
| 142 | |
| 143 | value jv = testValue(); |
| 144 | BOOST_TEST(jv.find_pointer("/foo/0", ec) == &jv.at("foo").at(0)); |
| 145 | BOOST_TEST(!ec); |
| 146 | |
| 147 | auto const& cjv = jv; |
| 148 | ec = error::syntax; |
| 149 | BOOST_TEST(cjv.find_pointer("/foo/1", ec) == &jv.at("foo").at(1)); |
| 150 | BOOST_TEST(!ec); |
| 151 | |
| 152 | jv.find_pointer("foo", ec); |
| 153 | BOOST_TEST(ec == error::missing_slash); |
| 154 | BOOST_TEST(hasLocation(ec)); |
| 155 | |
| 156 | jv.find_pointer("/fo", ec); |
| 157 | BOOST_TEST(ec == error::not_found); |
| 158 | BOOST_TEST(hasLocation(ec)); |
| 159 | |
| 160 | jv.find_pointer("/foo/25", ec); |
| 161 | BOOST_TEST(ec == error::not_found); |
| 162 | BOOST_TEST(hasLocation(ec)); |
| 163 | |
| 164 | value(object()).find_pointer("/foo", ec); |
| 165 | BOOST_TEST(ec == error::not_found); |
| 166 | BOOST_TEST(hasLocation(ec)); |
| 167 | |
| 168 | bigObject().find_pointer("/foo", ec); |
| 169 | BOOST_TEST(ec == error::not_found); |
| 170 | BOOST_TEST(hasLocation(ec)); |
| 171 | |
| 172 | jv.find_pointer("/m~", ec); |
| 173 | BOOST_TEST(ec == error::invalid_escape); |
| 174 | BOOST_TEST(hasLocation(ec)); |
| 175 | |
| 176 | jv.find_pointer("/m~n", ec); |
| 177 | BOOST_TEST(ec == error::invalid_escape); |
| 178 | BOOST_TEST(hasLocation(ec)); |
| 179 | |
| 180 | jv.find_pointer("/foo/bar", ec); |
| 181 | BOOST_TEST(ec == error::token_not_number); |
| 182 | BOOST_TEST(hasLocation(ec)); |
| 183 | |
| 184 | jv.find_pointer("/foo/", ec); |
| 185 | BOOST_TEST(ec == error::token_not_number); |
| 186 | BOOST_TEST(hasLocation(ec)); |
| 187 | |
| 188 | jv.find_pointer("/foo/01", ec); |
| 189 | BOOST_TEST(ec == error::token_not_number); |
| 190 | BOOST_TEST(hasLocation(ec)); |
| 191 | |
| 192 | jv.find_pointer("/foo/2b", ec); |
| 193 | BOOST_TEST(ec == error::token_not_number); |