TEST(SBuffer, WriteChar) { int socks[2]; ASSERT_EQ(socketpair(AF_UNIX, SOCK_STREAM, 0, socks), 0); SocketWBuffer swb(socks[0], 1); swb.WriteChar('a'); swb.Flush(); char a[1]; ASSERT_EQ(read(socks[1], a, sizeof(a)), sizeof(a)); ASSERT_EQ('a', a[0]); }
TEST(SBuffer, WriteUint32) { int socks[2]; ASSERT_EQ(socketpair(AF_UNIX, SOCK_STREAM, 0, socks), 0); SocketWBuffer swb(socks[0], 1000); swb.WriteUint32(1000000); swb.Flush(); char c[32]; read(socks[1], c, sizeof(c)); ASSERT_EQ('1', c[0]); ASSERT_EQ('0', c[1]); ASSERT_EQ('0', c[2]); ASSERT_EQ('0', c[3]); ASSERT_EQ('0', c[4]); ASSERT_EQ('0', c[5]); ASSERT_EQ('0', c[6]); }
TEST(SBuffer, WriteMulti) { int socks[2]; ASSERT_EQ(socketpair(AF_UNIX, SOCK_STREAM, 0, socks), 0); SocketWBuffer swb(socks[0], 1000); swb.WriteField("Pray for Paris"); swb.WriteChar(' '); swb.WriteUint32(13); swb.WriteChar('.'); swb.WriteUint32(11); swb.WriteChar('.'); swb.WriteUint32(2015); swb.WriteChar('\0'); swb.Flush(); char b[26]; ASSERT_EQ(read(socks[1], b, sizeof(b)), sizeof(b)); std::string str(b); ASSERT_EQ("Pray for Paris 13.11.2015", str); }
int nqsort(char *bas, unsigned n, unsigned wid, int (*cmp)(void *, void *)) { unsigned mumble; unsigned j; unsigned k; unsigned pvt; unsigned cnt; unsigned lo[DEPTH]; unsigned hi[DEPTH]; if ( n < 2 ) return 0; /* init */ cnt = 1; lo[0] = 0; hi[0] = n - 1; while ( cnt-- ) { pvt = lo[cnt]; j = pvt + 1; n = k = hi[cnt]; while ( j < k ) { while ( (j < k) && (*cmp)(bas + (j * wid), bas + (pvt * wid)) < 1 ) ++j; while ( (j <= k) && (*cmp)(bas + (pvt * wid), bas + (k * wid)) < 1) --k; if ( j < k ) swb(bas + (j++ * wid), bas + (k-- * wid), wid); } if ( (*cmp)(bas + (pvt * wid), bas + (k * wid)) > 0 ) swb(bas + (pvt * wid), bas + (k * wid), wid); if ( k > pvt ) --k; if ( (k > pvt) && (n > j) && ((k - pvt) < (n - j)) ) { mumble = k; k = n; n = mumble; mumble = pvt; pvt = j; j = mumble; } if ( k > pvt ) { lo[cnt] = pvt; hi[cnt++] = k; } if ( n > j ) { lo[cnt] = j; hi[cnt++] = n; } if ( cnt >= DEPTH ) return -1; } return 0; }