ICU-1005 increase test coverage for umemstrm.c
X-SVN-Rev: 8366
This commit is contained in:
parent
54c1a06742
commit
dba8729d3c
@ -15,6 +15,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include "unicode/utypes.h"
|
||||
#include "unicode/ustring.h"
|
||||
#include "cmemory.h"
|
||||
#include "cintltst.h"
|
||||
#include "umemstrm.h"
|
||||
@ -170,5 +171,126 @@ static void TestMemoryStreamAPI(){
|
||||
log_err("uprv_mstrm_getBuffer() should fail when the error is set to true using uprv_mstrm_setError()");
|
||||
}
|
||||
uprv_mstrm_close(memStream);
|
||||
|
||||
/*
|
||||
Test the following APIs:
|
||||
uprv_mstrm_write8
|
||||
uprv_mstrm_write16
|
||||
uprv_mstrm_write32
|
||||
uprv_mstrm_writeString
|
||||
uprv_mstrm_writeUString
|
||||
uprv_mstrm_writePadding
|
||||
uprv_mstrm_writeBlock
|
||||
uprv_mstrm_getCurrentBuffer
|
||||
uprv_mstrm_jump
|
||||
uprv_mstrm_skip
|
||||
*/
|
||||
{
|
||||
uint8_t byteValue = 0x12;
|
||||
uint16_t wordValue = 0x2112;
|
||||
uint32_t wydeValue = 0x12211221;
|
||||
uint32_t wydeRead = 0;
|
||||
const char* stringVal = "This is a string";
|
||||
UChar UCharBuff[256];
|
||||
const UChar* ucharVal = UCharBuff;
|
||||
const uint8_t *data = NULL;
|
||||
int32_t bufLen = 0;
|
||||
|
||||
u_unescape("This is an Unicode String", UCharBuff, 256);
|
||||
|
||||
memStream=uprv_mstrm_openNew(size);
|
||||
if(memStream == NULL){
|
||||
log_err("uprv_mstrm_openNew() failed\n");
|
||||
}
|
||||
uprv_mstrm_write8(memStream, byteValue);
|
||||
uprv_mstrm_writePadding(memStream, 3);
|
||||
uprv_mstrm_write16(memStream, wordValue);
|
||||
uprv_mstrm_writePadding(memStream, 2);
|
||||
uprv_mstrm_write32(memStream, wydeValue);
|
||||
uprv_mstrm_writeBlock(memStream, &wydeValue, 4);
|
||||
|
||||
uprv_mstrm_writeString(memStream, stringVal, -1);
|
||||
uprv_mstrm_writeString(memStream, stringVal, strlen(stringVal));
|
||||
uprv_mstrm_writeUString(memStream, ucharVal, -1);
|
||||
uprv_mstrm_writeUString(memStream, ucharVal, u_strlen(ucharVal));
|
||||
|
||||
/* Now, lets get the values back */
|
||||
data = uprv_mstrm_getBuffer(memStream, &bufLen);
|
||||
|
||||
if(data == NULL || bufLen == 0) {
|
||||
log_err("get Buffer failed!\n");
|
||||
} else {
|
||||
if(byteValue != *(uint8_t *)data) {
|
||||
log_err("Failed getting byte value\n");
|
||||
}
|
||||
data += 4; /* skip byte and 3 padding */
|
||||
if(wordValue != *(uint16_t *)data) {
|
||||
log_err("Failed getting word value\n");
|
||||
}
|
||||
data += 4; /* skip word and 2 padding */
|
||||
|
||||
if(wydeValue != *(uint32_t *)data) {
|
||||
log_err("Failed getting word value\n");
|
||||
}
|
||||
data += 4; /* skip wyde */
|
||||
|
||||
if(wydeValue != *(uint32_t *)data) {
|
||||
log_err("Failed getting word value\n");
|
||||
}
|
||||
data += 4; /* skip wyde */
|
||||
|
||||
if(strncmp(stringVal, (char *)data, strlen(stringVal)) != 0) {
|
||||
log_err("String was not written correctly\n");
|
||||
}
|
||||
data += strlen(stringVal);
|
||||
|
||||
if(strncmp(stringVal, (char *)data, strlen(stringVal)) != 0) {
|
||||
log_err("String was not written correctly\n");
|
||||
}
|
||||
data += strlen(stringVal);
|
||||
|
||||
if(u_strncmp(ucharVal, (UChar *)data, u_strlen(ucharVal)) != 0) {
|
||||
log_err("UString was not written correctly\n");
|
||||
}
|
||||
data += u_strlen(ucharVal)*2;
|
||||
|
||||
if(u_strncmp(ucharVal, (UChar *)data, u_strlen(ucharVal)) != 0) {
|
||||
log_err("UString was not written correctly\n");
|
||||
}
|
||||
data += u_strlen(ucharVal)*2;
|
||||
|
||||
uprv_mstrm_skip(memStream, 8); /* skip to first wyde */
|
||||
bufLen = uprv_mstrm_read(memStream, &wydeRead, 4);
|
||||
if(bufLen != 4 || wydeValue != wydeRead) {
|
||||
log_err("Reading after skip failed\n");
|
||||
}
|
||||
|
||||
/* this should get us to the second wyde */
|
||||
data = uprv_mstrm_getCurrentBuffer(memStream, &bufLen);
|
||||
if(wydeValue != *(uint32_t *)data) {
|
||||
log_err("Failed getting wyde value after getCurrentBuffer\n");
|
||||
}
|
||||
|
||||
uprv_mstrm_skip(memStream, -8);
|
||||
data = uprv_mstrm_getCurrentBuffer(memStream, &bufLen);
|
||||
uprv_mstrm_jump(memStream, data+4);
|
||||
|
||||
data = uprv_mstrm_getCurrentBuffer(memStream, &bufLen);
|
||||
if(wydeValue != *(uint32_t *)data) {
|
||||
log_err("Failed getting wyde value after getCurrentBuffer\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
uprv_mstrm_close(memStream);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user