whiley_test_file 0.6.2

An API for manipulating test files for the Whiley Programming Language.
Documentation
original.name="Reference_Valid_33"
js.compile.ignore=true
boogie.block=true
======
>>> main.whiley
type Node is &{ List next, int data }
type List is null | Node

variant unchanged(List l)
where l is null || l->data == old(l->data)
where l is null || l->next == old(l->next)
where l is null || unchanged(l->next)

method next(Node n) -> (List l):
    return n->next

method size(List s, List e) -> int
ensures unchanged(s)
ensures unchanged(e):
    //
    int count = 0
    //
    while (s is Node) && (s != e):
        s = next(s)
        count = count + 1
    //
    return count

public export method test():
    List l0 = null
    List l1 = new Node{next:l0,data:1}
    List l2 = new Node{next:l1,data:2}
    //
    int s0 = size(l0,l0)
    assume s0 == 0
    int s1 = size(l1,l0)    
    assume s1 == 1
    assert l1->data == 1
    int s2 = size(l2,l0)    
    assume s2 == 2
    assert l2->data == 2
    int s3 = size(l2,l1)
    assume s3 == 1
    assert l2->data == 2
    assert l1->data == 1

---