Mercurial > hgrepos > Python2 > PyMuPDF
comparison mupdf-source/thirdparty/zint/backend/tests/test_iso3166.c @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1:1d09e1dec1d9 | 2:b50eed0cc0ef |
|---|---|
| 1 /* | |
| 2 libzint - the open source barcode library | |
| 3 Copyright (C) 2021-2022 Robin Stuart <rstuart114@gmail.com> | |
| 4 | |
| 5 Redistribution and use in source and binary forms, with or without | |
| 6 modification, are permitted provided that the following conditions | |
| 7 are met: | |
| 8 | |
| 9 1. Redistributions of source code must retain the above copyright | |
| 10 notice, this list of conditions and the following disclaimer. | |
| 11 2. Redistributions in binary form must reproduce the above copyright | |
| 12 notice, this list of conditions and the following disclaimer in the | |
| 13 documentation and/or other materials provided with the distribution. | |
| 14 3. Neither the name of the project nor the names of its contributors | |
| 15 may be used to endorse or promote products derived from this software | |
| 16 without specific prior written permission. | |
| 17 | |
| 18 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |
| 19 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| 20 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| 21 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE | |
| 22 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
| 23 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
| 24 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
| 25 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
| 26 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
| 27 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
| 28 SUCH DAMAGE. | |
| 29 */ | |
| 30 /* SPDX-License-Identifier: BSD-3-Clause */ | |
| 31 | |
| 32 #include "testcommon.h" | |
| 33 #include "../iso3166.h" | |
| 34 | |
| 35 static void test_numeric(const testCtx *const p_ctx) { | |
| 36 | |
| 37 struct item { | |
| 38 int data; | |
| 39 int ret; | |
| 40 }; | |
| 41 /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ | |
| 42 struct item data[] = { | |
| 43 /* 0*/ { -1, 0 }, | |
| 44 /* 1*/ { 0, 0 }, | |
| 45 /* 2*/ { 1, 0 }, | |
| 46 /* 3*/ { 2, 0 }, | |
| 47 /* 4*/ { 3, 0 }, | |
| 48 /* 5*/ { 4, 1 }, | |
| 49 /* 6*/ { 5, 0 }, | |
| 50 /* 7*/ { 6, 0 }, | |
| 51 /* 8*/ { 7, 0 }, | |
| 52 /* 9*/ { 8, 1 }, | |
| 53 /* 10*/ { 9, 0 }, | |
| 54 /* 11*/ { 10, 1 }, | |
| 55 /* 12*/ { 11, 0 }, | |
| 56 /* 13*/ { 12, 1 }, | |
| 57 /* 14*/ { 13, 0 }, | |
| 58 /* 15*/ { 14, 0 }, | |
| 59 /* 16*/ { 15, 0 }, | |
| 60 /* 17*/ { 16, 1 }, | |
| 61 /* 18*/ { 17, 0 }, | |
| 62 /* 19*/ { 18, 0 }, | |
| 63 /* 20*/ { 19, 0 }, | |
| 64 /* 21*/ { 20, 1 }, | |
| 65 /* 22*/ { 21, 0 }, | |
| 66 /* 23*/ { 22, 0 }, | |
| 67 /* 24*/ { 23, 0 }, | |
| 68 /* 25*/ { 24, 1 }, | |
| 69 /* 26*/ { 25, 0 }, | |
| 70 /* 27*/ { 26, 0 }, | |
| 71 /* 28*/ { 27, 0 }, | |
| 72 /* 29*/ { 28, 1 }, | |
| 73 /* 30*/ { 29, 0 }, | |
| 74 /* 31*/ { 30, 0 }, | |
| 75 /* 32*/ { 31, 1 }, | |
| 76 /* 33*/ { 32, 1 }, | |
| 77 /* 34*/ { 33, 0 }, | |
| 78 /* 35*/ { 34, 0 }, | |
| 79 /* 36*/ { 35, 0 }, | |
| 80 /* 37*/ { 36, 1 }, | |
| 81 /* 38*/ { 37, 0 }, | |
| 82 /* 39*/ { 38, 0 }, | |
| 83 /* 40*/ { 39, 0 }, | |
| 84 /* 41*/ { 40, 1 }, | |
| 85 /* 42*/ { 41, 0 }, | |
| 86 /* 43*/ { 47, 0 }, | |
| 87 /* 44*/ { 48, 1 }, | |
| 88 /* 45*/ { 49, 0 }, | |
| 89 /* 46*/ { 50, 1 }, | |
| 90 /* 47*/ { 51, 1 }, | |
| 91 /* 48*/ { 52, 1 }, | |
| 92 /* 49*/ { 53, 0 }, | |
| 93 /* 50*/ { 67, 0 }, | |
| 94 /* 51*/ { 68, 1 }, | |
| 95 /* 52*/ { 69, 0 }, | |
| 96 /* 53*/ { 70, 1 }, | |
| 97 /* 54*/ { 71, 0 }, | |
| 98 /* 55*/ { 72, 1 }, | |
| 99 /* 56*/ { 73, 0 }, | |
| 100 /* 57*/ { 74, 1 }, | |
| 101 /* 58*/ { 75, 0 }, | |
| 102 /* 59*/ { 76, 1 }, | |
| 103 /* 60*/ { 77, 0 }, | |
| 104 /* 61*/ { 83, 0 }, | |
| 105 /* 62*/ { 84, 1 }, | |
| 106 /* 63*/ { 85, 0 }, | |
| 107 /* 64*/ { 86, 1 }, | |
| 108 /* 65*/ { 87, 0 }, | |
| 109 /* 66*/ { 99, 0 }, | |
| 110 /* 67*/ { 100, 1 }, | |
| 111 /* 68*/ { 101, 0 }, | |
| 112 /* 69*/ { 110, 0 }, | |
| 113 /* 70*/ { 119, 0 }, | |
| 114 /* 71*/ { 120, 1 }, | |
| 115 /* 72*/ { 121, 0 }, | |
| 116 /* 73*/ { 130, 0 }, | |
| 117 /* 74*/ { 131, 0 }, | |
| 118 /* 75*/ { 132, 1 }, | |
| 119 /* 76*/ { 133, 0 }, | |
| 120 /* 77*/ { 147, 0 }, | |
| 121 /* 78*/ { 148, 1 }, | |
| 122 /* 79*/ { 149, 0 }, | |
| 123 /* 80*/ { 150, 0 }, | |
| 124 /* 81*/ { 151, 0 }, | |
| 125 /* 82*/ { 152, 1 }, | |
| 126 /* 83*/ { 153, 0 }, | |
| 127 /* 84*/ { 154, 0 }, | |
| 128 /* 85*/ { 155, 0 }, | |
| 129 /* 86*/ { 156, 1 }, | |
| 130 /* 87*/ { 157, 0 }, | |
| 131 /* 88*/ { 158, 1 }, | |
| 132 /* 89*/ { 159, 0 }, | |
| 133 /* 90*/ { 160, 0 }, | |
| 134 /* 91*/ { 161, 0 }, | |
| 135 /* 92*/ { 162, 1 }, | |
| 136 /* 93*/ { 163, 0 }, | |
| 137 /* 94*/ { 169, 0 }, | |
| 138 /* 95*/ { 170, 1 }, | |
| 139 /* 96*/ { 171, 0 }, | |
| 140 /* 97*/ { 177, 0 }, | |
| 141 /* 98*/ { 178, 1 }, | |
| 142 /* 99*/ { 179, 0 }, | |
| 143 /*100*/ { 180, 1 }, | |
| 144 /*101*/ { 181, 0 }, | |
| 145 /*102*/ { 190, 0 }, | |
| 146 /*103*/ { 191, 1 }, | |
| 147 /*104*/ { 192, 1 }, | |
| 148 /*105*/ { 193, 0 }, | |
| 149 /*106*/ { 200, 0 }, | |
| 150 /*107*/ { 210, 0 }, | |
| 151 /*108*/ { 220, 0 }, | |
| 152 /*109*/ { 230, 0 }, | |
| 153 /*110*/ { 231, 1 }, | |
| 154 /*111*/ { 232, 1 }, | |
| 155 /*112*/ { 233, 1 }, | |
| 156 /*113*/ { 234, 1 }, | |
| 157 /*114*/ { 235, 0 }, | |
| 158 /*115*/ { 236, 0 }, | |
| 159 /*116*/ { 237, 0 }, | |
| 160 /*117*/ { 238, 1 }, | |
| 161 /*118*/ { 239, 1 }, | |
| 162 /*119*/ { 240, 0 }, | |
| 163 /*120*/ { 241, 0 }, | |
| 164 /*121*/ { 242, 1 }, | |
| 165 /*122*/ { 243, 0 }, | |
| 166 /*123*/ { 244, 0 }, | |
| 167 /*124*/ { 245, 0 }, | |
| 168 /*125*/ { 246, 1 }, | |
| 169 /*126*/ { 247, 0 }, | |
| 170 /*127*/ { 248, 1 }, | |
| 171 /*128*/ { 249, 0 }, | |
| 172 /*129*/ { 250, 1 }, | |
| 173 /*130*/ { 251, 0 }, | |
| 174 /*131*/ { 259, 0 }, | |
| 175 /*132*/ { 260, 1 }, | |
| 176 /*133*/ { 261, 0 }, | |
| 177 /*134*/ { 269, 0 }, | |
| 178 /*135*/ { 270, 1 }, | |
| 179 /*136*/ { 271, 0 }, | |
| 180 /*137*/ { 280, 0 }, | |
| 181 /*138*/ { 287, 0 }, | |
| 182 /*139*/ { 288, 1 }, | |
| 183 /*140*/ { 289, 0 }, | |
| 184 /*141*/ { 290, 0 }, | |
| 185 /*142*/ { 291, 0 }, | |
| 186 /*143*/ { 292, 1 }, | |
| 187 /*144*/ { 293, 0 }, | |
| 188 /*145*/ { 299, 0 }, | |
| 189 /*146*/ { 300, 1 }, | |
| 190 /*147*/ { 301, 0 }, | |
| 191 /*148*/ { 310, 0 }, | |
| 192 /*149*/ { 319, 0 }, | |
| 193 /*150*/ { 320, 1 }, | |
| 194 /*151*/ { 321, 0 }, | |
| 195 /*152*/ { 322, 0 }, | |
| 196 /*153*/ { 323, 0 }, | |
| 197 /*154*/ { 324, 1 }, | |
| 198 /*155*/ { 325, 0 }, | |
| 199 /*156*/ { 330, 0 }, | |
| 200 /*157*/ { 339, 0 }, | |
| 201 /*158*/ { 340, 1 }, | |
| 202 /*159*/ { 341, 0 }, | |
| 203 /*160*/ { 350, 0 }, | |
| 204 /*161*/ { 367, 0 }, | |
| 205 /*162*/ { 368, 1 }, | |
| 206 /*163*/ { 369, 0 }, | |
| 207 /*164*/ { 370, 0 }, | |
| 208 /*165*/ { 379, 0 }, | |
| 209 /*166*/ { 380, 1 }, | |
| 210 /*167*/ { 381, 0 }, | |
| 211 /*168*/ { 397, 0 }, | |
| 212 /*169*/ { 398, 1 }, | |
| 213 /*170*/ { 399, 0 }, | |
| 214 /*171*/ { 400, 1 }, | |
| 215 /*172*/ { 401, 0 }, | |
| 216 /*173*/ { 409, 0 }, | |
| 217 /*174*/ { 410, 1 }, | |
| 218 /*175*/ { 411, 0 }, | |
| 219 /*176*/ { 426, 1 }, | |
| 220 /*177*/ { 427, 0 }, | |
| 221 /*178*/ { 428, 1 }, | |
| 222 /*179*/ { 429, 0 }, | |
| 223 /*180*/ { 430, 1 }, | |
| 224 /*181*/ { 431, 0 }, | |
| 225 /*182*/ { 432, 0 }, | |
| 226 /*183*/ { 433, 0 }, | |
| 227 /*184*/ { 434, 1 }, | |
| 228 /*185*/ { 435, 0 }, | |
| 229 /*186*/ { 436, 0 }, | |
| 230 /*187*/ { 437, 0 }, | |
| 231 /*188*/ { 438, 1 }, | |
| 232 /*189*/ { 439, 0 }, | |
| 233 /*190*/ { 440, 1 }, | |
| 234 /*191*/ { 441, 0 }, | |
| 235 /*192*/ { 442, 1 }, | |
| 236 /*193*/ { 443, 0 }, | |
| 237 /*194*/ { 449, 0 }, | |
| 238 /*195*/ { 450, 1 }, | |
| 239 /*196*/ { 451, 0 }, | |
| 240 /*197*/ { 460, 0 }, | |
| 241 /*198*/ { 469, 0 }, | |
| 242 /*199*/ { 470, 1 }, | |
| 243 /*200*/ { 471, 0 }, | |
| 244 /*201*/ { 479, 0 }, | |
| 245 /*202*/ { 480, 1 }, | |
| 246 /*203*/ { 481, 0 }, | |
| 247 /*204*/ { 490, 0 }, | |
| 248 /*205*/ { 497, 0 }, | |
| 249 /*206*/ { 498, 1 }, | |
| 250 /*207*/ { 499, 1 }, | |
| 251 /*208*/ { 500, 1 }, | |
| 252 /*209*/ { 501, 0 }, | |
| 253 /*210*/ { 502, 0 }, | |
| 254 /*211*/ { 503, 0 }, | |
| 255 /*212*/ { 504, 1 }, | |
| 256 /*213*/ { 505, 0 }, | |
| 257 /*214*/ { 510, 0 }, | |
| 258 /*215*/ { 519, 0 }, | |
| 259 /*216*/ { 520, 1 }, | |
| 260 /*217*/ { 521, 0 }, | |
| 261 /*218*/ { 530, 0 }, | |
| 262 /*219*/ { 531, 1 }, | |
| 263 /*220*/ { 532, 0 }, | |
| 264 /*221*/ { 539, 0 }, | |
| 265 /*222*/ { 540, 1 }, | |
| 266 /*223*/ { 541, 0 }, | |
| 267 /*224*/ { 550, 0 }, | |
| 268 /*225*/ { 561, 0 }, | |
| 269 /*226*/ { 562, 1 }, | |
| 270 /*227*/ { 563, 0 }, | |
| 271 /*228*/ { 564, 0 }, | |
| 272 /*229*/ { 565, 0 }, | |
| 273 /*230*/ { 566, 1 }, | |
| 274 /*231*/ { 567, 0 }, | |
| 275 /*232*/ { 568, 0 }, | |
| 276 /*233*/ { 569, 0 }, | |
| 277 /*234*/ { 570, 1 }, | |
| 278 /*235*/ { 571, 0 }, | |
| 279 /*236*/ { 579, 0 }, | |
| 280 /*237*/ { 580, 1 }, | |
| 281 /*238*/ { 581, 1 }, | |
| 282 /*239*/ { 582, 0 }, | |
| 283 /*240*/ { 590, 0 }, | |
| 284 /*241*/ { 599, 0 }, | |
| 285 /*242*/ { 600, 1 }, | |
| 286 /*243*/ { 601, 0 }, | |
| 287 /*244*/ { 611, 0 }, | |
| 288 /*245*/ { 612, 1 }, | |
| 289 /*246*/ { 613, 0 }, | |
| 290 /*247*/ { 614, 0 }, | |
| 291 /*248*/ { 615, 0 }, | |
| 292 /*249*/ { 616, 1 }, | |
| 293 /*250*/ { 617, 0 }, | |
| 294 /*251*/ { 618, 0 }, | |
| 295 /*252*/ { 619, 0 }, | |
| 296 /*253*/ { 620, 1 }, | |
| 297 /*254*/ { 621, 0 }, | |
| 298 /*255*/ { 630, 1 }, | |
| 299 /*256*/ { 640, 0 }, | |
| 300 /*257*/ { 650, 0 }, | |
| 301 /*258*/ { 658, 0 }, | |
| 302 /*259*/ { 659, 1 }, | |
| 303 /*260*/ { 660, 1 }, | |
| 304 /*261*/ { 661, 0 }, | |
| 305 /*262*/ { 677, 0 }, | |
| 306 /*263*/ { 678, 1 }, | |
| 307 /*264*/ { 679, 0 }, | |
| 308 /*265*/ { 680, 0 }, | |
| 309 /*266*/ { 690, 1 }, | |
| 310 /*267*/ { 700, 0 }, | |
| 311 /*268*/ { 701, 0 }, | |
| 312 /*269*/ { 702, 1 }, | |
| 313 /*270*/ { 703, 1 }, | |
| 314 /*271*/ { 704, 1 }, | |
| 315 /*272*/ { 705, 1 }, | |
| 316 /*273*/ { 706, 1 }, | |
| 317 /*274*/ { 707, 0 }, | |
| 318 /*275*/ { 708, 0 }, | |
| 319 /*276*/ { 709, 0 }, | |
| 320 /*277*/ { 710, 1 }, | |
| 321 /*278*/ { 711, 0 }, | |
| 322 /*279*/ { 747, 0 }, | |
| 323 /*280*/ { 748, 1 }, | |
| 324 /*281*/ { 749, 0 }, | |
| 325 /*282*/ { 750, 0 }, | |
| 326 /*283*/ { 751, 0 }, | |
| 327 /*284*/ { 752, 1 }, | |
| 328 /*285*/ { 753, 0 }, | |
| 329 /*286*/ { 791, 0 }, | |
| 330 /*287*/ { 792, 1 }, | |
| 331 /*288*/ { 793, 0 }, | |
| 332 /*289*/ { 794, 0 }, | |
| 333 /*290*/ { 795, 1 }, | |
| 334 /*291*/ { 796, 1 }, | |
| 335 /*292*/ { 797, 0 }, | |
| 336 /*293*/ { 798, 1 }, | |
| 337 /*294*/ { 799, 0 }, | |
| 338 /*295*/ { 800, 1 }, | |
| 339 /*296*/ { 801, 0 }, | |
| 340 /*297*/ { 802, 0 }, | |
| 341 /*298*/ { 803, 0 }, | |
| 342 /*299*/ { 804, 1 }, | |
| 343 /*300*/ { 805, 0 }, | |
| 344 /*301*/ { 806, 0 }, | |
| 345 /*302*/ { 807, 1 }, | |
| 346 /*303*/ { 808, 0 }, | |
| 347 /*304*/ { 830, 0 }, | |
| 348 /*305*/ { 831, 1 }, | |
| 349 /*306*/ { 832, 1 }, | |
| 350 /*307*/ { 833, 1 }, | |
| 351 /*308*/ { 834, 1 }, | |
| 352 /*309*/ { 835, 0 }, | |
| 353 /*310*/ { 880, 0 }, | |
| 354 /*311*/ { 881, 0 }, | |
| 355 /*312*/ { 882, 1 }, | |
| 356 /*313*/ { 883, 0 }, | |
| 357 /*314*/ { 884, 0 }, | |
| 358 /*315*/ { 885, 0 }, | |
| 359 /*316*/ { 886, 0 }, | |
| 360 /*317*/ { 887, 1 }, | |
| 361 /*318*/ { 888, 0 }, | |
| 362 /*319*/ { 889, 0 }, | |
| 363 /*320*/ { 890, 0 }, | |
| 364 /*321*/ { 891, 0 }, | |
| 365 /*322*/ { 892, 0 }, | |
| 366 /*323*/ { 893, 0 }, | |
| 367 /*324*/ { 894, 1 }, | |
| 368 /*325*/ { 895, 0 }, | |
| 369 /*326*/ { 896, 0 }, | |
| 370 /*327*/ { 897, 0 }, | |
| 371 /*328*/ { 898, 0 }, | |
| 372 /*329*/ { 899, 0 }, | |
| 373 /*330*/ { 900, 0 }, | |
| 374 /*331*/ { 999, 0 }, | |
| 375 /*332*/ { 2000, 0 }, | |
| 376 }; | |
| 377 int data_size = ARRAY_SIZE(data); | |
| 378 int i, ret; | |
| 379 | |
| 380 testStart("test_numeric"); | |
| 381 | |
| 382 for (i = 0; i < data_size; i++) { | |
| 383 | |
| 384 if (testContinue(p_ctx, i)) continue; | |
| 385 | |
| 386 ret = iso3166_numeric(data[i].data); | |
| 387 assert_equal(ret, data[i].ret, "i:%d ret %d != %d\n", i, ret, data[i].ret); | |
| 388 } | |
| 389 | |
| 390 testFinish(); | |
| 391 } | |
| 392 | |
| 393 /* Binary chop version: Whether ISO 3166-1 numeric */ | |
| 394 static int bc_iso3166_numeric(int cc) { | |
| 395 static const short codes[249] = { | |
| 396 /*AFG*/ 4, /*ALB*/ 8, /*ATA*/ 10, /*DZA*/ 12, /*ASM*/ 16, /*AND*/ 20, /*AGO*/ 24, /*ATG*/ 28, /*AZE*/ 31, /*ARG*/ 32, | |
| 397 /*AUS*/ 36, /*AUT*/ 40, /*BHS*/ 44, /*BHR*/ 48, /*BGD*/ 50, /*ARM*/ 51, /*BRB*/ 52, /*BEL*/ 56, /*BMU*/ 60, /*BTN*/ 64, | |
| 398 /*BOL*/ 68, /*BIH*/ 70, /*BWA*/ 72, /*BVT*/ 74, /*BRA*/ 76, /*BLZ*/ 84, /*IOT*/ 86, /*SLB*/ 90, /*VGB*/ 92, /*BRN*/ 96, | |
| 399 /*BGR*/ 100, /*MMR*/ 104, /*BDI*/ 108, /*BLR*/ 112, /*KHM*/ 116, /*CMR*/ 120, /*CAN*/ 124, /*CPV*/ 132, /*CYM*/ 136, /*CAF*/ 140, | |
| 400 /*LKA*/ 144, /*TCD*/ 148, /*CHL*/ 152, /*CHN*/ 156, /*TWN*/ 158, /*CXR*/ 162, /*CCK*/ 166, /*COL*/ 170, /*COM*/ 174, /*MYT*/ 175, | |
| 401 /*COG*/ 178, /*COD*/ 180, /*COK*/ 184, /*CRI*/ 188, /*HRV*/ 191, /*CUB*/ 192, /*CYP*/ 196, /*CZE*/ 203, /*BEN*/ 204, /*DNK*/ 208, | |
| 402 /*DMA*/ 212, /*DOM*/ 214, /*ECU*/ 218, /*SLV*/ 222, /*GNQ*/ 226, /*ETH*/ 231, /*ERI*/ 232, /*EST*/ 233, /*FRO*/ 234, /*FLK*/ 238, | |
| 403 /*SGS*/ 239, /*FJI*/ 242, /*FIN*/ 246, /*ALA*/ 248, /*FRA*/ 250, /*GUF*/ 254, /*PYF*/ 258, /*ATF*/ 260, /*DJI*/ 262, /*GAB*/ 266, | |
| 404 /*GEO*/ 268, /*GMB*/ 270, /*PSE*/ 275, /*DEU*/ 276, /*GHA*/ 288, /*GIB*/ 292, /*KIR*/ 296, /*GRC*/ 300, /*GRL*/ 304, /*GRD*/ 308, | |
| 405 /*GLP*/ 312, /*GUM*/ 316, /*GTM*/ 320, /*GIN*/ 324, /*GUY*/ 328, /*HTI*/ 332, /*HMD*/ 334, /*VAT*/ 336, /*HND*/ 340, /*HKG*/ 344, | |
| 406 /*HUN*/ 348, /*ISL*/ 352, /*IND*/ 356, /*IDN*/ 360, /*IRN*/ 364, /*IRQ*/ 368, /*IRL*/ 372, /*ISR*/ 376, /*ITA*/ 380, /*CIV*/ 384, | |
| 407 /*JAM*/ 388, /*JPN*/ 392, /*KAZ*/ 398, /*JOR*/ 400, /*KEN*/ 404, /*PRK*/ 408, /*KOR*/ 410, /*KWT*/ 414, /*KGZ*/ 417, /*LAO*/ 418, | |
| 408 /*LBN*/ 422, /*LSO*/ 426, /*LVA*/ 428, /*LBR*/ 430, /*LBY*/ 434, /*LIE*/ 438, /*LTU*/ 440, /*LUX*/ 442, /*MAC*/ 446, /*MDG*/ 450, | |
| 409 /*MWI*/ 454, /*MYS*/ 458, /*MDV*/ 462, /*MLI*/ 466, /*MLT*/ 470, /*MTQ*/ 474, /*MRT*/ 478, /*MUS*/ 480, /*MEX*/ 484, /*MCO*/ 492, | |
| 410 /*MNG*/ 496, /*MDA*/ 498, /*MNE*/ 499, /*MSR*/ 500, /*MAR*/ 504, /*MOZ*/ 508, /*OMN*/ 512, /*NAM*/ 516, /*NRU*/ 520, /*NPL*/ 524, | |
| 411 /*NLD*/ 528, /*CUW*/ 531, /*ABW*/ 533, /*SXM*/ 534, /*BES*/ 535, /*NCL*/ 540, /*VUT*/ 548, /*NZL*/ 554, /*NIC*/ 558, /*NER*/ 562, | |
| 412 /*NGA*/ 566, /*NIU*/ 570, /*NFK*/ 574, /*NOR*/ 578, /*MNP*/ 580, /*UMI*/ 581, /*FSM*/ 583, /*MHL*/ 584, /*PLW*/ 585, /*PAK*/ 586, | |
| 413 /*PAN*/ 591, /*PNG*/ 598, /*PRY*/ 600, /*PER*/ 604, /*PHL*/ 608, /*PCN*/ 612, /*POL*/ 616, /*PRT*/ 620, /*GNB*/ 624, /*TLS*/ 626, | |
| 414 /*PRI*/ 630, /*QAT*/ 634, /*REU*/ 638, /*ROU*/ 642, /*RUS*/ 643, /*RWA*/ 646, /*BLM*/ 652, /*SHN*/ 654, /*KNA*/ 659, /*AIA*/ 660, | |
| 415 /*LCA*/ 662, /*MAF*/ 663, /*SPM*/ 666, /*VCT*/ 670, /*SMR*/ 674, /*STP*/ 678, /*SAU*/ 682, /*SEN*/ 686, /*SRB*/ 688, /*SYC*/ 690, | |
| 416 /*SLE*/ 694, /*SGP*/ 702, /*SVK*/ 703, /*VNM*/ 704, /*SVN*/ 705, /*SOM*/ 706, /*ZAF*/ 710, /*ZWE*/ 716, /*ESP*/ 724, /*SSD*/ 728, | |
| 417 /*SDN*/ 729, /*ESH*/ 732, /*SUR*/ 740, /*SJM*/ 744, /*SWZ*/ 748, /*SWE*/ 752, /*CHE*/ 756, /*SYR*/ 760, /*TJK*/ 762, /*THA*/ 764, | |
| 418 /*TGO*/ 768, /*TKL*/ 772, /*TON*/ 776, /*TTO*/ 780, /*ARE*/ 784, /*TUN*/ 788, /*TUR*/ 792, /*TKM*/ 795, /*TCA*/ 796, /*TUV*/ 798, | |
| 419 /*UGA*/ 800, /*UKR*/ 804, /*MKD*/ 807, /*EGY*/ 818, /*GBR*/ 826, /*GGY*/ 831, /*JEY*/ 832, /*IMN*/ 833, /*TZA*/ 834, /*USA*/ 840, | |
| 420 /*VIR*/ 850, /*BFA*/ 854, /*URY*/ 858, /*UZB*/ 860, /*VEN*/ 862, /*WLF*/ 876, /*WSM*/ 882, /*YEM*/ 887, /*ZMB*/ 894, | |
| 421 }; | |
| 422 | |
| 423 int s = 0, e = ARRAY_SIZE(codes) - 1; | |
| 424 | |
| 425 while (s <= e) { | |
| 426 int m = (s + e) / 2; | |
| 427 if (codes[m] < cc) { | |
| 428 s = m + 1; | |
| 429 } else if (codes[m] > cc) { | |
| 430 e = m - 1; | |
| 431 } else { | |
| 432 return 1; | |
| 433 } | |
| 434 } | |
| 435 | |
| 436 return 0; | |
| 437 } | |
| 438 | |
| 439 static void test_numeric_bc(const testCtx *const p_ctx) { | |
| 440 | |
| 441 int i, ret, bc_ret; | |
| 442 | |
| 443 testStart("test_numeric_bc"); | |
| 444 | |
| 445 for (i = 0; i < 1001; i++) { | |
| 446 if (testContinue(p_ctx, i)) continue; | |
| 447 | |
| 448 ret = iso3166_numeric(i); | |
| 449 bc_ret = bc_iso3166_numeric(i); | |
| 450 assert_equal(ret, bc_ret, "i:%d ret %d != bc_ret %d\n", i, ret, bc_ret); | |
| 451 } | |
| 452 | |
| 453 testFinish(); | |
| 454 } | |
| 455 | |
| 456 static void test_alpha2(const testCtx *const p_ctx) { | |
| 457 | |
| 458 struct item { | |
| 459 const char *data; | |
| 460 int ret; | |
| 461 }; | |
| 462 /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ | |
| 463 struct item data[] = { | |
| 464 /* 0*/ { "", 0 }, | |
| 465 /* 1*/ { "A", 0 }, | |
| 466 /* 2*/ { "aa", 0 }, | |
| 467 /* 3*/ { "AA", 0 }, | |
| 468 /* 4*/ { "AB", 0 }, | |
| 469 /* 5*/ { "AC", 0 }, | |
| 470 /* 6*/ { "AD", 1 }, | |
| 471 /* 7*/ { "ad", 0 }, | |
| 472 /* 8*/ { "AE", 1 }, | |
| 473 /* 9*/ { "AF", 1 }, | |
| 474 /* 10*/ { "AG", 1 }, | |
| 475 /* 11*/ { "AH", 0 }, | |
| 476 /* 12*/ { "AI", 1 }, | |
| 477 /* 13*/ { "AJ", 0 }, | |
| 478 /* 14*/ { "AP", 0 }, | |
| 479 /* 15*/ { "AQ", 1 }, | |
| 480 /* 16*/ { "AR", 1 }, | |
| 481 /* 17*/ { "AS", 1 }, | |
| 482 /* 18*/ { "AT", 1 }, | |
| 483 /* 19*/ { "AU", 1 }, | |
| 484 /* 20*/ { "AV", 0 }, | |
| 485 /* 21*/ { "AW", 1 }, | |
| 486 /* 22*/ { "AX", 1 }, | |
| 487 /* 23*/ { "AY", 0 }, | |
| 488 /* 24*/ { "AZ", 1 }, | |
| 489 /* 25*/ { "BA", 1 }, | |
| 490 /* 26*/ { "BB", 1 }, | |
| 491 /* 27*/ { "BC", 0 }, | |
| 492 /* 28*/ { "BD", 1 }, | |
| 493 /* 29*/ { "BX", 0 }, | |
| 494 /* 30*/ { "BY", 1 }, | |
| 495 /* 31*/ { "BZ", 1 }, | |
| 496 /* 32*/ { "CA", 1 }, | |
| 497 /* 33*/ { "CB", 0 }, | |
| 498 /* 34*/ { "CC", 1 }, | |
| 499 /* 35*/ { "CD", 1 }, | |
| 500 /* 36*/ { "CE", 0 }, | |
| 501 /* 37*/ { "CT", 0 }, | |
| 502 /* 38*/ { "CU", 1 }, | |
| 503 /* 39*/ { "CV", 1 }, | |
| 504 /* 40*/ { "CW", 1 }, | |
| 505 /* 41*/ { "CX", 1 }, | |
| 506 /* 42*/ { "CY", 1 }, | |
| 507 /* 43*/ { "CZ", 1 }, | |
| 508 /* 44*/ { "DA", 0 }, | |
| 509 /* 45*/ { "DD", 0 }, | |
| 510 /* 46*/ { "DE", 1 }, | |
| 511 /* 47*/ { "DF", 0 }, | |
| 512 /* 48*/ { "DY", 0 }, | |
| 513 /* 49*/ { "DZ", 1 }, | |
| 514 /* 50*/ { "EA", 0 }, | |
| 515 /* 51*/ { "EB", 0 }, | |
| 516 /* 52*/ { "EC", 1 }, | |
| 517 /* 53*/ { "ED", 0 }, | |
| 518 /* 54*/ { "EZ", 0 }, | |
| 519 /* 55*/ { "FA", 0 }, | |
| 520 /* 56*/ { "FQ", 0 }, | |
| 521 /* 57*/ { "FR", 1 }, | |
| 522 /* 58*/ { "FS", 0 }, | |
| 523 /* 59*/ { "FZ", 0 }, | |
| 524 /* 60*/ { "GA", 1 }, | |
| 525 /* 61*/ { "GB", 1 }, | |
| 526 /* 62*/ { "GC", 0 }, | |
| 527 /* 63*/ { "GX", 0 }, | |
| 528 /* 64*/ { "GY", 1 }, | |
| 529 /* 65*/ { "GZ", 0 }, | |
| 530 /* 66*/ { "HA", 0 }, | |
| 531 /* 67*/ { "HI", 0 }, | |
| 532 /* 68*/ { "HJ", 0 }, | |
| 533 /* 69*/ { "HK", 1 }, | |
| 534 /* 70*/ { "HL", 0 }, | |
| 535 /* 71*/ { "HZ", 0 }, | |
| 536 /* 72*/ { "IA", 0 }, | |
| 537 /* 73*/ { "IC", 0 }, | |
| 538 /* 74*/ { "ID", 1 }, | |
| 539 /* 75*/ { "IE", 1 }, | |
| 540 /* 76*/ { "IF", 0 }, | |
| 541 /* 77*/ { "IZ", 0 }, | |
| 542 /* 78*/ { "JA", 0 }, | |
| 543 /* 79*/ { "JD", 0 }, | |
| 544 /* 80*/ { "JE", 1 }, | |
| 545 /* 81*/ { "JF", 0 }, | |
| 546 /* 82*/ { "JZ", 0 }, | |
| 547 /* 83*/ { "KA", 0 }, | |
| 548 /* 84*/ { "KD", 0 }, | |
| 549 /* 85*/ { "KE", 1 }, | |
| 550 /* 86*/ { "KF", 0 }, | |
| 551 /* 87*/ { "KG", 1 }, | |
| 552 /* 88*/ { "KH", 1 }, | |
| 553 /* 89*/ { "KI", 1 }, | |
| 554 /* 90*/ { "KJ", 0 }, | |
| 555 /* 91*/ { "KX", 0 }, | |
| 556 /* 92*/ { "KY", 1 }, | |
| 557 /* 93*/ { "KZ", 1 }, | |
| 558 /* 94*/ { "LA", 1 }, | |
| 559 /* 95*/ { "LB", 1 }, | |
| 560 /* 96*/ { "LC", 1 }, | |
| 561 /* 97*/ { "LD", 0 }, | |
| 562 /* 98*/ { "LE", 0 }, | |
| 563 /* 99*/ { "LX", 0 }, | |
| 564 /*100*/ { "LY", 1 }, | |
| 565 /*101*/ { "LZ", 0 }, | |
| 566 /*102*/ { "MA", 1 }, | |
| 567 /*103*/ { "MB", 0 }, | |
| 568 /*104*/ { "MI", 0 }, | |
| 569 /*105*/ { "MJ", 0 }, | |
| 570 /*106*/ { "MK", 1 }, | |
| 571 /*107*/ { "ML", 1 }, | |
| 572 /*108*/ { "MM", 1 }, | |
| 573 /*109*/ { "MN", 1 }, | |
| 574 /*110*/ { "MO", 1 }, | |
| 575 /*111*/ { "MP", 1 }, | |
| 576 /*112*/ { "MQ", 1 }, | |
| 577 /*113*/ { "MR", 1 }, | |
| 578 /*114*/ { "MS", 1 }, | |
| 579 /*115*/ { "MT", 1 }, | |
| 580 /*116*/ { "MU", 1 }, | |
| 581 /*117*/ { "MV", 1 }, | |
| 582 /*118*/ { "MW", 1 }, | |
| 583 /*119*/ { "MX", 1 }, | |
| 584 /*120*/ { "MY", 1 }, | |
| 585 /*121*/ { "MZ", 1 }, | |
| 586 /*122*/ { "NA", 1 }, | |
| 587 /*123*/ { "NB", 0 }, | |
| 588 /*124*/ { "NC", 1 }, | |
| 589 /*125*/ { "NY", 0 }, | |
| 590 /*126*/ { "NZ", 1 }, | |
| 591 /*127*/ { "OA", 0 }, | |
| 592 /*128*/ { "OL", 0 }, | |
| 593 /*129*/ { "OM", 1 }, | |
| 594 /*130*/ { "ON", 0 }, | |
| 595 /*131*/ { "OZ", 0 }, | |
| 596 /*132*/ { "PA", 1 }, | |
| 597 /*133*/ { "PB", 0 }, | |
| 598 /*134*/ { "PQ", 0 }, | |
| 599 /*135*/ { "PR", 1 }, | |
| 600 /*136*/ { "PS", 1 }, | |
| 601 /*137*/ { "PT", 1 }, | |
| 602 /*138*/ { "PU", 0 }, | |
| 603 /*139*/ { "PV", 0 }, | |
| 604 /*140*/ { "PW", 1 }, | |
| 605 /*141*/ { "PX", 0 }, | |
| 606 /*142*/ { "PY", 1 }, | |
| 607 /*143*/ { "PZ", 0 }, | |
| 608 /*144*/ { "QA", 1 }, | |
| 609 /*145*/ { "QB", 0 }, | |
| 610 /*146*/ { "QZ", 0 }, | |
| 611 /*147*/ { "RA", 0 }, | |
| 612 /*148*/ { "RC", 0 }, | |
| 613 /*149*/ { "RD", 0 }, | |
| 614 /*150*/ { "RE", 1 }, | |
| 615 /*151*/ { "RF", 0 }, | |
| 616 /*152*/ { "RZ", 0 }, | |
| 617 /*153*/ { "SA", 1 }, | |
| 618 /*154*/ { "SB", 1 }, | |
| 619 /*155*/ { "SC", 1 }, | |
| 620 /*156*/ { "SD", 1 }, | |
| 621 /*157*/ { "SE", 1 }, | |
| 622 /*158*/ { "SF", 0 }, | |
| 623 /*159*/ { "SW", 0 }, | |
| 624 /*160*/ { "SX", 1 }, | |
| 625 /*161*/ { "SY", 1 }, | |
| 626 /*162*/ { "SZ", 1 }, | |
| 627 /*163*/ { "TA", 0 }, | |
| 628 /*164*/ { "TB", 0 }, | |
| 629 /*165*/ { "TC", 1 }, | |
| 630 /*166*/ { "TD", 1 }, | |
| 631 /*167*/ { "TE", 0 }, | |
| 632 /*168*/ { "TU", 0 }, | |
| 633 /*169*/ { "TV", 1 }, | |
| 634 /*170*/ { "TW", 1 }, | |
| 635 /*171*/ { "TX", 0 }, | |
| 636 /*172*/ { "TY", 0 }, | |
| 637 /*173*/ { "TZ", 1 }, | |
| 638 /*174*/ { "UA", 1 }, | |
| 639 /*175*/ { "UB", 0 }, | |
| 640 /*176*/ { "UX", 0 }, | |
| 641 /*177*/ { "UY", 1 }, | |
| 642 /*178*/ { "UZ", 1 }, | |
| 643 /*179*/ { "VA", 1 }, | |
| 644 /*180*/ { "VB", 0 }, | |
| 645 /*181*/ { "VC", 1 }, | |
| 646 /*182*/ { "VD", 0 }, | |
| 647 /*183*/ { "VZ", 0 }, | |
| 648 /*184*/ { "WA", 0 }, | |
| 649 /*185*/ { "WE", 0 }, | |
| 650 /*186*/ { "WF", 1 }, | |
| 651 /*187*/ { "WG", 0 }, | |
| 652 /*188*/ { "WZ", 0 }, | |
| 653 /*189*/ { "XA", 0 }, | |
| 654 /*190*/ { "XZ", 0 }, | |
| 655 /*191*/ { "YA", 0 }, | |
| 656 /*192*/ { "YC", 0 }, | |
| 657 /*193*/ { "YD", 0 }, | |
| 658 /*194*/ { "YE", 1 }, | |
| 659 /*195*/ { "YF", 0 }, | |
| 660 /*196*/ { "YZ", 0 }, | |
| 661 /*197*/ { "ZA", 1 }, | |
| 662 /*198*/ { "ZB", 0 }, | |
| 663 /*199*/ { "ZL", 0 }, | |
| 664 /*200*/ { "ZM", 1 }, | |
| 665 /*201*/ { "ZN", 0 }, | |
| 666 /*202*/ { "ZV", 0 }, | |
| 667 /*203*/ { "ZW", 1 }, | |
| 668 /*204*/ { "ZX", 0 }, | |
| 669 /*205*/ { "ZY", 0 }, | |
| 670 /*206*/ { "ZZ", 0 }, | |
| 671 /*207*/ { "Z", 0 }, | |
| 672 /*208*/ { "zz", 0 }, | |
| 673 /*209*/ { "0", 0 }, | |
| 674 /*210*/ { "\001", 0 }, | |
| 675 /*211*/ { "\177", 0 }, | |
| 676 /*212*/ { "\200", 0 }, | |
| 677 /*213*/ { "\377", 0 }, | |
| 678 }; | |
| 679 int data_size = ARRAY_SIZE(data); | |
| 680 int i, ret; | |
| 681 | |
| 682 testStart("test_alpha2"); | |
| 683 | |
| 684 for (i = 0; i < data_size; i++) { | |
| 685 | |
| 686 if (testContinue(p_ctx, i)) continue; | |
| 687 | |
| 688 ret = iso3166_alpha2(data[i].data); | |
| 689 assert_equal(ret, data[i].ret, "i:%d ret %d != %d\n", i, ret, data[i].ret); | |
| 690 } | |
| 691 | |
| 692 testFinish(); | |
| 693 } | |
| 694 | |
| 695 /* Binary chop version: Whether ISO 3166-1 alpha2 */ | |
| 696 static int bc_iso3166_alpha2(const char *cc) { | |
| 697 static const char codes[249][2] = { | |
| 698 {'A','D'}, {'A','E'}, {'A','F'}, {'A','G'}, {'A','I'}, {'A','L'}, {'A','M'}, {'A','O'}, {'A','Q'}, {'A','R'}, | |
| 699 {'A','S'}, {'A','T'}, {'A','U'}, {'A','W'}, {'A','X'}, {'A','Z'}, {'B','A'}, {'B','B'}, {'B','D'}, {'B','E'}, | |
| 700 {'B','F'}, {'B','G'}, {'B','H'}, {'B','I'}, {'B','J'}, {'B','L'}, {'B','M'}, {'B','N'}, {'B','O'}, {'B','Q'}, | |
| 701 {'B','R'}, {'B','S'}, {'B','T'}, {'B','V'}, {'B','W'}, {'B','Y'}, {'B','Z'}, {'C','A'}, {'C','C'}, {'C','D'}, | |
| 702 {'C','F'}, {'C','G'}, {'C','H'}, {'C','I'}, {'C','K'}, {'C','L'}, {'C','M'}, {'C','N'}, {'C','O'}, {'C','R'}, | |
| 703 {'C','U'}, {'C','V'}, {'C','W'}, {'C','X'}, {'C','Y'}, {'C','Z'}, {'D','E'}, {'D','J'}, {'D','K'}, {'D','M'}, | |
| 704 {'D','O'}, {'D','Z'}, {'E','C'}, {'E','E'}, {'E','G'}, {'E','H'}, {'E','R'}, {'E','S'}, {'E','T'}, {'F','I'}, | |
| 705 {'F','J'}, {'F','K'}, {'F','M'}, {'F','O'}, {'F','R'}, {'G','A'}, {'G','B'}, {'G','D'}, {'G','E'}, {'G','F'}, | |
| 706 {'G','G'}, {'G','H'}, {'G','I'}, {'G','L'}, {'G','M'}, {'G','N'}, {'G','P'}, {'G','Q'}, {'G','R'}, {'G','S'}, | |
| 707 {'G','T'}, {'G','U'}, {'G','W'}, {'G','Y'}, {'H','K'}, {'H','M'}, {'H','N'}, {'H','R'}, {'H','T'}, {'H','U'}, | |
| 708 {'I','D'}, {'I','E'}, {'I','L'}, {'I','M'}, {'I','N'}, {'I','O'}, {'I','Q'}, {'I','R'}, {'I','S'}, {'I','T'}, | |
| 709 {'J','E'}, {'J','M'}, {'J','O'}, {'J','P'}, {'K','E'}, {'K','G'}, {'K','H'}, {'K','I'}, {'K','M'}, {'K','N'}, | |
| 710 {'K','P'}, {'K','R'}, {'K','W'}, {'K','Y'}, {'K','Z'}, {'L','A'}, {'L','B'}, {'L','C'}, {'L','I'}, {'L','K'}, | |
| 711 {'L','R'}, {'L','S'}, {'L','T'}, {'L','U'}, {'L','V'}, {'L','Y'}, {'M','A'}, {'M','C'}, {'M','D'}, {'M','E'}, | |
| 712 {'M','F'}, {'M','G'}, {'M','H'}, {'M','K'}, {'M','L'}, {'M','M'}, {'M','N'}, {'M','O'}, {'M','P'}, {'M','Q'}, | |
| 713 {'M','R'}, {'M','S'}, {'M','T'}, {'M','U'}, {'M','V'}, {'M','W'}, {'M','X'}, {'M','Y'}, {'M','Z'}, {'N','A'}, | |
| 714 {'N','C'}, {'N','E'}, {'N','F'}, {'N','G'}, {'N','I'}, {'N','L'}, {'N','O'}, {'N','P'}, {'N','R'}, {'N','U'}, | |
| 715 {'N','Z'}, {'O','M'}, {'P','A'}, {'P','E'}, {'P','F'}, {'P','G'}, {'P','H'}, {'P','K'}, {'P','L'}, {'P','M'}, | |
| 716 {'P','N'}, {'P','R'}, {'P','S'}, {'P','T'}, {'P','W'}, {'P','Y'}, {'Q','A'}, {'R','E'}, {'R','O'}, {'R','S'}, | |
| 717 {'R','U'}, {'R','W'}, {'S','A'}, {'S','B'}, {'S','C'}, {'S','D'}, {'S','E'}, {'S','G'}, {'S','H'}, {'S','I'}, | |
| 718 {'S','J'}, {'S','K'}, {'S','L'}, {'S','M'}, {'S','N'}, {'S','O'}, {'S','R'}, {'S','S'}, {'S','T'}, {'S','V'}, | |
| 719 {'S','X'}, {'S','Y'}, {'S','Z'}, {'T','C'}, {'T','D'}, {'T','F'}, {'T','G'}, {'T','H'}, {'T','J'}, {'T','K'}, | |
| 720 {'T','L'}, {'T','M'}, {'T','N'}, {'T','O'}, {'T','R'}, {'T','T'}, {'T','V'}, {'T','W'}, {'T','Z'}, {'U','A'}, | |
| 721 {'U','G'}, {'U','M'}, {'U','S'}, {'U','Y'}, {'U','Z'}, {'V','A'}, {'V','C'}, {'V','E'}, {'V','G'}, {'V','I'}, | |
| 722 {'V','N'}, {'V','U'}, {'W','F'}, {'W','S'}, {'Y','E'}, {'Y','T'}, {'Z','A'}, {'Z','M'}, {'Z','W'}, | |
| 723 }; | |
| 724 | |
| 725 int s = 0, e = sizeof(codes) / sizeof(codes[0]) - 1; | |
| 726 | |
| 727 while (s <= e) { | |
| 728 int m = (s + e) / 2; | |
| 729 int cmp = strncmp(codes[m], cc, 2); | |
| 730 if (cmp < 0) { | |
| 731 s = m + 1; | |
| 732 } else if (cmp > 0) { | |
| 733 e = m - 1; | |
| 734 } else { | |
| 735 return 1; | |
| 736 } | |
| 737 } | |
| 738 | |
| 739 return 0; | |
| 740 } | |
| 741 | |
| 742 static void test_alpha2_bc(const testCtx *const p_ctx) { | |
| 743 | |
| 744 int i, ret, bc_ret; | |
| 745 char data[2]; | |
| 746 | |
| 747 (void)p_ctx; | |
| 748 | |
| 749 testStart("test_alpha2_bc"); | |
| 750 | |
| 751 for (i = 0; i < 128; i++) { | |
| 752 int j; | |
| 753 for (j = 0; j < 128; j++) { | |
| 754 data[0] = i; | |
| 755 data[1] = j; | |
| 756 ret = iso3166_alpha2(data); | |
| 757 bc_ret = bc_iso3166_alpha2(data); | |
| 758 assert_equal(ret, bc_ret, "i:%d ret %d != bc_ret %d\n", i, ret, bc_ret); | |
| 759 } | |
| 760 } | |
| 761 | |
| 762 testFinish(); | |
| 763 } | |
| 764 | |
| 765 int main(int argc, char *argv[]) { | |
| 766 | |
| 767 testFunction funcs[] = { /* name, func */ | |
| 768 { "test_numeric", test_numeric }, | |
| 769 { "test_alpha2", test_alpha2 }, | |
| 770 { "test_numeric_bc", test_numeric_bc }, | |
| 771 { "test_alpha2_bc", test_alpha2_bc }, | |
| 772 }; | |
| 773 | |
| 774 testRun(argc, argv, funcs, ARRAY_SIZE(funcs)); | |
| 775 | |
| 776 testReport(); | |
| 777 | |
| 778 return 0; | |
| 779 } | |
| 780 | |
| 781 /* vim: set ts=4 sw=4 et : */ |
