source: trunk/third/sendmail/libsm/t-strl.c @ 19204

Revision 19204, 3.5 KB checked in by zacheiss, 21 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r19203, which included commits to RCS files with non-trunk default branches.
Line 
1/*
2 * Copyright (c) 2000-2001 Sendmail, Inc. and its suppliers.
3 *      All rights reserved.
4 *
5 * By using this file, you agree to the terms and conditions set
6 * forth in the LICENSE file which can be found at the top level of
7 * the sendmail distribution.
8 *
9 */
10
11#include <sm/gen.h>
12SM_IDSTR(id, "@(#)$Id: t-strl.c,v 1.1.1.1 2003-04-08 15:06:05 zacheiss Exp $")
13
14#include <stdlib.h>
15#include <stdio.h>
16#include <sm/heap.h>
17#include <sm/string.h>
18#include <sm/test.h>
19
20#define MAXL    16
21#define N       5
22#define SIZE    128
23
24int
25main(argc, argv)
26        int argc;
27        char *argv[];
28{
29        char *s1, *s2, *s3;
30        int one, two, k;
31        char src1[N][SIZE], dst1[SIZE], dst2[SIZE];
32        char *r;
33
34        sm_test_begin(argc, argv, "test strl* string functions");
35        s1 = "abc";
36        s2 = "123";
37        s3 = sm_malloc_x(MAXL);
38
39        SM_TEST(sm_strlcpy(s3, s1, 4) == 3);
40        SM_TEST(strcmp(s1, s3) == 0);
41
42        SM_TEST(sm_strlcat(s3, s2, 8) == 6);
43        r ="abc123";
44        SM_TEST(strcmp(s3, r) == 0);
45
46        SM_TEST(sm_strlcpy(s3, s1, 2) == 3);
47        r = "a";
48        SM_TEST(strcmp(s3, r) == 0);
49
50        SM_TEST(sm_strlcat(s3, s2, 3) == 4);
51        r = "a1";
52        SM_TEST(strcmp(s3, r) == 0);
53
54        SM_TEST(sm_strlcpy(s3, s1, 4) == 3);
55        r = ":";
56        SM_TEST(sm_strlcat2(s3, r, s2, MAXL) == 7);
57        r = "abc:123";
58        SM_TEST(strcmp(s3, r) == 0);
59
60        SM_TEST(sm_strlcpy(s3, s1, 4) == 3);
61        r = ":";
62        SM_TEST(sm_strlcat2(s3, r, s2, 6) == 7);
63        r = "abc:1";
64        SM_TEST(strcmp(s3, r) == 0);
65
66        SM_TEST(sm_strlcpy(s3, s1, 4) == 3);
67        r = ":";
68        SM_TEST(sm_strlcat2(s3, r, s2, 2) == 7);
69        r = "abc";
70        SM_TEST(strcmp(s3, r) == 0);
71
72        SM_TEST(sm_strlcpy(s3, s1, 4) == 3);
73        r = ":";
74        SM_TEST(sm_strlcat2(s3, r, s2, 4) == 7);
75        r = "abc";
76        SM_TEST(strcmp(s3, r) == 0);
77
78        SM_TEST(sm_strlcpy(s3, s1, 4) == 3);
79        r = ":";
80        SM_TEST(sm_strlcat2(s3, r, s2, 5) == 7);
81        r = "abc:";
82        SM_TEST(strcmp(s3, r) == 0);
83
84        SM_TEST(sm_strlcpy(s3, s1, 4) == 3);
85        r = ":";
86        SM_TEST(sm_strlcat2(s3, r, s2, 6) == 7);
87        r = "abc:1";
88        SM_TEST(strcmp(s3, r) == 0);
89
90        for (k = 0; k < N; k++)
91        {
92                (void) sm_strlcpy(src1[k], "abcdef", sizeof src1);
93        }
94
95        one = sm_strlcpyn(dst1, sizeof dst1, 3, src1[0], "/", src1[1]);
96        two = sm_snprintf(dst2, sizeof dst2, "%s/%s", src1[0], src1[1]);
97        SM_TEST(one == two);
98        SM_TEST(strcmp(dst1, dst2) == 0);
99        one = sm_strlcpyn(dst1, 10, 3, src1[0], "/", src1[1]);
100        two = sm_snprintf(dst2, 10, "%s/%s", src1[0], src1[1]);
101        SM_TEST(one == two);
102        SM_TEST(strcmp(dst1, dst2) == 0);
103        one = sm_strlcpyn(dst1, 5, 3, src1[0], "/", src1[1]);
104        two = sm_snprintf(dst2, 5, "%s/%s", src1[0], src1[1]);
105        SM_TEST(one == two);
106        SM_TEST(strcmp(dst1, dst2) == 0);
107        one = sm_strlcpyn(dst1, 0, 3, src1[0], "/", src1[1]);
108        two = sm_snprintf(dst2, 0, "%s/%s", src1[0], src1[1]);
109        SM_TEST(one == two);
110        SM_TEST(strcmp(dst1, dst2) == 0);
111        one = sm_strlcpyn(dst1, sizeof dst1, 5, src1[0], "/", src1[1], "/", src1[2]);
112        two = sm_snprintf(dst2, sizeof dst2, "%s/%s/%s", src1[0], src1[1], src1[2]);
113        SM_TEST(one == two);
114        SM_TEST(strcmp(dst1, dst2) == 0);
115        one = sm_strlcpyn(dst1, 15, 5, src1[0], "/", src1[1], "/", src1[2]);
116        two = sm_snprintf(dst2, 15, "%s/%s/%s", src1[0], src1[1], src1[2]);
117        SM_TEST(one == two);
118        SM_TEST(strcmp(dst1, dst2) == 0);
119        one = sm_strlcpyn(dst1, 20, 5, src1[0], "/", src1[1], "/", src1[2]);
120        two = sm_snprintf(dst2, 20, "%s/%s/%s", src1[0], src1[1], src1[2]);
121        SM_TEST(one == two);
122        SM_TEST(strcmp(dst1, dst2) == 0);
123
124        one = sm_strlcpyn(dst1, sizeof dst1, 0);
125        SM_TEST(one == 0);
126        r = "";
127        SM_TEST(strcmp(dst1, r) == 0);
128        one = sm_strlcpyn(dst1, 20, 1, src1[0]);
129        two = sm_snprintf(dst2, 20, "%s", src1[0]);
130        SM_TEST(one == two);
131        one = sm_strlcpyn(dst1, 2, 1, src1[0]);
132        two = sm_snprintf(dst2, 2, "%s", src1[0]);
133        SM_TEST(one == two);
134
135        return sm_test_end();
136}
Note: See TracBrowser for help on using the repository browser.