1#ifndef lint 2static char *rcsid = "Id: resconf.tsy,v 1.1 2003/06/04 00:27:00 marka Exp "; 3#endif 4 5/* 6 * Copyright (c) 2002 Japan Network Information Center. 7 * All rights reserved. 8 * 9 * By using this file, you agree to the terms and conditions set forth bellow. 10 * 11 * LICENSE TERMS AND CONDITIONS 12 * 13 * The following License Terms and Conditions apply, unless a different 14 * license is obtained from Japan Network Information Center ("JPNIC"), 15 * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, 16 * Chiyoda-ku, Tokyo 101-0047, Japan. 17 * 18 * 1. Use, Modification and Redistribution (including distribution of any 19 * modified or derived work) in source and/or binary forms is permitted 20 * under this License Terms and Conditions. 21 * 22 * 2. Redistribution of source code must retain the copyright notices as they 23 * appear in each source code file, this License Terms and Conditions. 24 * 25 * 3. Redistribution in binary form must reproduce the Copyright Notice, 26 * this License Terms and Conditions, in the documentation and/or other 27 * materials provided with the distribution. For the purposes of binary 28 * distribution the "Copyright Notice" refers to the following language: 29 * "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved." 30 * 31 * 4. The name of JPNIC may not be used to endorse or promote products 32 * derived from this Software without specific prior written approval of 33 * JPNIC. 34 * 35 * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC 36 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 37 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 38 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE 39 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 40 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 41 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 42 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 43 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 44 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 45 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 46 */ 47 48#include <stddef.h> 49#include <stdio.h> 50#include <stdlib.h> 51#include <string.h> 52#include <stdarg.h> 53#include <idn/resconf.h> 54#include <idn/converter.h> 55#include <idn/log.h> 56 57#include "setenv.h" 58#include "testutil.h" 59 60#define CONF_FILENAME "test.conf" 61#define MAP_FILENAME "test.map" 62 63//-------------------------------------------------------------------- 64// Setups and Teardowns. 65//-------------------------------------------------------------------- 66 67//# SETUP 68// group: generic-init 69{ 70 idn_result_t r; 71 idn_resconf_t ctx = NULL; 72 73 setenv("IDN_LOCAL_CODESET", "UTF-8", 1); 74 75 r = idn_resconf_initialize(); 76 ASSERT_RESULT(r, idn_success); 77 78 r = idn_resconf_create(&ctx); 79 ASSERT_RESULT(r, idn_success); 80} 81 82//# TEARDOWN 83// group: generic-init 84{ 85 if (ctx != NULL) 86 idn_resconf_destroy(ctx); 87 remove(CONF_FILENAME); 88 remove(MAP_FILENAME); 89} 90 91//# SETUP 92// group: set-defaults 93{ 94 r = idn_resconf_setdefaults(ctx); 95 ASSERT_RESULT(r, idn_success); 96} 97 98//# TEARDOWN 99// group: set-defaults 100{ 101} 102 103//# SETUP 104// group: quiet 105{ 106 int saved_log_level; 107 108 saved_log_level = idn_log_getlevel(); 109 idn_log_setlevel(idn_log_level_fatal); 110} 111 112//# TEARDOWN 113// group: quiet 114{ 115 idn_log_setlevel(saved_log_level); 116} 117 118//# SETUP 119// group: delimitermap_ctx 120{ 121 idn_delimitermap_t delimitermap_ctx1 = NULL; 122 idn_delimitermap_t delimitermap_ctx2 = NULL; 123} 124 125//# TEARDOWN 126// group: delimitermap_ctx 127{ 128 if (delimitermap_ctx1 != NULL) 129 idn_delimitermap_destroy(delimitermap_ctx1); 130 if (delimitermap_ctx2 != NULL) 131 idn_delimitermap_destroy(delimitermap_ctx2); 132} 133 134//# SETUP 135// group: idnconverter_ctx 136{ 137 idn_converter_t idnconverter_ctx1 = NULL; 138 idn_converter_t idnconverter_ctx2 = NULL; 139} 140 141//# TEARDOWN 142// group: idnconverter_ctx 143{ 144 if (idnconverter_ctx1 != NULL) 145 idn_converter_destroy(idnconverter_ctx1); 146 if (idnconverter_ctx2 != NULL) 147 idn_converter_destroy(idnconverter_ctx2); 148} 149 150//# SETUP 151// group: localconverter_ctx 152{ 153 idn_converter_t localconverter_ctx1 = NULL; 154 idn_converter_t localconverter_ctx2 = NULL; 155} 156 157//# TEARDOWN 158// group: localconverter_ctx 159{ 160 if (localconverter_ctx1 != NULL) 161 idn_converter_destroy(localconverter_ctx1); 162 if (localconverter_ctx2 != NULL) 163 idn_converter_destroy(localconverter_ctx2); 164} 165 166//# SETUP 167// group: auxidnconverter_ctx 168{ 169 idn_converter_t auxidnconverter_ctx1 = NULL; 170 idn_converter_t auxidnconverter_ctx2 = NULL; 171} 172 173//# TEARDOWN 174// group: auxidnconverter_ctx 175{ 176 if (auxidnconverter_ctx1 != NULL) 177 idn_converter_destroy(auxidnconverter_ctx1); 178 if (auxidnconverter_ctx2 != NULL) 179 idn_converter_destroy(auxidnconverter_ctx2); 180} 181 182//# SETUP 183// group: mapselector_ctx 184{ 185 idn_mapselector_t mapselector_ctx1 = NULL; 186 idn_mapselector_t mapselector_ctx2 = NULL; 187} 188 189//# TEARDOWN 190// group: mapselector_ctx 191{ 192 if (mapselector_ctx1 != NULL) 193 idn_mapselector_destroy(mapselector_ctx1); 194 if (mapselector_ctx2 != NULL) 195 idn_mapselector_destroy(mapselector_ctx2); 196} 197 198//# SETUP 199// group: mapper_ctx 200{ 201 idn_mapper_t mapper_ctx1 = NULL; 202 idn_mapper_t mapper_ctx2 = NULL; 203} 204 205//# TEARDOWN 206// group: mapper_ctx 207{ 208 if (mapper_ctx1 != NULL) 209 idn_mapper_destroy(mapper_ctx1); 210 if (mapper_ctx2 != NULL) 211 idn_mapper_destroy(mapper_ctx2); 212} 213 214//# SETUP 215// group: normalizer_ctx 216{ 217 idn_normalizer_t normalizer_ctx1 = NULL; 218 idn_normalizer_t normalizer_ctx2 = NULL; 219} 220 221//# TEARDOWN 222// group: normalizer_ctx 223{ 224 if (normalizer_ctx1 != NULL) 225 idn_normalizer_destroy(normalizer_ctx1); 226 if (normalizer_ctx2 != NULL) 227 idn_normalizer_destroy(normalizer_ctx2); 228} 229 230//# SETUP 231// group: prohibitchecker_ctx 232{ 233 idn_checker_t prohibitchecker_ctx1 = NULL; 234 idn_checker_t prohibitchecker_ctx2 = NULL; 235} 236 237//# TEARDOWN 238// group: prohibitchecker_ctx 239{ 240 if (prohibitchecker_ctx1 != NULL) 241 idn_checker_destroy(prohibitchecker_ctx1); 242 if (prohibitchecker_ctx2 != NULL) 243 idn_checker_destroy(prohibitchecker_ctx2); 244} 245 246//# SETUP 247// group: unassignedchecker_ctx 248{ 249 idn_checker_t unassignedchecker_ctx1 = NULL; 250 idn_checker_t unassignedchecker_ctx2 = NULL; 251} 252 253//# TEARDOWN 254// group: unassignedchecker_ctx 255{ 256 if (unassignedchecker_ctx1 != NULL) 257 idn_checker_destroy(unassignedchecker_ctx1); 258 if (unassignedchecker_ctx2 != NULL) 259 idn_checker_destroy(unassignedchecker_ctx2); 260} 261 262//# SETUP 263// group: bidichecker_ctx 264{ 265 idn_checker_t bidichecker_ctx1 = NULL; 266 idn_checker_t bidichecker_ctx2 = NULL; 267} 268 269//# TEARDOWN 270// group: bidichecker_ctx 271{ 272 if (bidichecker_ctx1 != NULL) 273 idn_checker_destroy(bidichecker_ctx1); 274 if (bidichecker_ctx2 != NULL) 275 idn_checker_destroy(bidichecker_ctx2); 276} 277 278//-------------------------------------------------------------------- 279// Testcases. 280//-------------------------------------------------------------------- 281 282//# TESTCASE 283// title: call create() without initialization. 284//-- 285// This must be the first test case. 286{ 287 idn_result_t r; 288 idn_resconf_t ctx = NULL; 289 290 r = idn_resconf_create(&ctx); 291 ASSERT_RESULT(r, idn_failure); 292 293 if (ctx != NULL) 294 idn_resconf_destroy(ctx); 295} 296 297//# TESTCASE 298// title: call initialize() twice. 299// 300{ 301 idn_result_t r; 302 303 r = idn_resconf_initialize(); 304 ASSERT_RESULT(r, idn_success); 305 306 r = idn_resconf_initialize(); 307 ASSERT_RESULT(r, idn_success); 308} 309 310//# TESTCASE 311// title: call create() 312{ 313 idn_result_t r; 314 idn_resconf_t ctx; 315 316 r = idn_resconf_initialize(); 317 ASSERT_RESULT(r, idn_success); 318 319 r = idn_resconf_create(&ctx); 320 ASSERT_RESULT(r, idn_success); 321 322 if (ctx != NULL) 323 idn_resconf_destroy(ctx); 324} 325 326//# TESTCASE 327// title: load file (idn-encoding) 328// group: generic-init 329{ 330 const char *idn_encoding; 331 332 create_conf_file(CONF_FILENAME, 0, 333 "idn-encoding Punycode", 334 NULL); 335 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 336 ASSERT_RESULT(r, idn_success); 337} 338 339//# TESTCASE 340// title: load file (nameprep) 341// group: generic-init 342{ 343 const char *idn_encoding; 344 345 create_conf_file(CONF_FILENAME, 0, 346 "nameprep " IDN_NAMEPREP_CURRENT, 347 NULL); 348 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 349 ASSERT_RESULT(r, idn_success); 350} 351 352//# TESTCASE 353// title: load file (idn-encoding & nameprep) 354// group: generic-init 355{ 356 const char *idn_encoding; 357 358 create_conf_file(CONF_FILENAME, 0, 359 "idn-encoding Punycode", 360 "nameprep " IDN_NAMEPREP_CURRENT, 361 NULL); 362 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 363 ASSERT_RESULT(r, idn_success); 364} 365 366//# TESTCASE 367// title: load file (empty) 368// group: generic-init 369{ 370 const char *idn_encoding; 371 372 create_conf_file(CONF_FILENAME, 0, 373 NULL); 374 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 375 ASSERT_RESULT(r, idn_success); 376} 377 378//# TESTCASE 379// title: load file (local-map filemap) 380// group: generic-init 381{ 382 const char *idn_encoding; 383 384 create_conf_file(CONF_FILENAME, 0, 385 "local-map .jp filemap:" MAP_FILENAME, 386 NULL); 387 create_conf_file(MAP_FILENAME, 0, 388 "2212; FF0D", 389 NULL); 390 391 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 392 ASSERT_RESULT(r, idn_success); 393} 394 395//# TESTCASE 396// title: load file (local-map nameprep) 397// group: generic-init 398{ 399 const char *idn_encoding; 400 401 create_conf_file(CONF_FILENAME, 0, 402 "local-map .jp " IDN_NAMEPREP_CURRENT, 403 NULL); 404 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 405 ASSERT_RESULT(r, idn_success); 406} 407 408//# TESTCASE 409// title: set defaults 410// group: generic-init set-defaults 411{ 412} 413 414//# TESTCASE 415// title: load file (no file) 416// group: generic-init 417{ 418 r = idn_resconf_loadfile(ctx, "no-such-file"); 419 ASSERT_RESULT(r, idn_nofile); 420} 421 422//# TESTCASE 423// title: load file (empty file name) 424// group: generic-init 425{ 426 r = idn_resconf_loadfile(ctx, ""); 427 ASSERT_RESULT(r, idn_nofile); 428} 429 430//# TESTCASE 431// title: load file (unknown command) 432// group: generic-init quiet 433{ 434 create_conf_file(CONF_FILENAME, 0, 435 "unknown-command " IDN_NAMEPREP_CURRENT, 436 NULL); 437 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 438 ASSERT_RESULT(r, idn_invalid_syntax); 439} 440 441//# TESTCASE 442// title: load file (no newline at the end of file) 443// group: generic-init quiet 444{ 445 create_conf_file(CONF_FILENAME, CONF_NO_EOF_NEWLINE, 446 "nameprep " IDN_NAMEPREP_CURRENT, 447 NULL); 448 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 449 ASSERT_RESULT(r, idn_success); 450} 451 452//# TESTCASE 453// title: load file (too long line) 454// group: generic-init quiet 455{ 456 char arg[1024]; 457 char *line; 458 459 /* arg = "local-map . ////..." */ 460 memset(arg, '/', sizeof(arg)); 461 arg[sizeof(arg) - 1] = '\0'; 462 line = "local-map . "; 463 memcpy(arg, line, strlen(line)); 464 465 create_conf_file(CONF_FILENAME, 0, arg, NULL); 466 467 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 468 ASSERT_RESULT(r, idn_invalid_syntax); 469} 470 471//# TESTCASE 472// title: load file (empty file) 473// group: generic-init 474{ 475 create_conf_file(CONF_FILENAME, 0, "", NULL); 476 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 477 ASSERT_RESULT(r, idn_success); 478} 479 480//# TESTCASE 481// title: load file (invalid parameter for idn-encoding) 482// group: generic-init quiet 483{ 484#ifndef WITHOUT_ICONV 485 SKIP_TESTCASE; 486#else 487 create_conf_file(CONF_FILENAME, 0, 488 "idn-encoding invalid-encoding-name", 489 NULL); 490 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 491 ASSERT_RESULT(r, idn_invalid_name); 492#endif 493} 494 495//# TESTCASE 496// title: load file (define idn-encoding twice) 497// group: generic-init quiet 498{ 499#ifndef WITHOUT_ICONV 500 SKIP_TESTCASE; 501#else 502 create_conf_file(CONF_FILENAME, CONF_NO_EOF_NEWLINE, 503 "idn-encoding Punycode", 504 "idn-encoding Punycode", 505 NULL); 506 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 507 ASSERT_RESULT(r, idn_invalid_syntax); 508#endif 509} 510 511//# TESTCASE 512// title: load file (invalid parameter for nameprep) 513// group: generic-init quiet 514{ 515 create_conf_file(CONF_FILENAME, 0, 516 "nameprep invalid-version", 517 NULL); 518 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 519 ASSERT_RESULT(r, idn_invalid_name); 520} 521 522//# TESTCASE 523// title: load file (define nameprep twice) 524// group: generic-init quiet 525{ 526#ifndef WITHOUT_ICONV 527 SKIP_TESTCASE; 528#else 529 create_conf_file(CONF_FILENAME, CONF_NO_EOF_NEWLINE, 530 "nameprep " IDN_NAMEPREP_CURRENT, 531 "nameprep " IDN_NAMEPREP_CURRENT, 532 NULL); 533 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 534 ASSERT_RESULT(r, idn_invalid_syntax); 535#endif 536} 537 538//# TESTCASE 539// title: load file (invalid parameter for local-map) 540// group: generic-init quiet 541{ 542 create_conf_file(CONF_FILENAME, 0, 543 "local-map .jp :", 544 NULL); 545 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 546 ASSERT_RESULT(r, idn_invalid_name); 547 548 create_conf_file(CONF_FILENAME, 0, 549 "local-map .jp invalid:/dev/null", 550 NULL); 551 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 552 ASSERT_RESULT(r, idn_invalid_name); 553 554 create_conf_file(CONF_FILENAME, 0, 555 "local-map .jp filemap", 556 NULL); 557 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 558 ASSERT_RESULT(r, idn_nofile); 559 560 create_conf_file(CONF_FILENAME, 0, 561 "local-map .jp filemap:", 562 NULL); 563 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 564 ASSERT_RESULT(r, idn_nofile); 565 566 create_conf_file(CONF_FILENAME, 0, 567 "local-map .jp filemap:no-such-file", 568 NULL); 569 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 570 ASSERT_RESULT(r, idn_nofile); 571 572 create_conf_file(CONF_FILENAME, 0, 573 "local-map " 574 "abcdefghijklmnopqrstuvwxyz0123" 575 "abcdefghijklmnopqrstuvwxyz0123" 576 "4567 " 577 IDN_NAMEPREP_CURRENT, 578 NULL); 579 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 580 ASSERT_RESULT(r, idn_invalid_name); 581} 582 583//# TESTCASE 584// title: load file (pass wrong number of parameters to idn-encoding) 585// group: generic-init quiet 586{ 587 create_conf_file(CONF_FILENAME, 0, 588 "idn-encoding ", 589 NULL); 590 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 591 ASSERT_RESULT(r, idn_invalid_syntax); 592 593 create_conf_file(CONF_FILENAME, 0, 594 "idn-encoding Punycode ?", 595 NULL); 596 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 597 ASSERT_RESULT(r, idn_invalid_syntax); 598} 599 600//# TESTCASE 601// title: load file (pass wrong number of parameters to nameprep) 602// group: generic-init quiet 603{ 604 create_conf_file(CONF_FILENAME, 0, 605 "nameprep ", 606 NULL); 607 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 608 ASSERT_RESULT(r, idn_invalid_syntax); 609 610 create_conf_file(CONF_FILENAME, 0, 611 "nameprep " IDN_NAMEPREP_CURRENT " ?", 612 NULL); 613 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 614 ASSERT_RESULT(r, idn_invalid_syntax); 615} 616 617//# TESTCASE 618// title: load file (pass wrong number of parameters to local-map) 619// group: generic-init quiet 620{ 621 create_conf_file(CONF_FILENAME, 0, 622 "local-map ", 623 NULL); 624 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 625 ASSERT_RESULT(r, idn_invalid_syntax); 626 627 create_conf_file(CONF_FILENAME, 0, 628 "local-map .jp ", 629 NULL); 630 r = idn_resconf_loadfile(ctx, CONF_FILENAME); 631 ASSERT_RESULT(r, idn_invalid_syntax); 632} 633 634//# TESTCASE 635// title: getdelimitermap 636// group: generic-init set-defaults delimitermap_ctx 637{ 638 delimitermap_ctx1 = idn_resconf_getdelimitermap(ctx); 639 ASSERT_PTR_NE(delimitermap_ctx1, NULL); 640} 641 642//# TESTCASE 643// title: setdelimitermap 644// group: generic-init set-defaults delimitermap_ctx 645{ 646 r = idn_delimitermap_create(&delimitermap_ctx1); 647 ASSERT_RESULT(r, idn_success); 648 649 /* set delimitermap context. */ 650 idn_resconf_setdelimitermap(ctx, delimitermap_ctx1); 651 delimitermap_ctx2 = idn_resconf_getdelimitermap(ctx); 652 ASSERT_PTR(delimitermap_ctx2, delimitermap_ctx1); 653 idn_delimitermap_destroy(delimitermap_ctx2); 654 655 /* set NULL as delimitermap context */ 656 idn_resconf_setdelimitermap(ctx, NULL); 657 delimitermap_ctx2 = idn_resconf_getdelimitermap(ctx); 658 ASSERT_PTR(delimitermap_ctx2, NULL); 659} 660 661//# TESTCASE 662// title: addalldelimitermapucs 663// group: generic-init set-defaults 664{ 665 static unsigned long v[] = {0x002C, 0x3001, 0xFF0C}; 666 int nv = sizeof(v) / sizeof(*v); 667 668 r = idn_resconf_addalldelimitermapucs(ctx, v, nv); 669 ASSERT_RESULT(r, idn_success); 670} 671 672//# TESTCASE 673// title: getidnconverter 674// group: generic-init set-defaults idnconverter_ctx 675{ 676 idnconverter_ctx1 = idn_resconf_getidnconverter(ctx); 677 ASSERT_PTR_NE(idnconverter_ctx1, NULL); 678} 679 680//# TESTCASE 681// title: setidnconverter 682// group: generic-init set-defaults idnconverter_ctx 683{ 684 r = idn_converter_create("Punycode", &idnconverter_ctx1, 0); 685 ASSERT_RESULT(r, idn_success); 686 687 /* set idnconverter context. */ 688 idn_resconf_setidnconverter(ctx, idnconverter_ctx1); 689 idnconverter_ctx2 = idn_resconf_getidnconverter(ctx); 690 ASSERT_PTR(idnconverter_ctx2, idnconverter_ctx1); 691 idn_converter_destroy(idnconverter_ctx2); 692 693 /* set NULL as idnconverter context */ 694 idn_resconf_setidnconverter(ctx, NULL); 695 idnconverter_ctx2 = idn_resconf_getidnconverter(ctx); 696 ASSERT_PTR(idnconverter_ctx2, NULL); 697} 698 699//# TESTCASE 700// title: getlocalconverter 701// group: generic-init set-defaults localconverter_ctx 702{ 703 localconverter_ctx1 = idn_resconf_getlocalconverter(ctx); 704#ifdef WITHOUT_ICONV 705 ASSERT_PTR(localconverter_ctx1, NULL); 706#else 707 ASSERT_PTR_NE(localconverter_ctx1, NULL); 708#endif 709} 710 711//# TESTCASE 712// title: setlocalconverter 713// group: generic-init set-defaults localconverter_ctx 714{ 715 r = idn_converter_create("UTF-8", &localconverter_ctx1, 0); 716 ASSERT_RESULT(r, idn_success); 717 718 /* set localconverter context. */ 719 idn_resconf_setlocalconverter(ctx, localconverter_ctx1); 720 localconverter_ctx2 = idn_resconf_getlocalconverter(ctx); 721#ifdef WITHOUT_ICONV 722 ASSERT_PTR(localconverter_ctx2, NULL); 723#else 724 ASSERT_PTR(localconverter_ctx2, localconverter_ctx1); 725 idn_converter_destroy(localconverter_ctx2); 726#endif 727 728 /* set NULL as localconverter context */ 729 idn_resconf_setlocalconverter(ctx, NULL); 730 localconverter_ctx2 = idn_resconf_getlocalconverter(ctx); 731#ifdef WITHOUT_ICONV 732 ASSERT_PTR(localconverter_ctx2, NULL); 733#else 734 ASSERT_PTR_NE(localconverter_ctx2, NULL); 735#endif 736} 737 738//# TESTCASE 739// title: getauxidnconverter 740// group: generic-init set-defaults auxidnconverter_ctx 741{ 742 auxidnconverter_ctx1 = idn_resconf_getauxidnconverter(ctx); 743 ASSERT_PTR(auxidnconverter_ctx1, NULL); 744} 745 746//# TESTCASE 747// title: setauxidnconverter 748// group: generic-init set-defaults auxidnconverter_ctx 749{ 750 r = idn_converter_create("Punycode", &auxidnconverter_ctx1, 0); 751 ASSERT_RESULT(r, idn_success); 752 753 /* set auxidnconverter context. */ 754 idn_resconf_setauxidnconverter(ctx, auxidnconverter_ctx1); 755 auxidnconverter_ctx2 = idn_resconf_getauxidnconverter(ctx); 756 ASSERT_PTR(auxidnconverter_ctx2, auxidnconverter_ctx1); 757 idn_converter_destroy(auxidnconverter_ctx2); 758 759 /* set NULL as auxidnconverter context */ 760 idn_resconf_setauxidnconverter(ctx, NULL); 761 auxidnconverter_ctx2 = idn_resconf_getauxidnconverter(ctx); 762 ASSERT_PTR(auxidnconverter_ctx2, NULL); 763} 764 765//# TESTCASE 766// title: getlocalmapselector 767// group: generic-init set-defaults mapselector_ctx 768{ 769 mapselector_ctx1 = idn_resconf_getlocalmapselector(ctx); 770 ASSERT_PTR(mapselector_ctx1, NULL); 771} 772 773//# TESTCASE 774// title: setlocalmapselector 775// group: generic-init set-defaults mapselector_ctx 776{ 777 r = idn_mapselector_create(&mapselector_ctx1); 778 ASSERT_RESULT(r, idn_success); 779 780 /* set localmapselector context. */ 781 idn_resconf_setlocalmapselector(ctx, mapselector_ctx1); 782 mapselector_ctx2 = idn_resconf_getlocalmapselector(ctx); 783 ASSERT_PTR(mapselector_ctx2, mapselector_ctx1); 784 idn_mapselector_destroy(mapselector_ctx2); 785 786 /* set NULL as localmapselector context */ 787 idn_resconf_setlocalmapselector(ctx, NULL); 788 mapselector_ctx2 = idn_resconf_getlocalmapselector(ctx); 789 ASSERT_PTR(mapselector_ctx2, NULL); 790} 791 792//# TESTCASE 793// title: addalllocalmapselectornames 794// group: generic-init set-defaults 795{ 796 static const char *names[] = { 797 "filemap:" MAP_FILENAME, 798 "filemap:" MAP_FILENAME, 799 "filemap:" MAP_FILENAME 800 }; 801 int nnames = sizeof(names) / sizeof(*names); 802 803 create_conf_file(MAP_FILENAME, 0, 804 "2212; FF0D", 805 NULL); 806 r = idn_resconf_addalllocalmapselectornames(ctx, ".jp", names, nnames); 807 ASSERT_RESULT(r, idn_success); 808} 809 810//# TESTCASE 811// title: getmapper 812// group: generic-init set-defaults mapper_ctx 813{ 814 mapper_ctx1 = idn_resconf_getmapper(ctx); 815 ASSERT_PTR_NE(mapper_ctx1, NULL); 816} 817 818//# TESTCASE 819// title: setmapper 820// group: generic-init set-defaults mapper_ctx 821{ 822 r = idn_mapper_create(&mapper_ctx1); 823 ASSERT_RESULT(r, idn_success); 824 825 /* set mapper context. */ 826 idn_resconf_setmapper(ctx, mapper_ctx1); 827 mapper_ctx2 = idn_resconf_getmapper(ctx); 828 ASSERT_PTR(mapper_ctx2, mapper_ctx1); 829 idn_mapper_destroy(mapper_ctx2); 830 831 /* set NULL as mapper context */ 832 idn_resconf_setmapper(ctx, NULL); 833 mapper_ctx2 = idn_resconf_getmapper(ctx); 834 ASSERT_PTR(mapper_ctx2, NULL); 835} 836 837//# TESTCASE 838// title: addallmappernames 839// group: generic-init set-defaults 840{ 841 static const char *names[] = { 842 IDN_NAMEPREP_CURRENT, 843 IDN_NAMEPREP_CURRENT, 844 IDN_NAMEPREP_CURRENT 845 }; 846 int nnames = sizeof(names) / sizeof(*names); 847 848 r = idn_resconf_addallmappernames(ctx, names, nnames); 849 ASSERT_RESULT(r, idn_success); 850} 851 852//# TESTCASE 853// title: getnormalizer 854// group: generic-init set-defaults normalizer_ctx 855{ 856 normalizer_ctx1 = idn_resconf_getnormalizer(ctx); 857 ASSERT_PTR_NE(normalizer_ctx1, NULL); 858} 859 860//# TESTCASE 861// title: setnormalizer 862// group: generic-init set-defaults normalizer_ctx 863{ 864 r = idn_normalizer_create(&normalizer_ctx1); 865 ASSERT_RESULT(r, idn_success); 866 867 /* set normalizer context. */ 868 idn_resconf_setnormalizer(ctx, normalizer_ctx1); 869 normalizer_ctx2 = idn_resconf_getnormalizer(ctx); 870 ASSERT_PTR(normalizer_ctx2, normalizer_ctx1); 871 idn_normalizer_destroy(normalizer_ctx2); 872 873 /* set NULL as normalizer context */ 874 idn_resconf_setnormalizer(ctx, NULL); 875 normalizer_ctx2 = idn_resconf_getnormalizer(ctx); 876 ASSERT_PTR(normalizer_ctx2, NULL); 877} 878 879//# TESTCASE 880// title: addallnormalizernames 881// group: generic-init set-defaults 882{ 883 static const char *names[] = { 884 IDN_NAMEPREP_CURRENT, 885 IDN_NAMEPREP_CURRENT, 886 IDN_NAMEPREP_CURRENT 887 }; 888 int nnames = sizeof(names) / sizeof(*names); 889 890 r = idn_resconf_addallnormalizernames(ctx, names, nnames); 891 ASSERT_RESULT(r, idn_success); 892} 893 894//# TESTCASE 895// title: getprohibitchecker 896// group: generic-init set-defaults prohibitchecker_ctx 897{ 898 prohibitchecker_ctx1 = idn_resconf_getprohibitchecker(ctx); 899 ASSERT_PTR_NE(prohibitchecker_ctx1, NULL); 900} 901 902//# TESTCASE 903// title: setprohibitchecker 904// group: generic-init set-defaults prohibitchecker_ctx 905{ 906 r = idn_checker_create(&prohibitchecker_ctx1); 907 ASSERT_RESULT(r, idn_success); 908 909 /* set checker context. */ 910 idn_resconf_setprohibitchecker(ctx, prohibitchecker_ctx1); 911 prohibitchecker_ctx2 = idn_resconf_getprohibitchecker(ctx); 912 ASSERT_PTR(prohibitchecker_ctx2, prohibitchecker_ctx1); 913 idn_checker_destroy(prohibitchecker_ctx2); 914 915 /* set NULL as checker context */ 916 idn_resconf_setprohibitchecker(ctx, NULL); 917 prohibitchecker_ctx2 = idn_resconf_getprohibitchecker(ctx); 918 ASSERT_PTR(prohibitchecker_ctx2, NULL); 919} 920 921//# TESTCASE 922// title: addallprohibitcheckernames 923// group: generic-init set-defaults 924{ 925 static const char *names[] = { 926 IDN_NAMEPREP_CURRENT, 927 IDN_NAMEPREP_CURRENT, 928 IDN_NAMEPREP_CURRENT 929 }; 930 int nnames = sizeof(names) / sizeof(*names); 931 932 r = idn_resconf_addallprohibitcheckernames(ctx, names, nnames); 933 ASSERT_RESULT(r, idn_success); 934} 935 936//# TESTCASE 937// title: getunassignedchecker 938// group: generic-init set-defaults unassignedchecker_ctx 939{ 940 unassignedchecker_ctx1 = idn_resconf_getunassignedchecker(ctx); 941 ASSERT_PTR_NE(unassignedchecker_ctx1, NULL); 942} 943 944//# TESTCASE 945// title: setunassignedchecker 946// group: generic-init set-defaults unassignedchecker_ctx 947{ 948 r = idn_checker_create(&unassignedchecker_ctx1); 949 ASSERT_RESULT(r, idn_success); 950 951 /* set checker context. */ 952 idn_resconf_setunassignedchecker(ctx, unassignedchecker_ctx1); 953 unassignedchecker_ctx2 = idn_resconf_getunassignedchecker(ctx); 954 ASSERT_PTR(unassignedchecker_ctx2, unassignedchecker_ctx1); 955 idn_checker_destroy(unassignedchecker_ctx2); 956 957 /* set NULL as checker context */ 958 idn_resconf_setunassignedchecker(ctx, NULL); 959 unassignedchecker_ctx2 = idn_resconf_getunassignedchecker(ctx); 960 ASSERT_PTR(unassignedchecker_ctx2, NULL); 961} 962 963//# TESTCASE 964// title: addallunassignedcheckernames 965// group: generic-init set-defaults 966{ 967 static const char *names[] = { 968 IDN_NAMEPREP_CURRENT, 969 IDN_NAMEPREP_CURRENT, 970 IDN_NAMEPREP_CURRENT 971 }; 972 int nnames = sizeof(names) / sizeof(*names); 973 974 r = idn_resconf_addallunassignedcheckernames(ctx, names, nnames); 975 ASSERT_RESULT(r, idn_success); 976} 977 978//# TESTCASE 979// title: getbidichecker 980// group: generic-init set-defaults bidichecker_ctx 981{ 982 bidichecker_ctx1 = idn_resconf_getbidichecker(ctx); 983 ASSERT_PTR_NE(bidichecker_ctx1, NULL); 984} 985 986//# TESTCASE 987// title: setbidichecker 988// group: generic-init set-defaults bidichecker_ctx 989{ 990 r = idn_checker_create(&bidichecker_ctx1); 991 ASSERT_RESULT(r, idn_success); 992 993 /* set checker context. */ 994 idn_resconf_setbidichecker(ctx, bidichecker_ctx1); 995 bidichecker_ctx2 = idn_resconf_getbidichecker(ctx); 996 ASSERT_PTR(bidichecker_ctx2, bidichecker_ctx1); 997 idn_checker_destroy(bidichecker_ctx2); 998 999 /* set NULL as checker context */ 1000 idn_resconf_setbidichecker(ctx, NULL); 1001 bidichecker_ctx2 = idn_resconf_getbidichecker(ctx); 1002 ASSERT_PTR(bidichecker_ctx2, NULL); 1003} 1004 1005//# TESTCASE 1006// title: addallbidicheckernames 1007// group: generic-init set-defaults 1008{ 1009 static const char *names[] = { 1010 IDN_NAMEPREP_CURRENT, 1011 IDN_NAMEPREP_CURRENT, 1012 IDN_NAMEPREP_CURRENT 1013 }; 1014 int nnames = sizeof(names) / sizeof(*names); 1015 1016 r = idn_resconf_addallbidicheckernames(ctx, names, nnames); 1017 ASSERT_RESULT(r, idn_success); 1018} 1019 1020//# TESTCASE 1021// title: setnameprepversion 1022// group: generic-init set-defaults 1023{ 1024 idn_resconf_setnameprepversion(ctx, IDN_NAMEPREP_CURRENT); 1025 ASSERT_RESULT(r, idn_success); 1026} 1027