8 int filedes
[2] = { 0, 0 };
9 int dupfiledes
[2] = { 0, 0 };
14 char destination
[BUFLEN
];
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
++)
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
++)
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
++)
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
++)
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));
94 TEST((close(dupfiledes
[1]) != -1));
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
++)
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__
);
122 close(dupfiledes
[0]);
124 close(dupfiledes
[1]);