test/pipe.c: Avoid printing hundreds of thousand output lines.
[AROS.git] / test / clib / pipe.c
blobd04b3c9de892a1f52431ed678a6c095eb92d887b
1 #include <unistd.h>
2 #include <stdio.h>
3 #include <string.h>
4 #include "test.h"
6 #define BUFLEN 100
8 int filedes[2] = { 0, 0 };
9 int dupfiledes[2] = { 0, 0 };
11 int main()
13 char source[BUFLEN];
14 char destination[BUFLEN];
15 char *str = "foo";
16 char *str2 = "bar";
17 int i;
19 for(i = 0; i < BUFLEN; i++)
20 source[i] = str[i % strlen(str)];
22 TEST((pipe(filedes) == 0));
23 TEST((write(filedes[1], source, BUFLEN) == BUFLEN));
24 TEST((read(filedes[0], destination, BUFLEN) == BUFLEN));
25 TEST((memcmp(source, destination, BUFLEN) == 0));
27 for(i = 0; i < BUFLEN; i++)
28 source[i] = str2[i % strlen(str2)];
30 TEST((write(filedes[1], source, BUFLEN) == BUFLEN));
31 TEST((read(filedes[0], destination, BUFLEN) == BUFLEN));
32 TEST((memcmp(source, destination, BUFLEN) == 0));
34 for(i = 0; i < 10000; i++)
36 char src = i % 256;
37 char dst;
38 TESTFALSE((write(filedes[1], &src, 1) == 1));
39 TESTFALSE((read(filedes[0], &dst, 1) == 1));
40 TESTFALSE((src == dst));
42 printf("10000 read-writes passed, line %d.\n", __LINE__);
44 dupfiledes[0] = dup(filedes[0]);
45 TEST((dupfiledes[0] != -1));
47 TEST((write(filedes[1], source, BUFLEN) == BUFLEN));
48 TEST((read(dupfiledes[0], destination, BUFLEN) == BUFLEN));
49 TEST((memcmp(source, destination, BUFLEN) == 0));
51 for(i = 0; i < 10000; i++)
53 char src = i % 256;
54 char dst;
55 TESTFALSE((write(filedes[1], &src, 1) == 1));
56 TESTFALSE((read(dupfiledes[0], &dst, 1) == 1));
57 TESTFALSE((src == dst));
59 printf("10000 read-writes passed, line %d.\n", __LINE__);
61 dupfiledes[1] = dup(filedes[1]);
62 TEST((dupfiledes[1] != -1));
64 TEST((write(dupfiledes[1], source, BUFLEN) == BUFLEN));
65 TEST((read(filedes[0], destination, BUFLEN) == BUFLEN));
66 TEST((memcmp(source, destination, BUFLEN) == 0));
68 for(i = 0; i < 10000; i++)
70 char src = i % 256;
71 char dst;
72 TESTFALSE((write(dupfiledes[1], &src, 1) == 1));
73 TESTFALSE((read(filedes[0], &dst, 1) == 1));
74 TESTFALSE((src == dst));
76 printf("10000 read-writes passed, line %d.\n", __LINE__);
78 TEST((write(dupfiledes[1], source, BUFLEN) == BUFLEN));
79 TEST((read(dupfiledes[0], destination, BUFLEN) == BUFLEN));
80 TEST((memcmp(source, destination, BUFLEN) == 0));
82 for(i = 0; i < 10000; i++)
84 char src = i % 256;
85 char dst;
86 TESTFALSE((write(dupfiledes[1], &src, 1) == 1));
87 TESTFALSE((read(dupfiledes[0], &dst, 1) == 1));
88 TESTFALSE((src == dst));
90 printf("10000 read-writes passed, line %d.\n", __LINE__);
92 TEST((close(dupfiledes[0]) != -1));
93 dupfiledes[0] = 0;
94 TEST((close(dupfiledes[1]) != -1));
95 dupfiledes[1] = 0;
97 TEST((write(filedes[1], source, BUFLEN) == BUFLEN));
98 TEST((read(filedes[0], destination, BUFLEN) == BUFLEN));
99 TEST((memcmp(source, destination, BUFLEN) == 0));
101 for(i = 0; i < 10000; i++)
103 char src = i % 256;
104 char dst;
105 TESTFALSE((write(filedes[1], &src, 1) == 1));
106 TESTFALSE((read(filedes[0], &dst, 1) == 1));
107 TESTFALSE((src == dst));
109 printf("10000 read-writes passed, line %d.\n", __LINE__);
111 cleanup();
112 return OK;
115 void cleanup()
117 if(filedes[0])
118 close(filedes[0]);
119 if(filedes[1])
120 close(filedes[1]);
121 if(dupfiledes[0])
122 close(dupfiledes[0]);
123 if(dupfiledes[1])
124 close(dupfiledes[1]);