You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by wr...@locus.apache.org on 2000/10/17 19:09:16 UTC
cvs commit: apache-2.0/src/lib/apr/test testucs.c testucs.dsp testsuite.dsw
wrowe 00/10/17 10:09:13
Added: src/lib/apr/test testucs.c testucs.dsp testsuite.dsw
Log:
Test for utf8/ucs2 conversion, plus a cool little workspace for APR
testing from Win32. Load src/lib/apr/test/testsuite.dsw to get at
any of the APR tests. Note I didn't clean them up at all (except
for testucs), so your mileage may vary.
Revision Changes Path
1.1 apache-2.0/src/lib/apr/test/testucs.c
Index: testucs.c
===================================================================
#include "apr_xlate.h"
#include "../i18n/unix/i18n.h"
#include <wchar.h>
#include <string.h>
struct testval {
unsigned char n[8];
wchar_t w[4];
int nl;
int wl;
};
void displaynw(struct testval *f, struct testval *l)
{
char x[80], *t = x;
int i;
for (i = 0; i < f->nl; ++i)
t += sprintf(t, "%02X ", f->n[i]);
*(t++) = '-';
for (i = 0; i < l->nl; ++i)
t += sprintf(t, " %02X", l->n[i]);
*(t++) = ' ';
*(t++) = '=';
*(t++) = ' ';
for (i = 0; i < f->wl; ++i)
t += sprintf(t, "%04X ", f->w[i]);
*(t++) = '-';
for (i = 0; i < l->wl; ++i)
t += sprintf(t, " %04X", l->w[i]);
puts(x);
}
/*
* Test every possible byte value.
* If the test passes or fails at this byte value we are done.
* Otherwise iterate test_nrange again, appending another byte.
*/
void test_nrange(struct testval *p)
{
struct testval f, l, s;
apr_status_t rc;
int success = 0;
memcpy (&s, p, sizeof(s));
++s.nl;
do {
apr_size_t nl = s.nl, wl = sizeof(s.w) / 2;
rc = conv_utf8_to_ucs2(s.n, &nl, s.w, &wl);
s.wl = (sizeof(s.w) / 2) - wl;
if (!nl && rc == APR_SUCCESS) {
if (!success) {
memcpy(&f, &s, sizeof(s));
success = -1;
}
else {
if (s.wl != l.wl
|| memcmp(s.w, l.w, (s.wl - 1) * 2) != 0
|| s.w[s.wl - 1] != l.w[l.wl - 1] + 1) {
displaynw(&f, &l);
memcpy(&f, &s, sizeof(s));
}
}
memcpy(&l, &s, sizeof(s));
}
else {
if (success) {
displaynw(&f, &l);
success = 0;
}
if (rc == APR_INCOMPLETE) {
test_nrange(&s);
}
}
} while (++s.n[s.nl - 1]);
if (success) {
displaynw(&f, &l);
success = 0;
}
}
/*
* Test every possible word value.
* Once we are finished, retest every possible word value.
* if the test fails on the following null word, iterate test_nrange
* again, appending another word.
* This assures the output order of the two tests are in sync.
*/
void test_wrange(struct testval *p)
{
struct testval f, l, s;
apr_status_t rc;
int success = 0;
memcpy (&s, p, sizeof(s));
++s.wl;
do {
apr_size_t nl = sizeof(s.n), wl = s.wl;
rc = conv_ucs2_to_utf8(s.w, &wl, s.n, &nl);
s.nl = sizeof(s.n) - nl;
if (!wl && rc == APR_SUCCESS) {
if (!success) {
memcpy(&f, &s, sizeof(s));
success = -1;
}
else {
if (s.nl != l.nl
|| memcmp(s.n, l.n, s.nl - 1) != 0
|| s.n[s.nl - 1] != l.n[l.nl - 1] + 1) {
displaynw(&f, &l);
memcpy(&f, &s, sizeof(s));
}
}
memcpy(&l, &s, sizeof(s));
}
else {
if (success) {
displaynw(&f, &l);
success = 0;
}
}
} while (++s.w[s.wl - 1]);
if (success) {
displaynw(&f, &l);
success = 0;
}
do {
int wl = s.wl, nl = sizeof(s.n);
rc = conv_ucs2_to_utf8(s.w, &wl, s.n, &nl);
s.nl = sizeof(s.n) - s.nl;
if (rc == APR_INCOMPLETE) {
test_wrange(&s);
}
} while (++s.w[s.wl - 1]);
}
/*
* Syntax: testucs [w|n]
*
* If arg is not recognized, run both tests.
*/
int main(int argc, char **argv)
{
struct testval s;
memset (&s, 0, sizeof(s));
if (argc < 2 || tolower(*argv[1]) != 'w') {
printf ("\n\nTesting Narrow Char Ranges\n");
test_nrange(&s);
}
if (argc < 2 || tolower(*argv[1]) != 'n') {
printf ("\n\nTesting Wide Char Ranges\n");
test_wrange(&s);
}
return 0;
}
1.1 apache-2.0/src/lib/apr/test/testucs.dsp
Index: testucs.dsp
===================================================================
# Microsoft Developer Studio Project File - Name="testucs" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=testucs - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "testucs.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "testucs.mak" CFG="testucs - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "testucs - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "testucs - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "testucs - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\include" /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "APR_DECLARE_SYMBOLS" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:".\testucs.exe"
# SUBTRACT LINK32 /debug
!ELSEIF "$(CFG)" == "testucs - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "testucs_"
# PROP BASE Intermediate_Dir "testucs_"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "testucs"
# PROP Intermediate_Dir "testucs"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /ZI /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "APR_DECLARE_SYMBOLS" /D "_CONSOLE" /D "_MBCS" /FD /ZI /c
# SUBTRACT CPP /YX /Yc /Yu
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:".\testucs.exe" /pdbtype:sept
# SUBTRACT LINK32 /incremental:no
!ENDIF
# Begin Target
# Name "testucs - Win32 Release"
# Name "testucs - Win32 Debug"
# Begin Source File
SOURCE=.\testucs.c
# End Source File
# End Target
# End Project
1.1 apache-2.0/src/lib/apr/test/testsuite.dsw
Index: testsuite.dsw
===================================================================
Microsoft Developer Studio Workspace File, Format Version 5.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "aprlib"="..\aprlib.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "testarg"=".\testarg.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name aprlib
End Project Dependency
}}}
###############################################################################
Project: "testfile"=".\testfile.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name aprlib
End Project Dependency
}}}
###############################################################################
Project: "testproc"=".\testproc.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name aprlib
End Project Dependency
}}}
###############################################################################
Project: "testsig"=".\testsig.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name aprlib
End Project Dependency
}}}
###############################################################################
Project: "testsock"=".\testsock.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name aprlib
End Project Dependency
}}}
###############################################################################
Project: "testthread"=".\testthread.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name aprlib
End Project Dependency
}}}
###############################################################################
Project: "testucs"=".\testucs.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name aprlib
End Project Dependency
}}}
###############################################################################
Project: "timetest"=".\timetest.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name aprlib
End Project Dependency
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################