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
$(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)
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
--- /dev/null
+# 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'