3 /* dynar_double: A test case for the dynar using doubles as content */
5 /* Authors: Martin Quinson */
6 /* Copyright (C) 2003 the OURAGAN project. */
8 /* This program is free software; you can redistribute it and/or modify it
9 under the terms of the license (GNU LGPL) which comes with this package. */
14 int main(int argc,char *argv[]) {
20 fprintf(stderr,"==== Push/shift 5000 doubles\n");
21 TRYFAIL(gras_dynar_new(&d,sizeof(double),NULL));
22 for (cpt=0; cpt< 5000; cpt++) {
24 TRYFAIL(gras_dynar_push(d,&d1));
26 for (cpt=0; cpt< 5000; cpt++) {
28 gras_dynar_shift(d,&d2);
31 "The retrieved value is not the same than the injected one (%f!=%f)\n",
39 fprintf(stderr,"==== Unshift/pop 5000 doubles\n");
40 TRYFAIL(gras_dynar_new(&d,sizeof(double),NULL));
41 for (cpt=0; cpt< 5000; cpt++) {
43 TRYFAIL(gras_dynar_unshift(d,&d1));
45 for (cpt=0; cpt< 5000; cpt++) {
47 gras_dynar_pop(d,&d2);
50 "The retrieved value is not the same than the injected one (%f!=%f)\n",
59 fprintf(stderr,"==== Push 5000 doubles, insert 1000 doubles in the middle, shift everything\n");
60 TRYFAIL(gras_dynar_new(&d,sizeof(double),NULL));
61 for (cpt=0; cpt< 5000; cpt++) {
63 TRYFAIL(gras_dynar_push(d,&d1));
65 for (cpt=0; cpt< 1000; cpt++) {
67 TRYFAIL(gras_dynar_insert_at(d,2500,&d1));
70 for (cpt=0; cpt< 2500; cpt++) {
72 gras_dynar_shift(d,&d2);
75 "The retrieved value is not the same than the injected one at the begining (%f!=%f)\n",
79 // fprintf (stderr,"Pop %d, length=%d \n",cpt, gras_dynar_length(d));
81 for (cpt=999; cpt>=0; cpt--) {
83 gras_dynar_shift(d,&d2);
86 "The retrieved value is not the same than the injected one in the middle (%f!=%f)\n",
91 for (cpt=2500; cpt< 5000; cpt++) {
93 gras_dynar_shift(d,&d2);
96 "The retrieved value is not the same than the injected one at the end (%f!=%f)\n",
104 fprintf(stderr,"==== Push 5000 double, remove 2000-4000. free the rest\n");
105 TRYFAIL(gras_dynar_new(&d,sizeof(double),NULL));
106 for (cpt=0; cpt< 5000; cpt++) {
108 TRYFAIL(gras_dynar_push(d,&d1));
110 for (cpt=2000; cpt< 4000; cpt++) {
112 gras_dynar_remove_at(d,2000,&d2);
115 "Remove a bad value. Got %f, expected %f\n",