apr-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From br...@apache.org
Subject cvs commit: apr-util/test testxlate.c Makefile.win
Date Sun, 12 Jan 2003 22:48:28 GMT
brane       2003/01/12 14:48:28

  Added:       test     testxlate.c Makefile.win
  Log:
  Added some tests for the apr_xlate code, and a makefile that builds the test
  programs on Windows.
  
  Revision  Changes    Path
  1.1                  apr-util/test/testxlate.c
  
  Index: testxlate.c
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  #include <stdio.h>
  #include <stdlib.h>
  
  #include "apr.h"
  #include "apr_general.h"
  #include "apr_errno.h"
  #include "apr_xlate.h"
  
  
  static const char test_utf8[] = "Edelwei\xc3\x9f";
  static const char test_utf7[] = "Edelwei+AN8-";
  static const char test_latin1[] = "Edelwei\xdf";
  
  
  static int check_status (apr_status_t status, const char *msg)
  {
      if (!status)
      {
          printf("PASS: %s\n", msg);
          return 0;
      }
      else
      {
          static char buf[1024];
          printf("FAIL: %s\n      %s\n", msg,
                 apr_strerror(status, buf, sizeof(buf)));
          return 1;
      }
  }
  
  static int test_conversion (apr_xlate_t *convset,
                              const char *inbuf,
                              const char *expected)
  {
      static char buf[1024];
      int retcode = 0;
      apr_size_t inbytes_left = strlen(inbuf) + 1;
      apr_size_t outbytes_left = sizeof(buf) - 1;
      apr_status_t status = apr_xlate_conv_buffer(convset,
                                                  inbuf,
                                                  &inbytes_left,
                                                  buf,
                                                  &outbytes_left);
      retcode |= check_status(status, "apr_xlate_conv_buffer");
      if ((!status || APR_STATUS_IS_INCOMPLETE(status))
          && strcmp(buf, expected))
      {
          printf("FAIL: expected: '%s'\n      actual:   '%s'"
                 "\n      inbytes_left: %"APR_SIZE_T_FMT"\n",
                 expected, buf, inbytes_left);
          retcode |= 1;
      }
      else
      {
          printf("PASS: Expected and actual output match\n");
      }
      return retcode;
  }
  
  int main (int argc, char **argv)
  {
      apr_pool_t *pool;
      apr_xlate_t *convset;
      apr_status_t status;
      int retcode = 0;
  
  #ifndef APR_HAS_XLATE
      puts("SKIP: apr_xlate not implemented");
      return 0;
  #endif
  
      apr_initialize();
      atexit(apr_terminate);
      apr_pool_create(&pool, NULL);
  
      /* 1. Identity transformation: UTF-8 -> UTF-8 */
      puts("START: identity transformation");
      status = apr_xlate_open(&convset, "UTF-8", "UTF-8", pool);
      retcode |= check_status(status, "apr_xlate_open(UTF-8, UTF-8)");
      if (!status)
      {
          retcode |= test_conversion(convset, test_utf8, test_utf8);
          retcode |= check_status(apr_xlate_close(convset), "apr_xlate_close");
      }
      puts("END: identity transformation");
  
      /* 2. UTF-8 -> ISO-8859-1 */
      puts("START: UTF-8 -> ISO-8859-1");
      status = apr_xlate_open(&convset, "ISO-8859-1", "UTF-8", pool);
      retcode |= check_status(status, "apr_xlate_open(ISO-8859-1, UTF-8)");
      if (!status)
      {
          retcode |= test_conversion(convset, test_utf8, test_latin1);
          retcode |= check_status(apr_xlate_close(convset), "apr_xlate_close");
      }
      puts("END: UTF-8 -> ISO-8859-1");
  
      /* 3. Transformation using charset aliases */
      puts("START: UTF-8 -> UTF-7 (alias)");
      status = apr_xlate_open(&convset, "UTF-7", "UTF-8", pool);
      retcode |= check_status(status, "apr_xlate_open(UTF-7, UTF-8)");
      if (!status)
      {
          retcode |= test_conversion(convset, test_utf8, test_utf7);
          retcode |= check_status(apr_xlate_close(convset), "apr_xlate_close");
      }
      puts("END: UTF-8 -> UTF-7 (alias)");
  
      puts("START: UTF-7 (alias) -> UTF-8");
      status = apr_xlate_open(&convset, "UTF-8", "UTF-7", pool);
      retcode |= check_status(status, "apr_xlate_open(UTF-8, UTF-7)");
      if (!status)
      {
          retcode |= test_conversion(convset, test_utf7, test_utf8);
          retcode |= check_status(apr_xlate_close(convset), "apr_xlate_close");
      }
      puts("END: UTF-7 (alias) -> UTF-8");
  
      return retcode;
  }
  
  
  
  1.1                  apr-util/test/Makefile.win
  
  Index: Makefile.win
  ===================================================================
  # -*- Makefile -*-
  !IF "$(OS)" == "Windows_NT"
  NULL=
  rmdir=rd /s /q
  !ELSE
  NULL=nul
  rmdir=deltree /y
  !ENDIF
  
  SILENT=@
  
  # Default build and bind modes
  BUILD_MODE = release
  BIND_MODE  = shared
  
  !IF "$(BUILD_MODE)" == "release" || "$(BUILD_MODE)" == "Release"
  !IF "$(BIND_MODE)" == "shared"
  # release shared
  APR_LIB_PFX = $(APR_SOURCE)\Release\lib
  APU_LIB_PFX = $(APU_SOURCE)\Release\lib
  API_LIB_PFX = $(API_SOURCE)\Release\lib
  CFG_CFLAGS  = /MD /O2
  CFG_DEFINES = /D "NDEBUG"
  CFG_OUTPUT  = Release
  
  !ELSE
  !IF "$(BIND_MODE)" == "static"
  # release static
  APR_LIB_PFX = $(APR_SOURCE)\LibR\	# no line continuation
  APU_LIB_PFX = $(APU_SOURCE)\LibR\	# no line continuation
  API_LIB_PFX = $(API_SOURCE)\LibR\	# no line continuation
  CFG_CFLAGS  = /MD /O2
  CFG_DEFINES = /D "NDEBUG" /D "APR_DECLARE_STATIC" \
  		/D "APU_DECLARE_STATIC" /D "API_DECLARE_STATIC"
  CFG_API_LIB = $(API_LIB_PFX)apriconv.lib
  CFG_OUTPUT  = LibR
  
  !ELSE
  !ERROR Unknown bind mode "$(BIND_MODE)"
  !ENDIF
  !ENDIF
  
  !ELSE
  !IF "$(BUILD_MODE)" == "debug" || "$(BUILD_MODE)" == "Debug"
  !IF "$(BIND_MODE)" == "shared"
  # debug shared
  APR_LIB_PFX = $(APR_SOURCE)\Debug\lib
  APU_LIB_PFX = $(APU_SOURCE)\Debug\lib
  API_LIB_PFX = $(API_SOURCE)\Debug\lib
  CFG_CFLAGS  = /MDd /Zi /Od
  CFG_DEFINES = /D "_DEBUG"
  CFG_LDFLAGS = /DEBUG
  CFG_OUTPUT  = Debug
  
  !ELSE
  !IF "$(BIND_MODE)" == "static"
  # debug static
  APR_LIB_PFX = $(APR_SOURCE)\LibD\	# no line continuation
  APU_LIB_PFX = $(APU_SOURCE)\LibD\	# no line continuation
  API_LIB_PFX = $(API_SOURCE)\LibD\	# no line continuation
  CFG_CFLAGS  = /MDd /Zi /Od
  CFG_DEFINES = /D "_DEBUG" /D "APR_DECLARE_STATIC" \
  		/D "APU_DECLARE_STATIC" /D "API_DECLARE_STATIC"
  CFG_LDFLAGS = /DEBUG
  CFG_API_LIB = $(API_LIB_PFX)apriconv.lib
  CFG_OUTPUT  = LibD
  
  !ELSE
  !ERROR Unknown bind mode "$(BIND_MODE)"
  !ENDIF
  !ENDIF
  
  !ELSE
  !ERROR Unknown build mode "$(BUILD_MODE)"
  !ENDIF
  !ENDIF
  
  
  APR_SOURCE   = ..\..\apr
  APU_SOURCE   = ..
  API_SOURCE   = ..\..\apr-iconv
  OUTPUT_DIR   = .\$(CFG_OUTPUT)
  
  INT_CFLAGS   = /nologo $(CFG_CFLAGS) /Fp"$(OUTPUT_DIR)\iconv.pch" /YX"iconv.h"
  INT_INCLUDES = /I "$(APU_SOURCE)\include" /I "$(APR_SOURCE)\include"
  #		/I "$(API_SOURCE)\include"
  INT_DEFINES  = /D "WIN32" /D "_CONSOLE" /D "_MBCS" $(CFG_DEFINES)
  INT_LDFLAGS  = /nologo /incremental:no /subsystem:console $(CFG_LDFLAGS)
  
  CFLAGS       = /W3
  ALL_CFLAGS   = $(INT_CFLAGS) $(INT_INCLUDES) $(INT_DEFINES) $(CFLAGS)
  
  LDFLAGS      = /WARN:0
  ALL_LDFLAGS  = $(INT_LDFLAGS) $(LDFLAGS)
  
  .c{$(OUTPUT_DIR)}.exe:
  	-$(SILENT)if not exist "$(OUTPUT_DIR)\$(NULL)" mkdir "$(OUTPUT_DIR)"
  	$(SILENT)echo Compiling and linking $@...
  	$(SILENT)cl $(ALL_CFLAGS) /Fo"$*.obj" /Fd"$*" $< \
  		/link $(ALL_LDFLAGS) /out:$@ \
  		"$(APU_LIB_PFX)aprutil.lib" \
  		"$(APR_LIB_PFX)apr.lib" \
  		"$(CFG_API)" \
  		kernel32.lib advapi32.lib ws2_32.lib mswsock.lib
  
  
  ##!ALL_TARGETS = 	$(OUTPUT_DIR)\testdate.exe \
  ##!		$(OUTPUT_DIR)\testdbm.exe \
  ##!		$(OUTPUT_DIR)\testmd4.exe \
  ##!		$(OUTPUT_DIR)\testmd5.exe \
  ##!		$(OUTPUT_DIR)\testqueue.exe \
  ##!		$(OUTPUT_DIR)\testreslist.exe \
  ##!		$(OUTPUT_DIR)\testrmm.exe \
  ##!		$(OUTPUT_DIR)\teststrmatch.exe \
  ##!		$(OUTPUT_DIR)\testuri.exe \
  ##!		$(OUTPUT_DIR)\testuuid.exe \
  ##!		$(OUTPUT_DIR)\testxlate.exe \
  ##!		$(OUTPUT_DIR)\testxml.exe
  
  ALL_TARGETS = 	$(OUTPUT_DIR)\testxlate.exe
  
  all: $(ALL_TARGETS)
  
  clean:
  	-$(SILENT)if exist "$(OUTPUT_DIR)/$(NULL)" $(rmdir) $(OUTPUT_DIR)
  
  
  

Mime
View raw message