1
0
mirror of https://github.com/fumiama/base16384.git synced 2026-06-10 13:40:26 +08:00

feat(coder): add safe encode/decode

This commit is contained in:
源文雨
2024-04-04 23:58:05 +09:00
parent b451127638
commit 2622a5ad69
8 changed files with 435 additions and 29 deletions

View File

@@ -43,24 +43,31 @@ char tstbuf[TEST_SIZE+16];
return 1; \
}
#define test_batch(encode, decode) \
fputs("testing base16384_"#encode"/base16384_"#decode"...\n", stderr); \
for(i = 0; i <= TEST_SIZE; i++) { \
n = base16384_##encode(encbuf, i, decbuf); \
n = base16384_##decode(decbuf, n, tstbuf); \
if (memcmp(encbuf, tstbuf, n)) return_error(i, n); \
}
int main() {
srand(time(NULL));
int i, n;
for(i = 0; i <= TEST_SIZE; i += sizeof(int)) {
*(int*)(&encbuf[i]) = rand();
}
fputs("testing base16384_en/decode...\n", stderr);
for(i = 0; i <= TEST_SIZE; i++) {
n = base16384_encode(encbuf, i, decbuf);
n = base16384_decode(decbuf, n, tstbuf);
int decn = n;
if (memcmp(encbuf, tstbuf, n)) return_error(i, n);
}
fputs("testing base16384_en/ecode_unsafe...\n", stderr);
for(i = 0; i <= TEST_SIZE; i++) {
n = base16384_encode_unsafe(encbuf, i, decbuf);
n = base16384_decode_unsafe(decbuf, n, tstbuf);
if ((n = memcmp(encbuf, tstbuf, n))) return_error(i, n);
}
test_batch(encode, decode);
test_batch(encode, decode_unsafe);
test_batch(encode, decode_safe);
test_batch(encode_unsafe, decode);
test_batch(encode_unsafe, decode_unsafe);
test_batch(encode_unsafe, decode_safe);
test_batch(encode_safe, decode);
test_batch(encode_safe, decode_unsafe);
test_batch(encode_safe, decode_safe);
return 0;
}

View File

@@ -98,18 +98,16 @@ int main() {
fputs("testing base16384_en/decode_file...\n", stderr);
init_input_file();
for(i = TEST_SIZE; i > 0; i--) {
fprintf(stderr, "loop@%d\n", i);
reset_and_truncate(fd, i);
loop_ok(close(fd), i, "close");
fputs("base16384_encode_file\n", stderr);
err = base16384_encode_file(TEST_INPUT_FILENAME, TEST_OUTPUT_FILENAME, encbuf, decbuf);
base16384_loop_ok(err);
fputs("base16384_decode_file\n", stderr);
err = base16384_decode_file(TEST_OUTPUT_FILENAME, TEST_VALIDATE_FILENAME, encbuf, decbuf);
base16384_loop_ok(err);
fputs("validate_result\n", stderr);
validate_result();
fputs("fin\n\n", stderr);
}
fputs("testing base16384_en/decode_fp...\n", stderr);