mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-16 01:43:35 +00:00
Fix qcheck to work with the current time structure that
Estimated hours taken: 1.0 Branches: main extras/quickcheck/qcheck.m: Fix qcheck to work with the current time structure that time__localtime returns. extras/quickcheck/Mmakefile: extras/quickcheck/test_qcheck.m: extras/quickcheck/nrev.m: Add a makefile and a simple testcase for qcheck.
This commit is contained in:
17
extras/quickcheck/Mmakefile
Normal file
17
extras/quickcheck/Mmakefile
Normal file
@@ -0,0 +1,17 @@
|
||||
#-----------------------------------------------------------------------------#
|
||||
# Copyright (C) 2001 The University of Melbourne.
|
||||
# This file may only be copied under the terms of the GNU Library General
|
||||
# Public License - see the file COPYING.LIB in the Mercury distribution.
|
||||
#-----------------------------------------------------------------------------#
|
||||
|
||||
-include ../Mmake.params
|
||||
|
||||
MAIN_TARGET = all
|
||||
|
||||
all: test_qcheck
|
||||
|
||||
depend: test_qcheck.depend
|
||||
|
||||
.PHONY: check
|
||||
check:
|
||||
true
|
||||
19
extras/quickcheck/nrev.m
Normal file
19
extras/quickcheck/nrev.m
Normal file
@@ -0,0 +1,19 @@
|
||||
%---------------------------------------------------------------------------%
|
||||
% 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 nrev.
|
||||
|
||||
:- interface.
|
||||
:- import_module list.
|
||||
|
||||
:- func nrev(list(T)) = list(T).
|
||||
:- mode nrev(in) = out is det.
|
||||
|
||||
:- implementation.
|
||||
|
||||
nrev([]) = [].
|
||||
nrev([X|Xs]) = Ys :-
|
||||
list__append(nrev(Xs), [X], Ys).
|
||||
@@ -326,8 +326,8 @@ qcheck(TestFunction, Name, TestCount, SpecificFrequency,
|
||||
:- func generate_seed_from_time(time_t) = int.
|
||||
:- mode generate_seed_from_time(in) = out.
|
||||
generate_seed_from_time(CurrentTime) = Seed :-
|
||||
tm(Seconds, Minutes, Hours, _Weekday, Yearday, _Month, Year, _DST)
|
||||
= time__localtime(CurrentTime),
|
||||
tm(Year, _Month, _MonthDay, Hours, Minutes, Seconds, Yearday,
|
||||
_Weekday, _DST) = time__localtime(CurrentTime),
|
||||
TotalSecs = ((( integer(Year) * integer(365) + integer(Yearday))
|
||||
* integer(24) + integer(Hours))
|
||||
* integer(60) + integer(Minutes))
|
||||
|
||||
35
extras/quickcheck/test_qcheck.m
Normal file
35
extras/quickcheck/test_qcheck.m
Normal file
@@ -0,0 +1,35 @@
|
||||
%---------------------------------------------------------------------------%
|
||||
% 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 test_qcheck.
|
||||
|
||||
:- interface.
|
||||
|
||||
:- use_module io.
|
||||
|
||||
:- pred main(io__state, io__state).
|
||||
:- mode main(di, uo) is det.
|
||||
|
||||
%---------------------------------------------------------------------------%
|
||||
|
||||
:- implementation.
|
||||
|
||||
:- import_module int, list.
|
||||
:- import_module qcheck, nrev.
|
||||
|
||||
%---------------------------------------------------------------------------%
|
||||
|
||||
main -->
|
||||
qcheck(qcheck__f(testing), "sample testing").
|
||||
|
||||
%------------------------------------------------------------------------------%
|
||||
% Invariant test functions
|
||||
%------------------------------------------------------------------------------%
|
||||
|
||||
:- func testing(list(int), list(int)) = property.
|
||||
testing(Xs, Ys) =
|
||||
nrev(Xs ++ Ys) `===` (nrev(Ys) ++ nrev(Xs)).
|
||||
|
||||
Reference in New Issue
Block a user