summaryrefslogtreecommitdiff
path: root/xdelta3/xdelta3-test.h
diff options
context:
space:
mode:
Diffstat (limited to 'xdelta3/xdelta3-test.h')
-rwxr-xr-xxdelta3/xdelta3-test.h54
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;
30static const double TEST_ADD_RATIO = 0.1; 34static const double TEST_ADD_RATIO = 0.1;
31static const double TEST_EPSILON = 0.5; 35static const double TEST_EPSILON = 0.5;
32 36
33static 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
88test_exponential_dist (usize_t mean, usize_t max) 92test_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)
141static void 145static void
142test_unlink (char* file) 146test_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)
170static int 174static int
171test_make_inputs (xd3_stream *stream, xoff_t *ss_out, xoff_t *ts_out) 175test_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
2140test_source_cksum_offset (xd3_stream *stream, int ignore) 2144test_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;