diff options
Diffstat (limited to 'xdelta3/xdelta3-test.h')
-rwxr-xr-x | xdelta3/xdelta3-test.h | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/xdelta3/xdelta3-test.h b/xdelta3/xdelta3-test.h index 3c50bb6..30d8629 100755 --- a/xdelta3/xdelta3-test.h +++ b/xdelta3/xdelta3-test.h | |||
@@ -17,7 +17,11 @@ | |||
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <math.h> | 19 | #include <math.h> |
20 | |||
21 | #ifndef WIN32 | ||
20 | #include <sys/wait.h> | 22 | #include <sys/wait.h> |
23 | #else | ||
24 | #endif | ||
21 | 25 | ||
22 | #define MSG_IS(x) (stream->msg != NULL && strcmp ((x), stream->msg) == 0) | 26 | #define MSG_IS(x) (stream->msg != NULL && strcmp ((x), stream->msg) == 0) |
23 | 27 | ||
@@ -30,7 +34,7 @@ static const double TEST_ADD_MAX = 256; | |||
30 | static const double TEST_ADD_RATIO = 0.1; | 34 | static const double TEST_ADD_RATIO = 0.1; |
31 | static const double TEST_EPSILON = 0.5; | 35 | static const double TEST_EPSILON = 0.5; |
32 | 36 | ||
33 | static int TESTBUFSIZE = 1024 * 16; | 37 | #define TESTBUFSIZE (1024 * 16) |
34 | 38 | ||
35 | #define TESTFILESIZE (1024) | 39 | #define TESTFILESIZE (1024) |
36 | 40 | ||
@@ -88,7 +92,7 @@ static int | |||
88 | test_exponential_dist (usize_t mean, usize_t max) | 92 | test_exponential_dist (usize_t mean, usize_t max) |
89 | { | 93 | { |
90 | double mean_d = mean; | 94 | double mean_d = mean; |
91 | double erand = log (1.0 / drand48 ()); | 95 | double erand = log (1.0 / (rand () / (double)RAND_MAX)); |
92 | usize_t x = (usize_t) (mean_d * erand + 0.5); | 96 | usize_t x = (usize_t) (mean_d * erand + 0.5); |
93 | 97 | ||
94 | return min (x, max); | 98 | return min (x, max); |
@@ -141,13 +145,13 @@ test_setup (void) | |||
141 | static void | 145 | static void |
142 | test_unlink (char* file) | 146 | test_unlink (char* file) |
143 | { | 147 | { |
148 | char buf[TESTBUFSIZE]; | ||
144 | while (unlink (file) != 0) | 149 | while (unlink (file) != 0) |
145 | { | 150 | { |
146 | if (errno == ENOENT) | 151 | if (errno == ENOENT) |
147 | { | 152 | { |
148 | break; | 153 | break; |
149 | } | 154 | } |
150 | char buf[TESTBUFSIZE]; | ||
151 | sprintf (buf, "rm -f %s", file); | 155 | sprintf (buf, "rm -f %s", file); |
152 | system (buf); | 156 | system (buf); |
153 | } | 157 | } |
@@ -170,8 +174,8 @@ test_cleanup (void) | |||
170 | static int | 174 | static int |
171 | test_make_inputs (xd3_stream *stream, xoff_t *ss_out, xoff_t *ts_out) | 175 | test_make_inputs (xd3_stream *stream, xoff_t *ss_out, xoff_t *ts_out) |
172 | { | 176 | { |
173 | usize_t ts = (lrand48 () % TEST_FILE_MEAN) + TEST_FILE_MEAN; | 177 | usize_t ts = (rand () % TEST_FILE_MEAN) + TEST_FILE_MEAN; |
174 | usize_t ss = (lrand48 () % TEST_FILE_MEAN) + TEST_FILE_MEAN; | 178 | usize_t ss = (rand () % TEST_FILE_MEAN) + TEST_FILE_MEAN; |
175 | uint8_t *buf = malloc (ts + ss), *sbuf = buf /*, *tbuf = buf + ss*/; | 179 | uint8_t *buf = malloc (ts + ss), *sbuf = buf /*, *tbuf = buf + ss*/; |
176 | usize_t sadd = 0, sadd_max = ss * TEST_ADD_RATIO; | 180 | usize_t sadd = 0, sadd_max = ss * TEST_ADD_RATIO; |
177 | FILE *tf /*, *sf*/; | 181 | FILE *tf /*, *sf*/; |
@@ -199,10 +203,10 @@ test_make_inputs (xd3_stream *stream, xoff_t *ss_out, xoff_t *ts_out) | |||
199 | 203 | ||
200 | next = min (left, next); | 204 | next = min (left, next); |
201 | 205 | ||
202 | if (i > 0 && (next > add_left || drand48 () >= add_prob)) | 206 | if (i > 0 && (next > add_left || (rand() / (double)RAND_MAX) >= add_prob)) |
203 | { | 207 | { |
204 | /* Copy */ | 208 | /* Copy */ |
205 | usize_t offset = lrand48 () % i; | 209 | usize_t offset = rand () % i; |
206 | 210 | ||
207 | for (j = 0; j < next; j += 1) | 211 | for (j = 0; j < next; j += 1) |
208 | { | 212 | { |
@@ -214,7 +218,7 @@ test_make_inputs (xd3_stream *stream, xoff_t *ss_out, xoff_t *ts_out) | |||
214 | /* Add */ | 218 | /* Add */ |
215 | for (j = 0; j < next; j += 1) | 219 | for (j = 0; j < next; j += 1) |
216 | { | 220 | { |
217 | sbuf[i++] = lrand48 (); | 221 | sbuf[i++] = rand (); |
218 | } | 222 | } |
219 | } | 223 | } |
220 | } | 224 | } |
@@ -559,7 +563,7 @@ test_address_cache (xd3_stream *stream, int unused) | |||
559 | 563 | ||
560 | addrs[0] = 0; | 564 | addrs[0] = 0; |
561 | 565 | ||
562 | srand48 (0x9f73f7fc); | 566 | srand (0x9f73f7fc); |
563 | 567 | ||
564 | /* First pass: encode addresses */ | 568 | /* First pass: encode addresses */ |
565 | xd3_init_cache (& stream->acache); | 569 | xd3_init_cache (& stream->acache); |
@@ -571,9 +575,9 @@ test_address_cache (xd3_stream *stream, int unused) | |||
571 | usize_t prev_i; | 575 | usize_t prev_i; |
572 | usize_t nearby; | 576 | usize_t nearby; |
573 | 577 | ||
574 | p = drand48 (); | 578 | p = (rand () / (double)RAND_MAX); |
575 | prev_i = lrand48 () % offset; | 579 | prev_i = rand () % offset; |
576 | nearby = (lrand48 () % 256) % offset, 1; | 580 | nearby = (rand () % 256) % offset, 1; |
577 | nearby = max (1U, nearby); | 581 | nearby = max (1U, nearby); |
578 | 582 | ||
579 | if (p < 0.1) { addr = addrs[offset-nearby]; } | 583 | if (p < 0.1) { addr = addrs[offset-nearby]; } |
@@ -984,7 +988,7 @@ sec_dist_func6 (xd3_stream *stream, xd3_output *data) | |||
984 | int i, ret, x; | 988 | int i, ret, x; |
985 | for (i = 0; i < ALPHABET_SIZE*20; i += 1) | 989 | for (i = 0; i < ALPHABET_SIZE*20; i += 1) |
986 | { | 990 | { |
987 | x = lrand48 () % (ALPHABET_SIZE/2); | 991 | x = rand () % (ALPHABET_SIZE/2); |
988 | if ((ret = xd3_emit_byte (stream, & data, x))) { return ret; } | 992 | if ((ret = xd3_emit_byte (stream, & data, x))) { return ret; } |
989 | } | 993 | } |
990 | return 0; | 994 | return 0; |
@@ -997,7 +1001,7 @@ sec_dist_func7 (xd3_stream *stream, xd3_output *data) | |||
997 | int i, ret, x; | 1001 | int i, ret, x; |
998 | for (i = 0; i < ALPHABET_SIZE*20; i += 1) | 1002 | for (i = 0; i < ALPHABET_SIZE*20; i += 1) |
999 | { | 1003 | { |
1000 | x = lrand48 () % ALPHABET_SIZE; | 1004 | x = rand () % ALPHABET_SIZE; |
1001 | if ((ret = xd3_emit_byte (stream, & data, x))) { return ret; } | 1005 | if ((ret = xd3_emit_byte (stream, & data, x))) { return ret; } |
1002 | } | 1006 | } |
1003 | return 0; | 1007 | return 0; |
@@ -1141,7 +1145,7 @@ test_secondary (xd3_stream *stream, const xd3_sec_type *sec, int groups) | |||
1141 | P(RINT "\n..."); | 1145 | P(RINT "\n..."); |
1142 | for (test_i = 0; test_i < SIZEOF_ARRAY (sec_dists); test_i += 1) | 1146 | for (test_i = 0; test_i < SIZEOF_ARRAY (sec_dists); test_i += 1) |
1143 | { | 1147 | { |
1144 | srand48 (0x84687674); | 1148 | srand (0x84687674); |
1145 | 1149 | ||
1146 | in_head = xd3_alloc_output (stream, NULL); | 1150 | in_head = xd3_alloc_output (stream, NULL); |
1147 | out_head = xd3_alloc_output (stream, NULL); | 1151 | out_head = xd3_alloc_output (stream, NULL); |
@@ -1477,7 +1481,7 @@ test_command_line_arguments (xd3_stream *stream, int ignore) | |||
1477 | xoff_t dsize; | 1481 | xoff_t dsize; |
1478 | double ratio; | 1482 | double ratio; |
1479 | 1483 | ||
1480 | srand48 (0x89162337); | 1484 | srand (0x89162337); |
1481 | 1485 | ||
1482 | for (i = 0; i < pairs; i += 1) | 1486 | for (i = 0; i < pairs; i += 1) |
1483 | { | 1487 | { |
@@ -1617,7 +1621,7 @@ test_externally_compressed_io (xd3_stream *stream, int ignore) | |||
1617 | int i, ret; | 1621 | int i, ret; |
1618 | char buf[TESTBUFSIZE]; | 1622 | char buf[TESTBUFSIZE]; |
1619 | 1623 | ||
1620 | srand48 (0x91723913); | 1624 | srand (0x91723913); |
1621 | 1625 | ||
1622 | if ((ret = test_make_inputs (stream, NULL, NULL))) { return ret; } | 1626 | if ((ret = test_make_inputs (stream, NULL, NULL))) { return ret; } |
1623 | 1627 | ||
@@ -1664,7 +1668,7 @@ test_source_decompression (xd3_stream *stream, int ignore) | |||
1664 | char buf[TESTBUFSIZE]; | 1668 | char buf[TESTBUFSIZE]; |
1665 | const main_extcomp *ext; | 1669 | const main_extcomp *ext; |
1666 | 1670 | ||
1667 | srand48 (0x9ff56acb); | 1671 | srand (0x9ff56acb); |
1668 | 1672 | ||
1669 | test_setup (); | 1673 | test_setup (); |
1670 | if ((ret = test_make_inputs (stream, NULL, NULL))) { return ret; } | 1674 | if ((ret = test_make_inputs (stream, NULL, NULL))) { return ret; } |
@@ -1838,7 +1842,7 @@ test_identical_behavior (xd3_stream *stream, int ignore) | |||
1838 | usize_t delpos = 0, recsize; | 1842 | usize_t delpos = 0, recsize; |
1839 | xd3_config config; | 1843 | xd3_config config; |
1840 | 1844 | ||
1841 | for (i = 0; i < IDB_TGTSZ; i += 1) { buf[i] = lrand48 (); } | 1845 | for (i = 0; i < IDB_TGTSZ; i += 1) { buf[i] = rand (); } |
1842 | 1846 | ||
1843 | stream->winsize = IDB_WINSZ; | 1847 | stream->winsize = IDB_WINSZ; |
1844 | 1848 | ||
@@ -2140,7 +2144,6 @@ static int | |||
2140 | test_source_cksum_offset (xd3_stream *stream, int ignore) | 2144 | test_source_cksum_offset (xd3_stream *stream, int ignore) |
2141 | { | 2145 | { |
2142 | xd3_source source; | 2146 | xd3_source source; |
2143 | stream->src = &source; | ||
2144 | 2147 | ||
2145 | // Inputs are: | 2148 | // Inputs are: |
2146 | struct { | 2149 | struct { |
@@ -2170,12 +2173,15 @@ test_source_cksum_offset (xd3_stream *stream, int ignore) | |||
2170 | { 0, 0, 0, 0, 0 }, | 2173 | { 0, 0, 0, 0, 0 }, |
2171 | }, *test_ptr; | 2174 | }, *test_ptr; |
2172 | 2175 | ||
2176 | stream->src = &source; | ||
2177 | |||
2173 | for (test_ptr = cksum_test; test_ptr->cpos; test_ptr++) { | 2178 | for (test_ptr = cksum_test; test_ptr->cpos; test_ptr++) { |
2179 | xoff_t r; | ||
2174 | stream->srcwin_cksum_pos = test_ptr->cpos; | 2180 | stream->srcwin_cksum_pos = test_ptr->cpos; |
2175 | stream->total_in = test_ptr->ipos; | 2181 | stream->total_in = test_ptr->ipos; |
2176 | stream->src->size = test_ptr->size; | 2182 | stream->src->size = test_ptr->size; |
2177 | 2183 | ||
2178 | xoff_t r = xd3_source_cksum_offset(stream, test_ptr->input); | 2184 | r = xd3_source_cksum_offset(stream, test_ptr->input); |
2179 | CHECK(r == test_ptr->output); | 2185 | CHECK(r == test_ptr->output); |
2180 | } | 2186 | } |
2181 | return 0; | 2187 | return 0; |