whiley_test_file 0.6.2

An API for manipulating test files for the Whiley Programming Language.
Documentation
original.name="For_Valid_7"
======
>>> main.whiley
// Define a predicate type
public type pred_t is function(int)->bool

// Sum elements matching predicate
public function filter(int[] items, pred_t fn) -> (int[] rs)
ensures |rs| <= |items|:
    int n = 0
    // Determine how many
    for i in 0..|items| where 0 <= n && n <= i:
        if fn(items[i]):
            n = n + 1
    // Allocate space
    int[] nitems = [0;n]
    int j = 0
    // Copy them over
    for i in 0..|items| where |nitems| <= |items| && j >= 0:
        int ith = items[i]
        if fn(ith):
            assume j < |nitems|
            nitems[j] = ith
            j = j + 1
    // Done
    return nitems

public export method test():
    assume filter([-1,0,1,2,3],&(int x -> x > 0)) == [1,2,3]
    assume filter([-3,-2,-1],&(int x -> x >= 0)) == []
    assume filter([0,1,2,3],&(int x -> x >= 0)) == [0,1,2,3]

---