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,"==== Traverse the empty dynar\n");
21 TRYFAIL(gras_dynar_new(&d,sizeof(int),NULL));
22 gras_dynar_foreach(d,cursor,cpt){
24 "Damnit, there is something in the empty dynar\n");
29 fprintf(stderr,"==== Push/shift 5000 doubles\n");
30 TRYFAIL(gras_dynar_new(&d,sizeof(double),NULL));
31 for (cpt=0; cpt< 5000; cpt++) {
33 TRYFAIL(gras_dynar_push(d,&d1));
35 gras_dynar_foreach(d,cursor,d2){
39 "The retrieved value is not the same than the injected one (%f!=%f)\n",
44 for (cpt=0; cpt< 5000; cpt++) {
46 gras_dynar_shift(d,&d2);
49 "The retrieved value is not the same than the injected one (%f!=%f)\n",
57 fprintf(stderr,"==== Unshift/pop 5000 doubles\n");
58 TRYFAIL(gras_dynar_new(&d,sizeof(double),NULL));
59 for (cpt=0; cpt< 5000; cpt++) {
61 TRYFAIL(gras_dynar_unshift(d,&d1));
63 for (cpt=0; cpt< 5000; cpt++) {
65 gras_dynar_pop(d,&d2);
68 "The retrieved value is not the same than the injected one (%f!=%f)\n",
77 fprintf(stderr,"==== Push 5000 doubles, insert 1000 doubles in the middle, shift everything\n");
78 TRYFAIL(gras_dynar_new(&d,sizeof(double),NULL));
79 for (cpt=0; cpt< 5000; cpt++) {
81 TRYFAIL(gras_dynar_push(d,&d1));
83 for (cpt=0; cpt< 1000; cpt++) {
85 TRYFAIL(gras_dynar_insert_at(d,2500,&d1));
88 for (cpt=0; cpt< 2500; cpt++) {
90 gras_dynar_shift(d,&d2);
93 "The retrieved value is not the same than the injected one at the begining (%f!=%f)\n",
97 // fprintf (stderr,"Pop %d, length=%d \n",cpt, gras_dynar_length(d));
99 for (cpt=999; cpt>=0; cpt--) {
101 gras_dynar_shift(d,&d2);
104 "The retrieved value is not the same than the injected one in the middle (%f!=%f)\n",
109 for (cpt=2500; cpt< 5000; cpt++) {
111 gras_dynar_shift(d,&d2);
114 "The retrieved value is not the same than the injected one at the end (%f!=%f)\n",
122 fprintf(stderr,"==== Push 5000 double, remove 2000-4000. free the rest\n");
123 TRYFAIL(gras_dynar_new(&d,sizeof(double),NULL));
124 for (cpt=0; cpt< 5000; cpt++) {
126 TRYFAIL(gras_dynar_push(d,&d1));
128 for (cpt=2000; cpt< 4000; cpt++) {
130 gras_dynar_remove_at(d,2000,&d2);
133 "Remove a bad value. Got %f, expected %f\n",