diff options
Diffstat (limited to 'module-test/write_helper_test.cc')
| -rw-r--r-- | module-test/write_helper_test.cc | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/module-test/write_helper_test.cc b/module-test/write_helper_test.cc new file mode 100644 index 0000000..eb86692 --- /dev/null +++ b/module-test/write_helper_test.cc @@ -0,0 +1,37 @@ +#include <iostream> +#include <print> +#include <unistd.h> +#include <cstdlib> +#include <ctime> +#include <string> +#include <cstring> +#include <print> + +using namespace std; + +size_t write_simulator(const char *s, size_t len, int &err) +{ + size_t rand_len = rand() % (len+1); + size_t ret = write(STDOUT_FILENO, s, rand_len); + err = errno; + return ret; +} + +int main() +{ + const char *s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz\n0123456789"; + srand(time(nullptr)); + size_t pos = 0; + int err = EINTR; + while (pos < strlen(s)) + { + ; + size_t ret = write_simulator(s+pos, strlen(s+pos), err); + if (ret == string::npos) + if (err == EINTR) ret = 0; + else return 0; + pos += ret; + } + return 0; + +} |
