From c53646059b3b98ecc52a17be4d1302b51199d199 Mon Sep 17 00:00:00 2001 From: Lev Walkin Date: Tue, 5 Oct 2004 06:38:38 +0000 Subject: new code --- asn1c/tests/check-62.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'asn1c/tests/check-62.c') diff --git a/asn1c/tests/check-62.c b/asn1c/tests/check-62.c index 2af2e5e0..dd19013f 100644 --- a/asn1c/tests/check-62.c +++ b/asn1c/tests/check-62.c @@ -14,6 +14,7 @@ enum expectation { EXP_OK, /* Encoding/decoding must succeed */ EXP_BROKEN, /* Decoding must fail */ EXP_RECLESS, /* Reconstruction is allowed to yield less data */ + EXP_DIFFERENT, /* Reconstruction will yield different encoding */ }; static unsigned char buf[4096]; @@ -115,12 +116,18 @@ process_data(enum expectation expectation, char *fbuf, int size) { assert(buf_offset < sizeof(buf)); assert(ret == 0); - if(expectation == EXP_RECLESS) { + switch(expectation) { + case EXP_RECLESS: assert(buf_offset > 0 && buf_offset < size); assert(memcmp(buf + 2, fbuf + 2, buf_offset - 2) == 0); - } else { + break; + case EXP_DIFFERENT: + assert(buf_offset > 0 && buf_offset < size); + break; + case EXP_BROKEN: assert(buf_offset == size); assert(memcmp(buf, fbuf, buf_offset) == 0); + break; } asn_DEF_T.free_struct(&asn_DEF_T, st, 0); @@ -144,6 +151,8 @@ process(const char *fname) { switch(ext[-1]) { case 'B': /* The file is intentionally broken */ expectation = EXP_BROKEN; break; + case 'D': /* Reconstructing should yield different data */ + expectation = EXP_DIFFERENT; break; case 'L': /* Extensions are present */ expectation = EXP_RECLESS; break; default: @@ -174,16 +183,19 @@ main() { DIR *dir; struct dirent *dent; int processed_files = 0; + char *str; dir = opendir("../data-62"); assert(dir); - while((dent = readdir(dir))) { - if(strncmp(dent->d_name, "data-62-", 8)) - continue; + str = getenv("DATA_62_FILE"); + if(str && strncmp(str, "data-62-", 8) == 0) + process(str); - if(process(dent->d_name)) - processed_files++; + while((dent = readdir(dir))) { + if(strncmp(dent->d_name, "data-62-", 8) == 0) + if(process(dent->d_name)) + processed_files++; } assert(processed_files); -- cgit v1.2.3