| Index: icu46/source/test/iotest/trnstst.c
|
| ===================================================================
|
| --- icu46/source/test/iotest/trnstst.c (revision 0)
|
| +++ icu46/source/test/iotest/trnstst.c (revision 0)
|
| @@ -0,0 +1,316 @@
|
| +/*
|
| +**********************************************************************
|
| +* Copyright (C) 2005-2005, International Business Machines
|
| +* Corporation and others. All Rights Reserved.
|
| +**********************************************************************
|
| +* file name: strtst.c
|
| +* created by: George Rhoten
|
| +*/
|
| +
|
| +#include "iotest.h"
|
| +#include "unicode/ustdio.h"
|
| +#include "unicode/utrans.h"
|
| +#include "unicode/ustring.h"
|
| +
|
| +static void TestTranslitOps(void)
|
| +{
|
| +#if !UCONFIG_NO_TRANSLITERATION
|
| + UFILE *f;
|
| + UErrorCode err = U_ZERO_ERROR;
|
| + UTransliterator *a = NULL, *b = NULL, *c = NULL;
|
| +
|
| + log_verbose("opening a transliterator and UFILE for testing\n");
|
| +
|
| + f = u_fopen(STANDARD_TEST_FILE, "w", "en_US_POSIX", NULL);
|
| + if(f == NULL)
|
| + {
|
| + log_err("Couldn't open test file for writing\n");
|
| + return;
|
| + }
|
| +
|
| + a = utrans_open("Latin-Greek", UTRANS_FORWARD, NULL, -1, NULL, &err);
|
| + if(U_FAILURE(err))
|
| + {
|
| + log_err("Error opening transliterator %s\n", u_errorName(err));
|
| + u_fclose(f);
|
| + return;
|
| + }
|
| +
|
| +
|
| + log_verbose("setting a transliterator\n");
|
| + b = u_fsettransliterator(f, U_WRITE, a, &err);
|
| + if(U_FAILURE(err))
|
| + {
|
| + log_err("Error setting transliterator %s\n", u_errorName(err));
|
| + u_fclose(f);
|
| + return;
|
| + }
|
| +
|
| + if(b != NULL)
|
| + {
|
| + log_err("Error, a transliterator was already set!\n");
|
| + }
|
| +
|
| + b = u_fsettransliterator(NULL, U_WRITE, a, &err);
|
| + if(err != U_ILLEGAL_ARGUMENT_ERROR)
|
| + {
|
| + log_err("Error setting transliterator on NULL file err=%s\n", u_errorName(err));
|
| + }
|
| +
|
| + if(b != a)
|
| + {
|
| + log_err("Error getting the same transliterator was not returned on NULL file\n");
|
| + }
|
| +
|
| + err = U_FILE_ACCESS_ERROR;
|
| + b = u_fsettransliterator(f, U_WRITE, a, &err);
|
| + if(err != U_FILE_ACCESS_ERROR)
|
| + {
|
| + log_err("Error setting transliterator on error status err=%s\n", u_errorName(err));
|
| + }
|
| +
|
| + if(b != a)
|
| + {
|
| + log_err("Error getting the same transliterator on error status\n");
|
| + }
|
| + err = U_ZERO_ERROR;
|
| +
|
| +
|
| + log_verbose("un-setting transliterator (setting to null)\n");
|
| + c = u_fsettransliterator(f, U_WRITE, NULL, &err);
|
| + if(U_FAILURE(err))
|
| + {
|
| + log_err("Err setting transliterator %s\n", u_errorName(err));
|
| + u_fclose(f);
|
| + return;
|
| + }
|
| +
|
| + if(c != a)
|
| + {
|
| + log_err("Err, transliterator that came back was not the original one.\n");
|
| + }
|
| +
|
| + log_verbose("Trying to set read transliterator (should fail)\n");
|
| + b = u_fsettransliterator(f, U_READ, NULL, &err);
|
| + if(err != U_UNSUPPORTED_ERROR)
|
| + {
|
| + log_err("Should have U_UNSUPPORTED_ERROR setting Read transliterator but got %s - REVISIT AND UPDATE TEST\n", u_errorName(err));
|
| + u_fclose(f);
|
| + return;
|
| + }
|
| + else
|
| + {
|
| + log_verbose("Got %s error (expected) setting READ transliterator.\n", u_errorName(err));
|
| + err = U_ZERO_ERROR;
|
| + }
|
| +
|
| +
|
| + utrans_close(c);
|
| + u_fclose(f);
|
| +#endif
|
| +}
|
| +
|
| +static void TestTranslitFileOut(void)
|
| +{
|
| +#if !UCONFIG_NO_FORMATTING
|
| +#if !UCONFIG_NO_TRANSLITERATION
|
| + UFILE *f;
|
| + UErrorCode err = U_ZERO_ERROR;
|
| + UTransliterator *a = NULL, *b = NULL, *c = NULL;
|
| + FILE *infile;
|
| + UChar compare[] = { 0xfeff, 0x03a3, 0x03c4, 0x03b5, 0x03c6, 0x1f00, 0x03bd, 0x03bf, 0x03c2, 0x043C, 0x0000 };
|
| + UChar ubuf[256];
|
| + int len;
|
| +
|
| + log_verbose("opening a transliterator and UFILE for testing\n");
|
| +
|
| + f = u_fopen(STANDARD_TEST_FILE, "w", "en_US_POSIX", "utf-16");
|
| + if(f == NULL)
|
| + {
|
| + log_err("Couldn't open test file for writing\n");
|
| + return;
|
| + }
|
| +
|
| + a = utrans_open("Latin-Greek", UTRANS_FORWARD, NULL, -1, NULL, &err);
|
| + if(U_FAILURE(err))
|
| + {
|
| + log_err("Err opening transliterator %s\n", u_errorName(err));
|
| + u_fclose(f);
|
| + return;
|
| + }
|
| +
|
| + log_verbose("setting a transliterator\n");
|
| + b = u_fsettransliterator(f, U_WRITE, a, &err);
|
| + if(U_FAILURE(err))
|
| + {
|
| + log_err("Err setting transliterator %s\n", u_errorName(err));
|
| + u_fclose(f);
|
| + return;
|
| + }
|
| +
|
| + if(b != NULL)
|
| + {
|
| + log_err("Err, a transliterator was already set!\n");
|
| + }
|
| +
|
| + u_fprintf(f, "Stephanos");
|
| +
|
| + c = utrans_open("Latin-Cyrillic", UTRANS_FORWARD, NULL, -1, NULL, &err);
|
| + if(U_FAILURE(err))
|
| + {
|
| + log_err("Err opening transliterator %s\n", u_errorName(err));
|
| + u_fclose(f);
|
| + return;
|
| + }
|
| +
|
| + log_verbose("setting a transliterator\n");
|
| + b = u_fsettransliterator(f, U_WRITE, c, &err);
|
| + if(U_FAILURE(err))
|
| + {
|
| + log_err("Err setting transliterator %s\n", u_errorName(err));
|
| + u_fclose(f);
|
| + return;
|
| + }
|
| +
|
| + if(b != a)
|
| + {
|
| + log_err("Error: a different transliterator was returned!\n");
|
| + }
|
| + utrans_close(b);
|
| +
|
| + u_fprintf(f, "m");
|
| +
|
| + u_fclose(f);
|
| +
|
| + log_verbose("Re reading test file to verify transliteration\n");
|
| + infile = fopen(STANDARD_TEST_FILE, "rb");
|
| + if(infile == NULL)
|
| + {
|
| + log_err("Couldn't reopen test file\n");
|
| + return;
|
| + }
|
| +
|
| + len=fread(ubuf, sizeof(UChar), u_strlen(compare), infile);
|
| + log_verbose("Read %d UChars\n", len);
|
| + if(len != u_strlen(compare))
|
| + {
|
| + log_err("Wanted %d UChars from file, got %d\n", u_strlen(compare), len);
|
| + }
|
| + ubuf[len]=0;
|
| +
|
| + if(u_strlen(compare) != u_strlen(ubuf))
|
| + {
|
| + log_err("Wanted %d UChars from file, but u_strlen() returns %d\n", u_strlen(compare), len);
|
| + }
|
| +
|
| + if(u_strcmp(compare, ubuf))
|
| + {
|
| + log_err("Read string doesn't match expected.\n");
|
| + }
|
| + else
|
| + {
|
| + log_verbose("Read string matches expected.\n");
|
| + }
|
| +
|
| + fclose(infile);
|
| +#endif
|
| +#endif
|
| +}
|
| +
|
| +static void TestTranslitStringOut(void)
|
| +{
|
| +#if !UCONFIG_NO_FORMATTING
|
| +#if !UCONFIG_NO_TRANSLITERATION
|
| + UFILE *f;
|
| + UErrorCode err = U_ZERO_ERROR;
|
| + UTransliterator *a = NULL, *b = NULL, *c = NULL;
|
| + UChar compare[] = { 0x03a3, 0x03c4, 0x03b5, 0x03c6, 0x1f00, 0x03bd, 0x03bf, 0x03c2, 0x043C, 0x0000 };
|
| + UChar ubuf[256];
|
| +
|
| + log_verbose("opening a transliterator and UFILE for testing\n");
|
| +
|
| + f = u_fstropen(ubuf, sizeof(ubuf)/sizeof(ubuf[0]), "en_US_POSIX");
|
| + if(f == NULL)
|
| + {
|
| + log_err("Couldn't open test file for writing\n");
|
| + return;
|
| + }
|
| +
|
| + a = utrans_open("Latin-Greek", UTRANS_FORWARD, NULL, -1, NULL, &err);
|
| + if(U_FAILURE(err))
|
| + {
|
| + log_err("Err opening transliterator %s\n", u_errorName(err));
|
| + u_fclose(f);
|
| + return;
|
| + }
|
| +
|
| + log_verbose("setting a transliterator\n");
|
| + b = u_fsettransliterator(f, U_WRITE, a, &err);
|
| + if(U_FAILURE(err))
|
| + {
|
| + log_err("Err setting transliterator %s\n", u_errorName(err));
|
| + u_fclose(f);
|
| + return;
|
| + }
|
| +
|
| + if(b != NULL)
|
| + {
|
| + log_err("Err, a transliterator was already set!\n");
|
| + }
|
| +
|
| + u_fprintf(f, "Stephanos");
|
| +
|
| + c = utrans_open("Latin-Cyrillic", UTRANS_FORWARD, NULL, -1, NULL, &err);
|
| + if(U_FAILURE(err))
|
| + {
|
| + log_err("Err opening transliterator %s\n", u_errorName(err));
|
| + u_fclose(f);
|
| + return;
|
| + }
|
| +
|
| + log_verbose("setting a transliterator\n");
|
| + b = u_fsettransliterator(f, U_WRITE, c, &err);
|
| + if(U_FAILURE(err))
|
| + {
|
| + log_err("Err setting transliterator %s\n", u_errorName(err));
|
| + u_fclose(f);
|
| + return;
|
| + }
|
| +
|
| + if(b != a)
|
| + {
|
| + log_err("Error: a different transliterator was returned!\n");
|
| + }
|
| + utrans_close(b);
|
| +
|
| + u_fprintf(f, "m");
|
| +
|
| + u_fclose(f);
|
| +
|
| + if(u_strlen(compare) != u_strlen(ubuf))
|
| + {
|
| + log_err("Wanted %d UChars from file, but u_strlen() returns %d\n", u_strlen(compare), u_strlen(ubuf));
|
| + }
|
| +
|
| + if(u_strcmp(compare, ubuf))
|
| + {
|
| + log_err("Read string doesn't match expected.\n");
|
| + }
|
| + else
|
| + {
|
| + log_verbose("Read string matches expected.\n");
|
| + }
|
| +#endif
|
| +#endif
|
| +}
|
| +
|
| +U_CFUNC void
|
| +addTranslitTest(TestNode** root) {
|
| +#if !UCONFIG_NO_TRANSLITERATION
|
| + addTest(root, &TestTranslitOps, "translit/ops");
|
| +#if !UCONFIG_NO_FORMATTING
|
| + addTest(root, &TestTranslitFileOut, "translit/fileOut");
|
| + addTest(root, &TestTranslitStringOut, "translit/stringOut");
|
| +#endif
|
| +#endif
|
| +}
|
|
|
| Property changes on: icu46/source/test/iotest/trnstst.c
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|