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 : }
|