src/test.c
changeset 40 51678c7eae03
child 41 40f7aa051acb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test.c	Thu Mar 12 20:00:48 2009 +0200
@@ -0,0 +1,118 @@
+/**
+ * The main test code entry point
+ */
+#include "sock_test.h"
+#include "irc_conn.h"
+#include "log.h"
+
+#include <string.h>
+#include <assert.h>
+
+void assert_sock_read (struct sock_stream *sock, const char *str)
+{
+    char buf[strlen(str)];
+
+    log_debug("read: %p: '%s'", sock, str);
+    
+    // read it
+    assert(sock_stream_read(sock, buf, strlen(str)) == (int) strlen(str));
+
+    // cmp
+    assert(strncmp(buf, str, strlen(str)) == 0);
+}
+
+void assert_sock_write (struct sock_stream *sock, const char *str)
+{
+    log_debug("write: %p: '%s'", sock, str);
+
+    // write it
+    assert(sock_stream_write(sock, str, strlen(str)) == (int) strlen(str));
+}
+
+void test_sock_test (void)
+{
+    struct sock_test *sock = sock_test_create();
+    struct io_vec _read_data[] = {
+        {   "foo",      3   },
+        {   "barx",     4   }
+    };
+    const char *_write_data = "test data";
+    
+    // put the read data
+    log_debug("set_recv_buffer: %p, %d", _read_data, 2);
+    sock_test_set_recv_buffer(sock, _read_data, 2);
+
+    // read it out
+    assert_sock_read(SOCK_TEST_BASE(sock), "foo");
+    assert_sock_read(SOCK_TEST_BASE(sock), "ba");
+    assert_sock_read(SOCK_TEST_BASE(sock), "rx");
+
+    // write the data in
+    assert_sock_write(SOCK_TEST_BASE(sock), "test ");
+    assert_sock_write(SOCK_TEST_BASE(sock), "data");
+
+    // get the data out
+    char *data;
+    size_t len;
+
+    sock_test_get_send_data(sock, &data, &len);
+    
+    log_debug("get_send_data: %u: '%s'", len, data);
+
+    // should be the same
+    assert(len == strlen(_write_data));
+    assert(strncmp(data, _write_data, len) == 0);
+}
+
+static struct irc_conn_callbacks _conn_callbacks = {
+    .on_registered      = NULL,
+};
+
+void test_irc_conn (void)
+{
+    struct sock_test *sock;
+    struct irc_conn *conn;
+    struct error_info err;
+
+    // create the test socket
+    assert((sock = sock_test_create()));
+    
+    // create the irc_conn
+    assert(irc_conn_create(&conn, SOCK_TEST_BASE(sock), &_conn_callbacks, NULL, &err) == SUCCESS);
+
+    // destroy it
+    irc_conn_destroy(conn);
+}
+
+/**
+ * Test definition
+ */
+static struct test {
+    /** Test name */
+    const char *name;
+
+    /** Test func */
+    void (*func) (void);
+
+} _tests[] = {
+    {   "sock_test",    &test_sock_test     },
+    {   "irc_conn",     &test_irc_conn      },
+    {   NULL,           NULL                }
+};
+
+int main (int argc, char **argv)
+{
+    struct test *test;
+
+    (void) argv;
+    
+    // no arguments
+    assert(argc == 1);
+
+    // run tests
+    for (test = _tests; test->name; test++) {
+        log_info("Running test: %s", test->name);
+
+        test->func();
+    }
+}