void TestAppend(CuTest* tc) { buffer_t *buf = BufferCreate(); uint8_t data[2] = { 1, 2 }; BufferAppend(buf, data, sizeof(data)); CuAssertIntEquals(tc, 2, BufferGetSize(buf)); CuAssertIntEquals(tc, 1, BufferGetByte(buf, 0)); CuAssertIntEquals(tc, 2, BufferGetByte(buf, 1)); BufferDestroy(&buf); }
void TestExtractBuffer(CuTest* tc) { buffer_t *buf = BufferCreate(); uint8_t data[4] = { 1, 2, 3, 4 }; BufferAppend(buf, data, sizeof(data)); uint8_t *data_out; size_t size_out; BufferExtract(buf, 2, &data_out, &size_out); CuAssertIntEquals(tc, 2, size_out); CuAssertIntEquals(tc, 0, memcmp(data, data_out, 2)); free(data_out); CuAssertIntEquals(tc, 2, BufferGetSize(buf)); CuAssertIntEquals(tc, 3, BufferGetByte(buf, 0)); CuAssertIntEquals(tc, 4, BufferGetByte(buf, 1)); BufferDestroy(&buf); }
JNIEXPORT jbyte JNICALL Java_com_aio4c_buffer_Buffer_get(JNIEnv* jvm, jobject buffer) { Buffer* _buffer = _GetBuffer(jvm, buffer); jbyte _byte = 0; if (!BufferGetByte(_buffer, &_byte)) { _ThrowBufferUnderflow(jvm, buffer); } return _byte; }
int main(int argc, char* argv[]) { Buffer* a = NULL; aio4c_byte_t* data = NULL; aio4c_byte_t b = 0; char* s = NULL; int i = 0; int d = 12345; size_t len = 0; Aio4cInit(argc, argv, NULL, NULL); s = aio4c_malloc(strlen(TEST_STRING) + 1); assert(s != NULL); memcpy(s, TEST_STRING, strlen(TEST_STRING) + 1); a = NewBuffer(BUFFER_SIZE); assert(a != NULL); assert(BufferGetCapacity(a) == BUFFER_SIZE); assert(BufferGetLimit(a) == BUFFER_SIZE); assert(BufferGetPosition(a) == 0); assert(BufferHasRemaining(a) == true); assert(BufferRemaining(a) == BUFFER_SIZE); assert((data = BufferGetBytes(a)) != NULL); for(i = 0; i < BUFFER_SIZE; i++) { assert(data[i] == 0); } assert(BufferPutInt(a, &d) == true); assert(BufferGetPosition(a) == sizeof(int)); assert(BufferFlip(a) == a); assert(BufferGetPosition(a) == 0); assert(BufferGetLimit(a) == sizeof(int)); d = 0; assert(BufferGetInt(a, &d) == true); assert(d == 12345); d = 45678; assert(BufferGetInt(a, &d) == false); assert(d == 45678); assert(BufferPutInt(a, &d) == false); assert(BufferReset(a) == a); assert(BufferPutString(a, s) == true); assert(BufferGetPosition(a) == (int)(strlen(s) + 1)); assert(BufferFlip(a) == a); assert(BufferGetPosition(a) == 0); assert(BufferGetLimit(a) == (int)(strlen(s) + 1)); for(i = 0; i < (int)(strlen(s) + 1); i++) { assert(BufferGetByte(a, &b) == true); assert(b == s[i]); assert(BufferGetPosition(a) == (i + 1)); } assert(BufferGetByte(a, &b) == false); assert(BufferHasRemaining(a) == false); assert(BufferReset(a) == a); assert(BufferGetCapacity(a) == BUFFER_SIZE); assert(BufferGetLimit(a) == BUFFER_SIZE); assert(BufferGetPosition(a) == 0); assert(BufferHasRemaining(a) == true); assert((data = BufferGetBytes(a)) != NULL); assert(BufferLimit(a, strlen(s) + 1) == a); assert(BufferGetLimit(a) == (int)(strlen(s) + 1)); len = strlen(s); s[len] = '0'; for(i = 0; i < BUFFER_SIZE; i++) { assert(data[i] == 0); } assert(BufferPutString(a, s) == false); for(i = 0; i < BUFFER_SIZE; i++) { assert(data[i] == 0); } s[len] = '\0'; assert(BufferPutString(a, s) == true); assert(BufferFlip(a) == a); for(i = 0; i < (int)(strlen(s) + 1); i++) { assert(BufferGetByte(a, &b) == true); assert(b == s[i]); assert(BufferGetPosition(a) == (i + 1)); } assert(BufferHasRemaining(a) == false); Aio4cEnd(); return 0; }