aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--module-test/write_helper_test.cc37
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;
+
+}