Exemple #1
0
 public void Fails4()
 {
     Contract.Inhale(Contract.Acc(this.a, Permission.Wildcard) && Contract.Acc(this.b, Permission.Wildcard));
     Contract.Inhale(Contract.Acc(Q(), Permission.Write));
     // expect SSIL204 at next
     Contract.Assert(this.b > 0);
 }
Exemple #2
0
        Construction(int number)
        {
            Contract.Ensures(Contract.Acc(field));
            Contract.Ensures(this.field == number);

            field = number;
        }
        public static void Test(Assignments ass, CellAss cell)
        {
            Contract.Requires(Contract.Acc(ass.a) && Contract.Acc(ass.c) && Contract.Acc(ass.c.Value) &&
                              Contract.Acc(cell.Value));
            var d = new Assignments();

            Contract.Assert(d.a == 0);
            Contract.Assert(d.c.Value == 0);
            ass.a = 1;
            Contract.Assert(ass.a == 1);
            ass.c.Value = 2;
            Contract.Assert(ass.c.Value == 2);
            cell.Value = 3;
            Contract.Assert(cell.Value == 3);
            ass.c = cell;
            Contract.Assert(ass.c == cell);
            Contract.Assert(ass.c.Value == 3);
            d.a = 4;
            Contract.Assert(d.a == 4);
            d.c.Value = 5;
            Contract.Assert(d.c.Value == 5);
            d.c = ass.c;
            Contract.Assert(d.c == ass.c);
            d = ass;
            Contract.Assert(d.a == 1);
            Contract.Assert(d == ass);
        }
Exemple #4
0
 public void Fails3()
 {
     Contract.Inhale(Contract.Acc(this.a, Permission.Wildcard) && Contract.Acc(this.b, Permission.Wildcard));
     Contract.Assume(this.b == 0);
     // expect SSIL204 at next
     Contract.Assert(this.a == 0);
 }
        public Assignments()
        {
            Contract.Ensures(Contract.Acc(this.a) && this.a == 0);
            Contract.Ensures(Contract.Acc(this.c) && Contract.Acc(this.c.Value) && this.c.Value == 0);

            this.a = 0;
            this.c = new CellAss();
        }
Exemple #6
0
 public void Succeeds()
 {
     Contract.Inhale(Contract.Acc(this.a, Permission.Wildcard) && Contract.Acc(this.c, Permission.Wildcard) && Contract.Acc(this.c, Permission.Half));
     Contract.Assume(this.a > 0);
     Contract.Assert(this.a > 0);
     Contract.Assume(F() > 0);
     Contract.Fold(Contract.Acc(P(), Permission.Write));
     Contract.Assume(Contract.Acc(Q(), Permission.Write));
     Contract.Unfold(Contract.Acc(Q(), Permission.Write));
     Contract.Assert(this.b > 0);
 }
Exemple #7
0
 public bool Q()
 {
     return(Contract.Acc(this.b, Permission.Wildcard) && this.b > 0);
 }
Exemple #8
0
 public bool P()
 {
     return(Contract.Acc(this.c, Permission.Wildcard) && F() > 0);
 }
Exemple #9
0
 public int F()
 {
     Contract.Requires(Contract.Acc(this.c, Permission.Wildcard));
     return(this.c);
 }
Exemple #10
0
        public C(int a)
        {
            Contract.Ensures(Contract.Acc(this.a) && this.a == a);

            this.a = a;
        }
Exemple #11
0
 public CellAss()
 {
     Contract.Ensures(Contract.Acc(this.Value) && this.Value == 0);
     this.Value = 0;
 }