| #include <stdio.h> // fprintf, stderr |
| #include <stdlib.h> // size_t |
| #include <assert.h> // assert |
| #include "median.h" |
| #include "hex.h" |
| |
| #define TEST_SIZE 1024*1024*256 // 256M |
| // A sinple main routine meant as an example, |
| // and also to unit test most of the intersting |
| // functions of the median module. |
| int main(int argc, char * argv[]) { |
| // Call suggest buffer size to determine the size of the buffer |
| // we need to build the data structure. |
| size_t n = 0; |
| |
| // Allocate the buffer of the required size. And then |
| // initialize it (median_init_buffer). |
| assert(median_suggest_buffer_size(.001, TEST_SIZE , &n) == MEDIAN_OK); |
| void * b = malloc(n); |
| median_buffer_t buf; |
| assert(median_init_buffer(b, n, .001, TEST_SIZE, &buf) == MEDIAN_OK); |
| |
| // Initialize the spare buffer. |
| assert(median_suggest_scratch_buffer_size(buf, &n) == MEDIAN_OK); |
| void * s = malloc(n); |
| median_scratch_buffer_t scratch; |
| assert(median_init_scratch_buffer(s,n,buf,&scratch) == MEDIAN_OK); |
| |
| // Insert some data. |
| for(median_data_t i = 1; i < TEST_SIZE; i++) { // 1G |
| assert(median_insert_data(buf,i,scratch) == MEDIAN_OK); |
| } |
| |
| median_data_t median; |
| assert(median_output_median(buf, &median,scratch) == MEDIAN_OK); |
| |
| fprintf(stderr, "And the median is %x\n", (unsigned)median); |
| |
| // All done, return 0 |
| return 0; |
| } |