X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Ftests%2Fcasefile-test.c;h=432cf388e944f1d9add1345db209c62f510fe038;hb=93d4e1865e8e3e2c62bddad822869eedf2e457e0;hp=10722dcbaf17152c9f62740e1586a19ab7585e07;hpb=2788b5b13f61effeab6731f89c41acebc0f03347;p=pspp-builds.git diff --git a/src/language/tests/casefile-test.c b/src/language/tests/casefile-test.c index 10722dcb..432cf388 100644 --- a/src/language/tests/casefile-test.c +++ b/src/language/tests/casefile-test.c @@ -21,11 +21,14 @@ #include #include +#include #include #include #include #include +#include "xalloc.h" + static void test_casefile (int pattern, size_t value_cnt, size_t case_cnt); static void get_random_case (struct ccase *, size_t value_cnt, size_t case_idx); @@ -133,6 +136,24 @@ test_casefile (int pattern, size_t value_cnt, size_t case_cnt) casereader_destroy (r1); if (pattern != 2) casereader_destroy (r2); + if (pattern > 3) + { + int *order; + r1 = casefile_get_random_reader (cf); + order = xmalloc (sizeof *order * case_cnt); + for (i = 0; i < case_cnt; i++) + order[i] = i; + if (case_cnt > 0) + gsl_ran_shuffle (rng, order, case_cnt, sizeof *order); + for (i = 0; i < case_cnt; i++) + { + int case_idx = order[i]; + casereader_seek (r1, case_idx); + read_and_verify_random_case (cf, r1, case_idx); + } + casereader_destroy (r1); + free (order); + } if (pattern > 2) { r1 = casefile_get_destructive_reader (cf);