[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 16:08:43 +0000 |
On 21/11/2013, at 16:04, emacstheviking <address@hidden> wrote:
> I really don't want to go down that road but I guess if there is no choice I
> will have to... originally I had a predicate that explicitly returned the
> tests... I think I will do both... I will have a predicate that if it exists,
> can return a bunch of tests and they will be executed in order.
Can't you simply sort the list resulting from the findall/3 call or use setof/3?
Cheers,
Paulo
> OK, I can live with that,
> thanks again Paulo!
> :)
>
>
>
> On 21 November 2013 15:56, Paulo Moura <address@hidden> wrote:
>
> 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/>
-----------------------------------------------------------------