1 /* $Id: xwrite-t.c 5790 2002-09-30 01:05:09Z rra $ */
2 /* Test suite for xwrite and xwritev. */
10 /* The data array we'll use to do testing. */
13 /* These come from fakewrite. */
14 extern char write_buffer[];
15 extern size_t write_offset;
16 extern int write_interrupt;
17 extern int write_fail;
20 test_write(int n, int status, int total)
24 success = (status == total && memcmp(data, write_buffer, 256) == 0);
25 printf("%sok %d\n", success ? "" : "not ", n);
26 if (!success && status != total)
27 printf(" status %d, total %d\n", status, total);
39 for (i = 0; i < 256; i++)
41 test_write(1, xwrite(0, data, 256), 256);
45 test_write(2, xwrite(0, data, 256), 256);
47 for (i = 0; i < 32; i++)
49 test_write(3, xwrite(0, data, 32), 32);
50 for (i = 32; i < 65; i++)
52 test_write(4, xwrite(0, data + 32, 33), 33);
58 iov[0].iov_base = data;
60 test_write(5, xwritev(0, iov, 1), 256);
62 for (i = 0; i < 256; i++)
65 iov[1].iov_base = &data[128];
67 iov[2].iov_base = &data[144];
69 test_write(6, xwritev(0, iov, 3), 256);
74 iov[1].iov_base = &data[32];
76 test_write(7, xwritev(0, iov, 2), 256);
77 for (i = 0; i < 32; i++)
80 test_write(8, xwritev(0, iov, 1), 32);
81 for (i = 32; i < 65; i++)
83 iov[0].iov_base = &data[32];
85 iov[1].iov_base = &data[48];
87 iov[2].iov_base = &data[49];
89 iov[3].iov_base = &data[57];
91 test_write(9, xwritev(0, iov, 4), 33);
96 for (i = 0; i < 256; i++)
98 test_write(10, xpwrite(0, data, 256, 0), 256);
100 memset(data + 1, 0, 255);
101 test_write(11, xpwrite(0, data + 1, 255, 1), 255);
102 for (i = 0; i < 32; i++)
103 data[i + 32] = i * 2;
104 test_write(12, xpwrite(0, data + 32, 32, 32), 32);
105 for (i = 32; i < 65; i++)
106 data[i + 32] = i * 2;
107 test_write(13, xpwrite(0, data + 64, 33, 64), 33);
112 test_write(14, xwrite(0, data + 1, 255), -1);
113 iov[0].iov_base = data + 1;
114 iov[0].iov_len = 255;
115 test_write(15, xwritev(0, iov, 1), -1);
116 test_write(16, xpwrite(0, data + 1, 255, 0), -1);
118 /* Test zero-length writes. */
119 test_write(17, xwrite(0, " ", 0), 0);
120 test_write(18, xpwrite(0, " ", 0, 2), 0);
121 iov[0].iov_base = data + 1;
123 test_write(19, xwritev(0, iov, 0), 0);