X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=chase-lev-deque%2Fmain.c;h=f2e8dca8b17f5a628a35992a3a26ab714bf4d81b;hb=77847ecd3fa6a643302770491928787ba143cde1;hp=77ea5a850451d06c9e66eb627ade7ab4dd0e6946;hpb=510a66b137541be02613138e522213cdc4b9e9d5;p=model-checker-benchmarks.git diff --git a/chase-lev-deque/main.c b/chase-lev-deque/main.c index 77ea5a8..f2e8dca 100644 --- a/chase-lev-deque/main.c +++ b/chase-lev-deque/main.c @@ -4,11 +4,14 @@ #include #include +#include "model-assert.h" + #include "deque.h" Deque *q; int a; int b; +int c; static void task(void * param) { a=steal(q); @@ -21,11 +24,23 @@ int user_main(int argc, char **argv) thrd_create(&t, task, 0); push(q, 1); push(q, 2); - do { - b=take(q); - } while(b==EMPTY); + push(q, 4); + b=take(q); + c=take(q); thrd_join(t); - if (a+b!=3) - printf("a=%d b=%d\n",a,b); + + bool correct=true; + if (a!=1 && a!=2 && a!=4 && a!= EMPTY) + correct=false; + if (b!=1 && b!=2 && b!=4 && b!= EMPTY) + correct=false; + if (c!=1 && c!=2 && c!=4 && a!= EMPTY) + correct=false; + if (a!=EMPTY && b!=EMPTY && c!=EMPTY && (a+b+c)!=7) + correct=false; + if (!correct) + printf("a=%d b=%d c=%d\n",a,b,c); + MODEL_ASSERT(correct); + return 0; }