| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 36cef5b commit 8e7e234
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -59,8 +59,15 @@ http_endpoint::http_endpoint | |||
| 59 | 59 | url_complete = url; | |
| 60 | 60 | #endif | |
| 61 | 61 | ||
| 62 | - if(url_complete[0] != '/') | ||
| 62 | + if (url_complete[url_complete.size() - 1] == '/') | ||
| 63 | + { | ||
| 64 | + url_complete = url_complete.substr(0, url_complete.size() - 1); | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + if (url_complete[0] != '/') | ||
| 68 | + { | ||
| 63 | 69 | url_complete = "/" + url_complete; | |
| 70 | + } | ||
| 64 | 71 | ||
| 65 | 72 | parts = http_utils::tokenize_url(url); | |
| 66 | 73 | string buffered; | |
@@ -156,6 +163,7 @@ bool http_endpoint::operator <(const http_endpoint& b) const | |||
| 156 | 163 | ||
| 157 | 164 | bool http_endpoint::match(const http_endpoint& url) const | |
| 158 | 165 | { | |
| 166 | + if (!this->reg_compiled) throw std::invalid_argument("Cannot run match. Regex suppressed."); | ||
| 159 | 167 | ||
| 160 | 168 | if(!this->family_url || url.url_pieces.size() < this->url_pieces.size()) | |
| 161 | 169 | return regexec(&(this->re_url_normalized), url.url_complete.c_str(), 0, NULL, 0) == 0; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -132,15 +132,11 @@ class http_endpoint | |||
| 132 | 132 | ||
| 133 | 133 | /** | |
| 134 | 134 | * Default constructor of the class. | |
| 135 | - * @param family boolean that indicates if the endpoint is a family endpoint. | ||
| 136 | - * A family endpoint is an endpoint that identifies a root and all its child like the same resource. | ||
| 137 | - * For example, if I identify "/path/" like a family endpoint and I associate to it the resource "A", also | ||
| 138 | - * "/path/to/res/" is automatically associated to resource "A". | ||
| 139 | 135 | **/ | |
| 140 | - http_endpoint(bool family = false): | ||
| 136 | + http_endpoint(): | ||
| 141 | 137 | url_complete("/"), | |
| 142 | 138 | url_normalized("/"), | |
| 143 | - family_url(family), | ||
| 139 | + family_url(false), | ||
| 144 | 140 | reg_compiled(false) | |
| 145 | 141 | { | |
| 146 | 142 | } | |
@@ -161,7 +157,6 @@ class http_endpoint | |||
| 161 | 157 | bool registration = false, | |
| 162 | 158 | bool use_regex = true | |
| 163 | 159 | ); | |
| 164 | - | ||
| 165 | 160 | private: | |
| 166 | 161 | /** | |
| 167 | 162 | * The complete url extracted | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -49,22 +49,26 @@ LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_default) | |||
| 49 | 49 | LT_CHECK_EQ(test_endpoint.is_regex_compiled(), false); | |
| 50 | 50 | LT_END_AUTO_TEST(http_endpoint_default) | |
| 51 | 51 | ||
| 52 | - LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_default_family) | ||
| 53 | - http_endpoint test_endpoint(true); | ||
| 52 | + LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_from_string_default) | ||
| 53 | + http_endpoint test_endpoint("/path/to/resource"); | ||
| 54 | 54 | ||
| 55 | - LT_CHECK_EQ(test_endpoint.get_url_complete(), "/"); | ||
| 56 | - LT_CHECK_EQ(test_endpoint.get_url_normalized(), "/"); | ||
| 55 | + LT_CHECK_EQ(test_endpoint.get_url_complete(), "/path/to/resource"); | ||
| 56 | + LT_CHECK_EQ(test_endpoint.get_url_normalized(), "^/path/to/resource$"); | ||
| 57 | 57 | ||
| 58 | 58 | LT_CHECK_EQ(test_endpoint.get_url_pars().size(), 0); | |
| 59 | - LT_CHECK_EQ(test_endpoint.get_url_pieces().size(), 0); | ||
| 59 | + | ||
| 60 | + string expected_arr[] = { "path", "to", "resource" }; | ||
| 61 | + vector<string> expected_pieces(expected_arr, expected_arr + sizeof(expected_arr) / sizeof(expected_arr[0])); | ||
| 62 | + LT_CHECK_COLLECTIONS_EQ(test_endpoint.get_url_pieces().begin(), test_endpoint.get_url_pieces().end(), expected_pieces.begin()); | ||
| 63 | + | ||
| 60 | 64 | LT_CHECK_EQ(test_endpoint.get_chunk_positions().size(), 0); | |
| 61 | 65 | ||
| 62 | - LT_CHECK_EQ(test_endpoint.is_family_url(), true); | ||
| 63 | - LT_CHECK_EQ(test_endpoint.is_regex_compiled(), false); | ||
| 64 | - LT_END_AUTO_TEST(http_endpoint_default_family) | ||
| 66 | + LT_CHECK_EQ(test_endpoint.is_family_url(), false); | ||
| 67 | + LT_CHECK_EQ(test_endpoint.is_regex_compiled(), true); | ||
| 68 | + LT_END_AUTO_TEST(http_endpoint_from_string_default) | ||
| 65 | 69 | ||
| 66 | - LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_from_string_default) | ||
| 67 | - http_endpoint test_endpoint(std::string("/path/to/resource")); | ||
| 70 | + LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_from_string_not_beginning_with_slash) | ||
| 71 | + http_endpoint test_endpoint("path/to/resource"); | ||
| 68 | 72 | ||
| 69 | 73 | LT_CHECK_EQ(test_endpoint.get_url_complete(), "/path/to/resource"); | |
| 70 | 74 | LT_CHECK_EQ(test_endpoint.get_url_normalized(), "^/path/to/resource$"); | |
@@ -79,10 +83,10 @@ LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_from_string_default) | |||
| 79 | 83 | ||
| 80 | 84 | LT_CHECK_EQ(test_endpoint.is_family_url(), false); | |
| 81 | 85 | LT_CHECK_EQ(test_endpoint.is_regex_compiled(), true); | |
| 82 | - LT_END_AUTO_TEST(http_endpoint_from_string_default) | ||
| 86 | + LT_END_AUTO_TEST(http_endpoint_from_string_not_beginning_with_slash) | ||
| 83 | 87 | ||
| 84 | - LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_from_string_not_beginning_with_slash) | ||
| 85 | - http_endpoint test_endpoint(std::string("path/to/resource")); | ||
| 88 | + LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_from_string_ending_with_slash) | ||
| 89 | + http_endpoint test_endpoint("path/to/resource/"); | ||
| 86 | 90 | ||
| 87 | 91 | LT_CHECK_EQ(test_endpoint.get_url_complete(), "/path/to/resource"); | |
| 88 | 92 | LT_CHECK_EQ(test_endpoint.get_url_normalized(), "^/path/to/resource$"); | |
@@ -97,10 +101,10 @@ LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_from_string_not_beginning_ | |||
| 97 | 101 | ||
| 98 | 102 | LT_CHECK_EQ(test_endpoint.is_family_url(), false); | |
| 99 | 103 | LT_CHECK_EQ(test_endpoint.is_regex_compiled(), true); | |
| 100 | - LT_END_AUTO_TEST(http_endpoint_from_string_not_beginning_with_slash) | ||
| 104 | + LT_END_AUTO_TEST(http_endpoint_from_string_ending_with_slash) | ||
| 101 | 105 | ||
| 102 | 106 | LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_from_string_family) | |
| 103 | - http_endpoint test_endpoint(std::string("/path/to/resource"), true); | ||
| 107 | + http_endpoint test_endpoint("/path/to/resource", true); | ||
| 104 | 108 | ||
| 105 | 109 | LT_CHECK_EQ(test_endpoint.get_url_complete(), "/path/to/resource"); | |
| 106 | 110 | LT_CHECK_EQ(test_endpoint.get_url_normalized(), "^/path/to/resource$"); | |
@@ -118,7 +122,7 @@ LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_from_string_family) | |||
| 118 | 122 | LT_END_AUTO_TEST(http_endpoint_from_string_family) | |
| 119 | 123 | ||
| 120 | 124 | LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_from_string_no_regex) | |
| 121 | - http_endpoint test_endpoint(std::string("/path/to/resource"), false, false, false); | ||
| 125 | + http_endpoint test_endpoint("/path/to/resource", false, false, false); | ||
| 122 | 126 | ||
| 123 | 127 | LT_CHECK_EQ(test_endpoint.get_url_complete(), "/path/to/resource"); | |
| 124 | 128 | LT_CHECK_EQ(test_endpoint.get_url_normalized(), "/path/to/resource"); | |
@@ -136,7 +140,7 @@ LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_from_string_no_regex) | |||
| 136 | 140 | LT_END_AUTO_TEST(http_endpoint_from_string_no_regex) | |
| 137 | 141 | ||
| 138 | 142 | LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_registration) | |
| 139 | - http_endpoint test_endpoint(std::string("/path/to/resource"), false, true); | ||
| 143 | + http_endpoint test_endpoint("/path/to/resource", false, true); | ||
| 140 | 144 | ||
| 141 | 145 | LT_CHECK_EQ(test_endpoint.get_url_complete(), "/path/to/resource"); | |
| 142 | 146 | LT_CHECK_EQ(test_endpoint.get_url_normalized(), "^/path/to/resource$"); | |
@@ -154,7 +158,7 @@ LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_registration) | |||
| 154 | 158 | LT_END_AUTO_TEST(http_endpoint_registration) | |
| 155 | 159 | ||
| 156 | 160 | LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_registration_nested_regex) | |
| 157 | - http_endpoint test_endpoint(std::string("/path/to/resource/with/[0-9]+/to/fetch"), false, true); | ||
| 161 | + http_endpoint test_endpoint("/path/to/resource/with/[0-9]+/to/fetch", false, true); | ||
| 158 | 162 | ||
| 159 | 163 | LT_CHECK_EQ(test_endpoint.get_url_complete(), "/path/to/resource/with/[0-9]+/to/fetch"); | |
| 160 | 164 | LT_CHECK_EQ(test_endpoint.get_url_normalized(), "^/path/to/resource/with/[0-9]+/to/fetch$"); | |
@@ -172,7 +176,7 @@ LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_registration_nested_regex) | |||
| 172 | 176 | LT_END_AUTO_TEST(http_endpoint_registration_nested_regex) | |
| 173 | 177 | ||
| 174 | 178 | LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_registration_arg) | |
| 175 | - http_endpoint test_endpoint(std::string("/path/to/resource/with/{arg}/to/fetch"), false, true); | ||
| 179 | + http_endpoint test_endpoint("/path/to/resource/with/{arg}/to/fetch", false, true); | ||
| 176 | 180 | ||
| 177 | 181 | LT_CHECK_EQ(test_endpoint.get_url_complete(), "/path/to/resource/with/{arg}/to/fetch"); | |
| 178 | 182 | LT_CHECK_EQ(test_endpoint.get_url_normalized(), "^/path/to/resource/with/([^\\/]+)/to/fetch$"); | |
@@ -194,7 +198,7 @@ LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_registration_arg) | |||
| 194 | 198 | LT_END_AUTO_TEST(http_endpoint_registration_arg) | |
| 195 | 199 | ||
| 196 | 200 | LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_registration_arg_custom_regex) | |
| 197 | - http_endpoint test_endpoint(std::string("/path/to/resource/with/{arg|([0-9]+)}/to/fetch"), false, true); | ||
| 201 | + http_endpoint test_endpoint("/path/to/resource/with/{arg|([0-9]+)}/to/fetch", false, true); | ||
| 198 | 202 | ||
| 199 | 203 | LT_CHECK_EQ(test_endpoint.get_url_complete(), "/path/to/resource/with/{arg|([0-9]+)}/to/fetch"); | |
| 200 | 204 | LT_CHECK_EQ(test_endpoint.get_url_normalized(), "^/path/to/resource/with/([0-9]+)/to/fetch$"); | |
@@ -216,9 +220,105 @@ LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_registration_arg_custom_re | |||
| 216 | 220 | LT_END_AUTO_TEST(http_endpoint_registration_arg_custom_regex) | |
| 217 | 221 | ||
| 218 | 222 | LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_registration_invalid_arg) | |
| 219 | - LT_CHECK_THROW(http_endpoint(std::string("/path/to/resource/with/{}/to/fetch"), false, true)); | ||
| 223 | + LT_CHECK_THROW(http_endpoint("/path/to/resource/with/{}/to/fetch", false, true)); | ||
| 220 | 224 | LT_END_AUTO_TEST(http_endpoint_registration_invalid_arg) | |
| 221 | 225 | ||
| 226 | + LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_copy_constructor) | ||
| 227 | + http_endpoint a("/path/to/resource/with/{arg|([0-9]+)}/to/fetch", false, true, true); | ||
| 228 | + http_endpoint b(a); | ||
| 229 | + | ||
| 230 | + LT_CHECK_EQ(a.get_url_complete(), b.get_url_complete()); | ||
| 231 | + LT_CHECK_EQ(a.get_url_normalized(), b.get_url_normalized()); | ||
| 232 | + LT_CHECK_COLLECTIONS_EQ(a.get_url_pars().begin(), a.get_url_pars().end(), b.get_url_pars().begin()); | ||
| 233 | + LT_CHECK_COLLECTIONS_EQ(a.get_url_pieces().begin(), a.get_url_pieces().end(), b.get_url_pieces().begin()); | ||
| 234 | + LT_CHECK_COLLECTIONS_EQ(a.get_chunk_positions().begin(), a.get_chunk_positions().end(), b.get_chunk_positions().begin()); | ||
| 235 | + LT_CHECK_EQ(a.is_family_url(), b.is_family_url()); | ||
| 236 | + LT_CHECK_EQ(a.is_regex_compiled(), b.is_regex_compiled()); | ||
| 237 | + | ||
| 238 | + LT_CHECK_EQ(a.match(http_endpoint("/path/to/resource/with/10/to/fetch")), true); | ||
| 239 | + LT_CHECK_EQ(b.match(http_endpoint("/path/to/resource/with/10/to/fetch")), true); | ||
| 240 | + LT_END_AUTO_TEST(http_endpoint_copy_constructor) | ||
| 241 | + | ||
| 242 | + LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_assignment) | ||
| 243 | + http_endpoint a("/path/to/resource/with/{arg|([0-9]+)}/to/fetch", false, true, true); | ||
| 244 | + http_endpoint b = a; | ||
| 245 | + | ||
| 246 | + LT_CHECK_EQ(a.get_url_complete(), b.get_url_complete()); | ||
| 247 | + LT_CHECK_EQ(a.get_url_normalized(), b.get_url_normalized()); | ||
| 248 | + LT_CHECK_COLLECTIONS_EQ(a.get_url_pars().begin(), a.get_url_pars().end(), b.get_url_pars().begin()); | ||
| 249 | + LT_CHECK_COLLECTIONS_EQ(a.get_url_pieces().begin(), a.get_url_pieces().end(), b.get_url_pieces().begin()); | ||
| 250 | + LT_CHECK_COLLECTIONS_EQ(a.get_chunk_positions().begin(), a.get_chunk_positions().end(), b.get_chunk_positions().begin()); | ||
| 251 | + LT_CHECK_EQ(a.is_family_url(), b.is_family_url()); | ||
| 252 | + LT_CHECK_EQ(a.is_regex_compiled(), b.is_regex_compiled()); | ||
| 253 | + | ||
| 254 | + LT_CHECK_EQ(a.match(http_endpoint("/path/to/resource/with/10/to/fetch")), true); | ||
| 255 | + LT_CHECK_EQ(b.match(http_endpoint("/path/to/resource/with/10/to/fetch")), true); | ||
| 256 | + LT_END_AUTO_TEST(http_endpoint_assignment) | ||
| 257 | + | ||
| 258 | + LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_match_regex) | ||
| 259 | + http_endpoint test_endpoint("/path/to/resource/", false, true, true); | ||
| 260 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource")), true); | ||
| 261 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource/")), true); | ||
| 262 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to2/resource")), false); | ||
| 263 | + LT_END_AUTO_TEST(http_endpoint_match_regex) | ||
| 264 | + | ||
| 265 | + LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_match_regex_nested) | ||
| 266 | + http_endpoint test_endpoint("/path/to/resource/with/[0-9]+/to/fetch", false, true, true); | ||
| 267 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource/with/0/to/fetch")), true); | ||
| 268 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource/with/10/to/fetch")), true); | ||
| 269 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("path/to/resource/with/1/to/fetch")), true); | ||
| 270 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource/with/1/to/fetch/")), true); | ||
| 271 | + LT_END_AUTO_TEST(http_endpoint_match_regex_nested) | ||
| 272 | + | ||
| 273 | + LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_match_regex_nested_capture) | ||
| 274 | + http_endpoint test_endpoint("/path/to/resource/with/([0-9]+)/to/fetch", false, true, true); | ||
| 275 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource/with/0/to/fetch")), true); | ||
| 276 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource/with/10/to/fetch")), true); | ||
| 277 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("path/to/resource/with/1/to/fetch")), true); | ||
| 278 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource/with/1/to/fetch/")), true); | ||
| 279 | + LT_END_AUTO_TEST(http_endpoint_match_regex_nested_capture) | ||
| 280 | + | ||
| 281 | + LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_match_regex_nested_arg) | ||
| 282 | + http_endpoint test_endpoint("/path/to/resource/with/{arg}/to/fetch", false, true, true); | ||
| 283 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource/with/0/to/fetch")), true); | ||
| 284 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource/with/10/to/fetch")), true); | ||
| 285 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("path/to/resource/with/1/to/fetch")), true); | ||
| 286 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource/with/1/to/fetch/")), true); | ||
| 287 | + LT_END_AUTO_TEST(http_endpoint_match_regex_nested_arg) | ||
| 288 | + | ||
| 289 | + LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_match_regex_nested_custom_arg) | ||
| 290 | + http_endpoint test_endpoint("/path/to/resource/with/{arg|([0-9]+)}/to/fetch", false, true, true); | ||
| 291 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource/with/0/to/fetch")), true); | ||
| 292 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource/with/10/to/fetch")), true); | ||
| 293 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("path/to/resource/with/1/to/fetch")), true); | ||
| 294 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource/with/1/to/fetch/")), true); | ||
| 295 | + LT_END_AUTO_TEST(http_endpoint_match_regex_nested_custom_arg) | ||
| 296 | + | ||
| 297 | + LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_match_regex_family) | ||
| 298 | + http_endpoint test_endpoint("/path/to/resource", true, true, true); | ||
| 299 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource")), true); | ||
| 300 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource/")), true); | ||
| 301 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("path/to/resource")), true); | ||
| 302 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("path/to/resource/")), true); | ||
| 303 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource")), true); | ||
| 304 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("/path/to/resource/followed/by/anything")), true); | ||
| 305 | + | ||
| 306 | + LT_CHECK_EQ(test_endpoint.match(http_endpoint("path/to2/resource")), false); | ||
| 307 | + LT_END_AUTO_TEST(http_endpoint_match_regex_family) | ||
| 308 | + | ||
| 309 | + LT_BEGIN_AUTO_TEST(http_endpoint_suite, http_endpoint_match_regex_disabled) | ||
| 310 | + http_endpoint test_endpoint("/path/to/resource", false, true, false); | ||
| 311 | + LT_CHECK_THROW(test_endpoint.match(http_endpoint("/path/to/resource"))); | ||
| 312 | + LT_END_AUTO_TEST(http_endpoint_match_regex_disabled) | ||
| 313 | + | ||
| 314 | + LT_BEGIN_AUTO_TEST(http_endpoint_suite, comparator) | ||
| 315 | + LT_CHECK_EQ(http_endpoint("/a/b") < http_endpoint("/a/c"), true); | ||
| 316 | + LT_CHECK_EQ(http_endpoint("/a/c") < http_endpoint("/a/b"), false); | ||
| 317 | + | ||
| 318 | + LT_CHECK_EQ(http_endpoint("/a/b") < http_endpoint("/a/b/c"), true); | ||
| 319 | + LT_CHECK_EQ(http_endpoint("/a/b/c") < http_endpoint("/a/b"), false); | ||
| 320 | + LT_END_AUTO_TEST(comparator) | ||
| 321 | + | ||
| 222 | 322 | LT_BEGIN_AUTO_TEST_ENV() | |
| 223 | 323 | AUTORUN_TESTS() | |
| 224 | 324 | LT_END_AUTO_TEST_ENV() | |
| Back | FazBrowse Home | New Git URL |
0 commit comments