File: test-rec.desc

package info (click to toggle)
cbmc 6.6.0-4
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 153,852 kB
  • sloc: cpp: 386,459; ansic: 114,466; java: 28,405; python: 6,003; yacc: 4,552; makefile: 4,041; lex: 2,487; xml: 2,388; sh: 2,050; perl: 557; pascal: 184; javascript: 163; ada: 36
file content (18 lines) | stat: -rw-r--r-- 893 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CORE dfcc-only
main.c
--dfcc main --enforce-contract-rec f
^\[f.postcondition.\d+\].*Check ensures clause of contract contract::f for function f: SUCCESS$
^\[f.precondition.\d+\].*Check requires clause of contract contract::f for function f: SUCCESS$
^\[f.assigns.\d+\].*Check that the assigns clause of contract::f is included in the caller's assigns clause: SUCCESS$
^\[f.frees.\d+\].*Check that the frees clause of contract::f is included in the caller's frees clause: SUCCESS$
^EXIT=0$
^SIGNAL=0$
^VERIFICATION SUCCESSFUL$
--
--
This test checks that when checking a contract against a function using
--enforce-contract-rec, if the function is recursive and satsifies the contract
then the verification succeeds.
We want to see that post conditions are checked (top level call)
and preconditions are checked (recursive call).
We also want to see assigns and frees clause inclusion checks.