[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Predicate ordering when using current_predicate/1
From: |
Paulo Moura |
Subject: |
Re: Predicate ordering when using current_predicate/1 |
Date: |
Thu, 21 Nov 2013 15:56:18 +0000 |
On 21/11/2013, at 15:48, emacstheviking <address@hidden> wrote:
> Hi,
>
> There is no mention of the actual order of returned predicates,
For a good reason. That's not something that you should rely upon.
> recently I created a testing framework and it has this line of code thanks to
> Daniel,
>
> findall(Name,(current_predicate(Name/0), atom_concat('test_', _,
> Name)),AllTests)
>
> I am writing tests now that rely upon them being executed in the order that
> they are defined in the source file i.e. the temporal order in which they
> were added to the database I presume.
>
> However, they do not seem to come out in the expected order unless I have
> done something wrong but the above line of code is what dictates the order of
> execution.
An alternative could be to use an identifier per test that you can compare and
sort. An example from the Logtalk's "ack" example unit tests:
test(ack_1) :-
...
test(ack_2) :-
...
test(ack_3) :-
...
Cheers,
Paulo
-----------------------------------------------------------------
Paulo Moura
Logtalk developer
Email: <mailto:address@hidden>
Web: <http://logtalk.org/>
-----------------------------------------------------------------