Hi, Here is how our current tests look like: int main () { int rc; int sb; int sc; char buf [3]; sb = nn_socket (AF_SP, NN_PAIR); errno_assert (sb != -1); rc = nn_bind (sb, SOCKET_ADDRESS); errno_assert (rc >= 0); sc = nn_socket (AF_SP, NN_PAIR); errno_assert (sc != -1); rc = nn_connect (sc, SOCKET_ADDRESS); errno_assert (rc >= 0); rc = nn_send (sc, "ABC", 3, 0); errno_assert (rc >= 0); nn_assert (rc == 3); rc = nn_recv (sb, buf, sizeof (buf), 0); errno_assert (rc >= 0); nn_assert (rc == 3); rc = nn_send (sb, "DEF", 3, 0); errno_assert (rc >= 0); nn_assert (rc == 3); rc = nn_recv (sc, buf, sizeof (buf), 0); errno_assert (rc >= 0); nn_assert (rc == 3); rc = nn_close (sc); errno_assert (rc == 0); rc = nn_close (sb); errno_assert (rc == 0); return 0; } Here is how I would like the test to be written: int main () { int sb; int sc; sb = test_socket_bind (NN_PAIR, SOCKET_ADDRESS); sc = test_socket_connect (NN_PAIR, SOCKET_ADDRESS); test_send (sc, "ABC"); assert_received (sb, "ABC"); test_send (sb, "DEF"); assert_received (sc, "DEF"); test_socket_close(sc); test_socket_close(sb); return 0; } I would also split several test cases in to separate functions, because it's not easy to spot where the test ends in the current code. Thoughts? -- Paul