fix commit that mistakenly happened
[model-checker-benchmarks.git] / chase-lev-deque / main.c
index 64d044450a93c5bccee63243ef5b279b6f622ea0..f2e8dca8b17f5a628a35992a3a26ab714bf4d81b 100644 (file)
@@ -4,11 +4,14 @@
 #include <threads.h>
 #include <stdatomic.h>
 
 #include <threads.h>
 #include <stdatomic.h>
 
+#include "model-assert.h"
+
 #include "deque.h"
 
 Deque *q;
 int a;
 int b;
 #include "deque.h"
 
 Deque *q;
 int a;
 int b;
+int c;
 
 static void task(void * param) {
        a=steal(q);
 
 static void task(void * param) {
        a=steal(q);
@@ -21,9 +24,23 @@ int user_main(int argc, char **argv)
        thrd_create(&t, task, 0);
        push(q, 1);
        push(q, 2);
        thrd_create(&t, task, 0);
        push(q, 1);
        push(q, 2);
+       push(q, 4);
        b=take(q);
        b=take(q);
+       c=take(q);
        thrd_join(t);
        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;
 }
        return 0;
 }