source: CIVL/examples/languageFeatures/atomicStatement.cvl@ 52dff6c

1.23 2.0 acw/focus-triggers main test-branch
Last change on this file since 52dff6c was d410676, checked in by Manchun Zheng <zmanchun@…>, 13 years ago

Add warning when atomic block is too long, and throw exception when non-determinism in atomic is detected, add tests accordingly.

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@345 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 653 bytes
RevLine 
[d410676]1int n = 3;
[9705dfd]2void foo(){
3 int k = n;
4 k = k + 1;
5}
6
7void main(){
8 int i = 0;
[d410676]9 int x = 3;
[9705dfd]10
11 $atomic{
[d410676]12
[9705dfd]13 if(i < 0)
14 i = 1;
15 else
16 i = 2;
17 }
18
[d410676]19 $assert i == 2;
20
[9705dfd]21 $atomic
[d410676]22 if(i > 0)
[9705dfd]23 i = 1;
24 else
25 i = 2;
26
[d410676]27 $assert i == 1;
[9705dfd]28
29 $atomic{
[d410676]30 i = 2;
[9705dfd]31 switch(i){
32 case 1: i = 2;
[d410676]33 case 2: i = 3;break;
[9705dfd]34 default: i = 5;
35 }
36 }
37
[d410676]38 $assert i == 3;
[9705dfd]39
40 $atomic{
41 i = 0;
42 for(int j = 0; j < 10; j++){
43 i += j;
44 }
45 }
46
47 $assert i == 45;
48
[125b6b5]49 $atomic{
50 for(int m = 0; m < 5; m++){
51 $spawn foo();
52 }
53 }
[9705dfd]54
55 //nested atomic and non-pure-local atomic block
56 $atomic{
[d410676]57 n = 0;
[9705dfd]58 n += 1;
59 $atomic{
60 i+=2;
61 i += 3; }
62 n += 9;
63 }
64
65 $assert n == 10;
66}
Note: See TracBrowser for help on using the repository browser.