LTP GCOV extension - code coverage report
Current view: directory - dblib/unittests - t0019.c
Test: FreeTDS coverage
Date: 2008-11-21 Instrumented lines: 39
Code covered: 92.3 % Executed lines: 36

       1                 : /* 
       2                 :  * Purpose: Test Some conversion, check trimming error and results
       3                 :  * Functions: dbconvert dberrhandle dbmsghandle dbinit dbexit
       4                 :  */
       5                 : 
       6                 : #if HAVE_CONFIG_H
       7                 : #include <config.h>
       8                 : #endif /* HAVE_CONFIG_H */
       9                 : 
      10                 : #include <ctype.h>
      11                 : #include <stdio.h>
      12                 : 
      13                 : #if HAVE_STDLIB_H
      14                 : #include <stdlib.h>
      15                 : #endif /* HAVE_STDLIB_H */
      16                 : 
      17                 : #if HAVE_STRING_H
      18                 : #include <string.h>
      19                 : #endif /* HAVE_STRING_H */
      20                 : 
      21                 : #include <sqlfront.h>
      22                 : #include <sqldb.h>
      23                 : 
      24                 : #include "common.h"
      25                 : 
      26                 : static char software_version[] = "$Id: t0019.c,v 1.11 2005/04/19 03:51:04 jklowden Exp $";
      27                 : static void *no_unused_var_warn[] = { software_version, no_unused_var_warn };
      28                 : 
      29                 : static int failure = 0;
      30                 : 
      31                 : static const char *cur_result = "";
      32                 : static const char *cur_test = "";
      33                 : static int cur_line = 0;
      34                 : 
      35                 : int test(int srctype, const void *srcdata, int srclen, int dsttype, int dstlen);
      36                 : 
      37                 : int
      38                 : test(int srctype, const void *srcdata, int srclen, int dsttype, int dstlen)
      39              22 : {
      40                 :         DBCHAR buf[10];
      41                 :         char s[20], *p;
      42                 :         int i, len, correct;
      43                 :         char out[256];
      44                 : 
      45              22 :         memset(buf, '*', sizeof(buf));
      46              22 :         len = dbconvert(NULL, srctype, (const BYTE*) srcdata, srclen, dsttype, (BYTE*) buf, dstlen);
      47                 : 
      48                 :         /* build result string */
      49              22 :         sprintf(out, "len=%d", len);
      50              22 :         p = s;
      51             242 :         for (i = 0; i < sizeof(buf); ++i) {
      52             220 :                 *p++ = isprint((unsigned char) buf[i]) ? buf[i] : '.';
      53             220 :                 sprintf(strchr(out, 0), " %02X", (unsigned char) buf[i]);
      54                 :         }
      55              22 :         *p = 0;
      56                 : 
      57              22 :         correct = 0;
      58              26 :         if (len == -1 || len == FAIL) {
      59               4 :                 if (strcmp(cur_result, "error") == 0)
      60               4 :                         correct = 1;
      61                 :         } else {
      62              18 :                 if (strcmp(cur_result, out) == 0)
      63              18 :                         correct = 1;
      64                 :         }
      65              22 :         if (!correct) {
      66               0 :                 failure = 1;
      67               0 :                 printf("\nline: %d test: %s\n" "%s\n%s\n" "failed :( should be '%s'\n", cur_line, cur_test, s, out, cur_result);
      68                 :         }
      69              22 :         return 0;
      70                 : }
      71                 : 
      72                 : #define TEST(s,out) \
      73                 :         { cur_result = out; cur_line = __LINE__; cur_test = #s; test s; }
      74                 : 
      75                 : int
      76                 : main(int argc, char *argv[])
      77               2 : {
      78               2 :         if (dbinit() == FAIL)
      79               0 :                 return 1;
      80                 : 
      81               2 :         dberrhandle(syb_err_handler);
      82               2 :         dbmsghandle(syb_msg_handler);
      83                 : 
      84               2 :         TEST((SYBBINARY, "ciao\0\0", 6, SYBBINARY, -2), "len=6 63 69 61 6F 00 00 2A 2A 2A 2A");
      85               2 :         TEST((SYBCHAR, "ciao  ", 6, SYBCHAR, -2), "len=6 63 69 61 6F 20 20 00 2A 2A 2A");
      86               2 :         TEST((SYBCHAR, "ciao\0\0", 6, SYBCHAR, -2), "len=6 63 69 61 6F 00 00 00 2A 2A 2A");
      87               2 :         TEST((SYBCHAR, "ciao  ", 6, SYBCHAR, -1), "len=4 63 69 61 6F 00 2A 2A 2A 2A 2A");
      88               2 :         TEST((SYBCHAR, "ciao\0\0", 6, SYBCHAR, -1), "len=6 63 69 61 6F 00 00 00 2A 2A 2A");
      89               2 :         TEST((SYBCHAR, "ciao  ", 6, SYBCHAR, 8), "len=6 63 69 61 6F 20 20 20 20 2A 2A");
      90               2 :         TEST((SYBCHAR, "ciao\0\0", 6, SYBCHAR, 8), "len=6 63 69 61 6F 00 00 20 20 2A 2A");
      91               2 :         TEST((SYBCHAR, "ciao  ", 6, SYBCHAR, 4), "error");
      92               2 :         TEST((SYBCHAR, "ciao\0\0", 6, SYBCHAR, 4), "error");
      93               2 :         TEST((SYBCHAR, "ciao  ", 6, SYBCHAR, 6), "len=6 63 69 61 6F 20 20 2A 2A 2A 2A");
      94               2 :         TEST((SYBCHAR, "ciao\0\0", 6, SYBCHAR, 6), "len=6 63 69 61 6F 00 00 2A 2A 2A 2A");
      95                 : 
      96               2 :         dbexit();
      97               2 :         if (!failure)
      98               2 :                 printf("All tests passed!\n");
      99               2 :         return failure;
     100                 : }

Generated by: LTP GCOV extension version 1.6