1*00b67f09SDavid van Moolenbroek#ifndef lint 2*00b67f09SDavid van Moolenbroekstatic char *rcsid = "Id: api-init2.tsy,v 1.1 2003/06/04 00:26:47 marka Exp "; 3*00b67f09SDavid van Moolenbroek#endif 4*00b67f09SDavid van Moolenbroek 5*00b67f09SDavid van Moolenbroek/* 6*00b67f09SDavid van Moolenbroek * Copyright (c) 2002 Japan Network Information Center. 7*00b67f09SDavid van Moolenbroek * All rights reserved. 8*00b67f09SDavid van Moolenbroek * 9*00b67f09SDavid van Moolenbroek * By using this file, you agree to the terms and conditions set forth bellow. 10*00b67f09SDavid van Moolenbroek * 11*00b67f09SDavid van Moolenbroek * LICENSE TERMS AND CONDITIONS 12*00b67f09SDavid van Moolenbroek * 13*00b67f09SDavid van Moolenbroek * The following License Terms and Conditions apply, unless a different 14*00b67f09SDavid van Moolenbroek * license is obtained from Japan Network Information Center ("JPNIC"), 15*00b67f09SDavid van Moolenbroek * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, 16*00b67f09SDavid van Moolenbroek * Chiyoda-ku, Tokyo 101-0047, Japan. 17*00b67f09SDavid van Moolenbroek * 18*00b67f09SDavid van Moolenbroek * 1. Use, Modification and Redistribution (including distribution of any 19*00b67f09SDavid van Moolenbroek * modified or derived work) in source and/or binary forms is permitted 20*00b67f09SDavid van Moolenbroek * under this License Terms and Conditions. 21*00b67f09SDavid van Moolenbroek * 22*00b67f09SDavid van Moolenbroek * 2. Redistribution of source code must retain the copyright notices as they 23*00b67f09SDavid van Moolenbroek * appear in each source code file, this License Terms and Conditions. 24*00b67f09SDavid van Moolenbroek * 25*00b67f09SDavid van Moolenbroek * 3. Redistribution in binary form must reproduce the Copyright Notice, 26*00b67f09SDavid van Moolenbroek * this License Terms and Conditions, in the documentation and/or other 27*00b67f09SDavid van Moolenbroek * materials provided with the distribution. For the purposes of binary 28*00b67f09SDavid van Moolenbroek * distribution the "Copyright Notice" refers to the following language: 29*00b67f09SDavid van Moolenbroek * "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved." 30*00b67f09SDavid van Moolenbroek * 31*00b67f09SDavid van Moolenbroek * 4. The name of JPNIC may not be used to endorse or promote products 32*00b67f09SDavid van Moolenbroek * derived from this Software without specific prior written approval of 33*00b67f09SDavid van Moolenbroek * JPNIC. 34*00b67f09SDavid van Moolenbroek * 35*00b67f09SDavid van Moolenbroek * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC 36*00b67f09SDavid van Moolenbroek * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 37*00b67f09SDavid van Moolenbroek * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 38*00b67f09SDavid van Moolenbroek * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE 39*00b67f09SDavid van Moolenbroek * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 40*00b67f09SDavid van Moolenbroek * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 41*00b67f09SDavid van Moolenbroek * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 42*00b67f09SDavid van Moolenbroek * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 43*00b67f09SDavid van Moolenbroek * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 44*00b67f09SDavid van Moolenbroek * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 45*00b67f09SDavid van Moolenbroek * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 46*00b67f09SDavid van Moolenbroek */ 47*00b67f09SDavid van Moolenbroek 48*00b67f09SDavid van Moolenbroek#include <stddef.h> 49*00b67f09SDavid van Moolenbroek#include <stdio.h> 50*00b67f09SDavid van Moolenbroek#include <stdlib.h> 51*00b67f09SDavid van Moolenbroek#include <idn/api.h> 52*00b67f09SDavid van Moolenbroek#include <idn/log.h> 53*00b67f09SDavid van Moolenbroek 54*00b67f09SDavid van Moolenbroek#include "codeset.h" 55*00b67f09SDavid van Moolenbroek#include "setenv.h" 56*00b67f09SDavid van Moolenbroek#include "testutil.h" 57*00b67f09SDavid van Moolenbroek 58*00b67f09SDavid van Moolenbroek#ifndef EUCJP_ENCODING_NAME 59*00b67f09SDavid van Moolenbroek#define EUCJP_ENCODING_NAME "eucJP" 60*00b67f09SDavid van Moolenbroek#endif 61*00b67f09SDavid van Moolenbroek 62*00b67f09SDavid van Moolenbroek#define CONF_FILENAME "test.conf" 63*00b67f09SDavid van Moolenbroek 64*00b67f09SDavid van Moolenbroek//-------------------------------------------------------------------- 65*00b67f09SDavid van Moolenbroek// Setups and Teardowns. 66*00b67f09SDavid van Moolenbroek//-------------------------------------------------------------------- 67*00b67f09SDavid van Moolenbroek 68*00b67f09SDavid van Moolenbroek//# SETUP 69*00b67f09SDavid van Moolenbroek// group: init 70*00b67f09SDavid van Moolenbroek{ 71*00b67f09SDavid van Moolenbroek char to[256]; 72*00b67f09SDavid van Moolenbroek idn_result_t r; 73*00b67f09SDavid van Moolenbroek 74*00b67f09SDavid van Moolenbroek setenv("IDN_LOCAL_CODESET", "UTF-8", 1); 75*00b67f09SDavid van Moolenbroek unsetenv("IDN_DISABLE"); 76*00b67f09SDavid van Moolenbroek create_conf_file(CONF_FILENAME, 0, 77*00b67f09SDavid van Moolenbroek "idn-encoding UTF-8", 78*00b67f09SDavid van Moolenbroek NULL); 79*00b67f09SDavid van Moolenbroek} 80*00b67f09SDavid van Moolenbroek 81*00b67f09SDavid van Moolenbroek//# TEARDOWN 82*00b67f09SDavid van Moolenbroek// group: init 83*00b67f09SDavid van Moolenbroek{ 84*00b67f09SDavid van Moolenbroek remove(CONF_FILENAME); 85*00b67f09SDavid van Moolenbroek} 86*00b67f09SDavid van Moolenbroek 87*00b67f09SDavid van Moolenbroek//-------------------------------------------------------------------- 88*00b67f09SDavid van Moolenbroek// Testcases. 89*00b67f09SDavid van Moolenbroek//-------------------------------------------------------------------- 90*00b67f09SDavid van Moolenbroek 91*00b67f09SDavid van Moolenbroek//# TESTCASE 92*00b67f09SDavid van Moolenbroek// title: nameinit(1) 93*00b67f09SDavid van Moolenbroek// group: init 94*00b67f09SDavid van Moolenbroek{ 95*00b67f09SDavid van Moolenbroek r = idn__setconffile(CONF_FILENAME); 96*00b67f09SDavid van Moolenbroek ASSERT_RESULT(r, idn_success); 97*00b67f09SDavid van Moolenbroek 98*00b67f09SDavid van Moolenbroek r = idn_nameinit(1); 99*00b67f09SDavid van Moolenbroek ASSERT_RESULT(r, idn_success); 100*00b67f09SDavid van Moolenbroek 101*00b67f09SDavid van Moolenbroek r = idn_encodename(IDN_ENCODE_APP, "<U+3042>", to, sizeof(to)); 102*00b67f09SDavid van Moolenbroek ASSERT_RESULT(r, idn_success); 103*00b67f09SDavid van Moolenbroek ASSERT_STRING(to, "<U+3042>"); 104*00b67f09SDavid van Moolenbroek 105*00b67f09SDavid van Moolenbroek r = idn_decodename(IDN_DECODE_APP, "xn--l8j", to, sizeof(to)); 106*00b67f09SDavid van Moolenbroek ASSERT_RESULT(r, idn_success); 107*00b67f09SDavid van Moolenbroek ASSERT_STRING(to, "xn--l8j"); 108*00b67f09SDavid van Moolenbroek 109*00b67f09SDavid van Moolenbroek r = idn_decodename2(IDN_DECODE_APP, "xn--l8j", to, sizeof(to), 110*00b67f09SDavid van Moolenbroek EUCJP_ENCODING_NAME); 111*00b67f09SDavid van Moolenbroek ASSERT_RESULT(r, idn_success); 112*00b67f09SDavid van Moolenbroek ASSERT_STRING(to, "xn--l8j"); 113*00b67f09SDavid van Moolenbroek} 114