]> mj.ucw.cz Git - libucw.git/commitdiff
Libucw: A test for fastbufs on static buffers.
authorMichal Vaner <vorner@ucw.cz>
Mon, 21 Jul 2008 19:16:42 +0000 (21:16 +0200)
committerMartin Mares <mj@ucw.cz>
Tue, 22 Jul 2008 16:27:51 +0000 (18:27 +0200)
ucw/Makefile
ucw/fb-buffer.c
ucw/fb-buffer.t [new file with mode: 0644]

index e1e09368e5e67c835d366632f4f9e192c1906121..23182a525ba48fcc107f507c661f23ed690a4ccf 100644 (file)
@@ -94,7 +94,7 @@ TESTS+=$(addprefix $(o)/ucw/,regex.test unicode.test hash-test.test mempool.test
     slists.test kmp-test.test bbuf.test getopt.test ff-unicode.test eltpool.test \
     fb-socket.test trie-test.test string.test sha1.test asort-test.test binheap-test.test \
     redblack-test.test basecode.test fb-file.test fb-grow.test fb-pool.test fb-atomic.test \
-    fb-limfd.test fb-temp.test fb-mem.test)
+    fb-limfd.test fb-temp.test fb-mem.test fb-buffer.test)
 
 $(o)/ucw/regex.test: $(o)/ucw/regex-t
 $(o)/ucw/unicode.test: $(o)/ucw/unicode-t
@@ -116,7 +116,7 @@ $(o)/ucw/binheap-test.test: $(o)/ucw/binheap-test
 $(o)/ucw/redblack-test.test: $(o)/ucw/redblack-test
 $(o)/ucw/basecode.test: $(o)/ucw/basecode
 $(addprefix $(o)/ucw/fb-,file.test grow.test pool.test socket.test atomic.test \
-       limfd.test temp.test mem.test): %.test: %-t
+       limfd.test temp.test mem.test buffer.test): %.test: %-t
 
 ifdef CONFIG_UCW_THREADS
 TESTS+=$(addprefix $(o)/ucw/,asio.test)
index 7f03f25de2fc02d5d593e403e06836ba16176042..35dd638118c841a36465d21510a4dd9f3571a4cd 100644 (file)
@@ -68,3 +68,51 @@ fbbuf_init_write(struct fastbuf *f, byte *buf, uns size)
   f->config = NULL;
   f->can_overwrite_buffer = 0;
 }
+
+#ifdef TEST
+
+int main(int argc, char *argv[])
+{
+  if (argc < 2)
+    {
+      fprintf(stderr, "You must specify a test (r, w, o)\n");
+      return 1;
+    }
+  switch (*argv[1])
+    {
+      case 'r':
+        {
+          struct fastbuf fb;
+          char *data = "Two\nlines\n";
+          fbbuf_init_read(&fb, data, strlen(data), 0);
+          char buffer[10];
+          while (bgets(&fb, buffer, 10))
+            puts(buffer);
+          bclose(&fb);
+          break;
+        }
+      case 'w':
+        {
+          struct fastbuf fb;
+          char buff[20];
+          fbbuf_init_write(&fb, buff, 20);
+          bputs(&fb, "Hello world\n");
+          bputc(&fb, '\0');
+          fputs(buff, stdout);
+          break;
+        }
+      case 'o':
+        {
+          struct fastbuf fb;
+          char buff[4];
+          fbbuf_init_write(&fb, buff, 4);
+          bputs(&fb, "Hello");
+          bputc(&fb, '\0');
+          fputs(buff, stdout);
+          break;
+        }
+    }
+  return 0;
+}
+
+#endif
diff --git a/ucw/fb-buffer.t b/ucw/fb-buffer.t
new file mode 100644 (file)
index 0000000..38a50d7
--- /dev/null
@@ -0,0 +1,13 @@
+# Tests for fb-buffer.c
+
+Name:  Read
+Run:   ../obj/ucw/fb-buffer-t r
+Out:   Two
+       lines
+
+Name:  Write
+Run:   ../obj/ucw/fb-buffer-t w
+Out:   Hello world
+
+Name:  Overflow
+Run:   ../obj/ucw/fb-buffer-t o 2>&1 | grep 'buffer overflow on write'