Files
mercury/extras/quickcheck/tutes/use81.m
Simon Mei e56d7cc495 qcheck is an autotesting tool similar to Haskell's Quickcheck.
Estimated hours taken : 250

qcheck is an autotesting tool similar to Haskell's Quickcheck.

A collection of web pages are written as a user guide for quickcheck.
It covers the syntax and features supported by the current version of
quickcheck.

RELEASE_NOTES:
compiler/notes/authors.html:
extras/README:
        Modified to mention quickcheck.

extras/quickcheck/qcheck.m:
        New file that contains the source code for qcheck.

extras/quickcheck/rnd.m:
        New file written by conway. Its functions are similar
        to those in library random.m. The random numbers generated
        with random.m functions show strong correlation in lower
        bits; rnd.m does not seem have such problems.

extras/quickcheck/tutes/T1.html:
extras/quickcheck/tutes/T2.html:
extras/quickcheck/tutes/T3.html:
extras/quickcheck/tutes/T4.html:
extras/quickcheck/tutes/T5.html:
extras/quickcheck/tutes/T6.html:
extras/quickcheck/tutes/T7.html:
extras/quickcheck/tutes/T8.html:
extras/quickcheck/tutes/T9.html:
extras/quickcheck/tutes/T10.html:
        New files, each html covers a topic.

extras/quickcheck/tutes/index.html:
        New file, the index.

extras/quickcheck/tutes/mymax.m:
extras/quickcheck/tutes/nrev.m:
extras/quickcheck/tutes/nrev2.m:
        New files, contains mymax/2, nrev/1 and nrev/2.

extras/quickcheck/tutes/use.m:
extras/quickcheck/tutes/use1.m:
extras/quickcheck/tutes/use11.m:
extras/quickcheck/tutes/use20.m:
extras/quickcheck/tutes/use21.m:
extras/quickcheck/tutes/use22.m:
extras/quickcheck/tutes/use31.m:
extras/quickcheck/tutes/use33.m:
extras/quickcheck/tutes/use51.m:
extras/quickcheck/tutes/use62.m:
extras/quickcheck/tutes/use71.m:
extras/quickcheck/tutes/use81.m:
extras/quickcheck/tutes/use91.m:
        New files, contains examples shown in each tutorial.
2001-05-31 02:08:49 +00:00

66 lines
1.9 KiB
Mathematica

%---------------------------------------------------------------------------%
% Copyright (C) 2001 The University of Melbourne.
% This file may only be copied under the terms of the GNU General
% Public License - see the file COPYING in the Mercury distribution.
%---------------------------------------------------------------------------%
:- module use81.
:- interface.
:- use_module io.
:- pred main(io__state, io__state).
:- mode main(di, uo) is det.
%---------------------------------------------------------------------------%
:- implementation.
:- import_module int, char, std_util, list.
:- import_module qcheck, rnd.
:- type strange(T1, T2)
---> wierd(T1, T2, T1).
main -->
qcheck(qcheck__f(prop1), "prop1", 1000, [], []),
qcheck(qcheck__f(prop2), "prop2", 1000, [], []),
qcheck(qcheck__f(prop3), "prop3", 1000, [], []),
qcheck(qcheck__f(prop4), "prop4", 1000, [], []).
:- func prop1(func(strange(int, char), int) = list(int)) = property.
:- mode prop1(in(func(in,in)=out is det)) = out is det.
prop1(FFF) =
FFF(wierd(1, '0', 2), 999) `===` FFF(wierd(1, '0', 2), 999).
:- func prop2(func(strange(int, char), int) = list(int)) = property.
:- mode prop2(in(func(in,in)=out is det)) = out is det.
prop2(FFF) =
(if FFF(wierd(1, '0', 2), 999) = FFF(wierd(1, '0', 2), 888)
then
[ info(univ("equal")) | [yes] ]
else
[ info(univ("not equal")) | [yes] ]
).
:- func prop3(func(int) = int) = property.
:- mode prop3(in(func(in)=out is det)) = out is det.
prop3(FFF) =
(if FFF(1) = FFF(0)
then
[ info(univ("equal")) | [yes] ]
else
[ info(univ("not equal")) | [yes] ]
).
:- func prop4(func(int, int) = int) = property.
:- mode prop4(in(func(in, in)=out is det)) = out is det.
prop4(FFF) =
(if FFF(101, 10) = FFF(11, 15)
then
[ info(univ("equal")) | [yes] ]
else
[ info(univ("not equal")) | [yes] ]
).