void test_append(void) { BitStream *bs1, *bs2; char c1[] = "00"; char c2[] = "0011"; char c3[] = "01111111111111111"; char c4[] = "001101111111111111111"; char c5[] = "0011011111111111111111111111111111"; int ret; testStart("Append two BitStreams"); bs1 = BitStream_new(); bs2 = BitStream_new(); ret = BitStream_appendNum(bs1, 1, 0); ret = BitStream_appendNum(bs2, 1, 0); ret = BitStream_append(bs1, bs2); assert_zero(ret, "Failed to append."); assert_zero(cmpBin(c1, bs1), "Internal data is incorrect."); ret = BitStream_appendNum(bs1, 2, 3); assert_zero(ret, "Failed to append."); assert_zero(cmpBin(c2, bs1), "Internal data is incorrect."); ret = BitStream_appendNum(bs2, 16, 65535); assert_zero(ret, "Failed to append."); assert_zero(cmpBin(c3, bs2), "Internal data is incorrect."); ret = BitStream_append(bs1, bs2); assert_zero(ret, "Failed to append."); assert_zero(cmpBin(c4, bs1), "Internal data is incorrect."); ret = BitStream_appendNum(bs1, 13, 16383); assert_zero(ret, "Failed to append."); assert_zero(cmpBin(c5, bs1), "Internal data is incorrect."); testFinish(); BitStream_free(bs1); BitStream_free(bs2); }
int BitStream_appendBytes(BitStream *bstream, int size, unsigned char *data) { BitStream *b; int ret; if(size == 0) return 0; b = BitStream_newFromBytes(size, data); if(b == NULL) return -1; ret = BitStream_append(bstream, b); BitStream_free(b); return ret; }
int BitStream_appendNum(BitStream *bstream, int bits, unsigned int num) { BitStream *b; int ret; if(bits == 0) return 0; b = BitStream_newFromNum(bits, num); if(b == NULL) return -1; ret = BitStream_append(bstream, b); BitStream_free(b); return ret; }