Special properties for testing

Author(s): Edison Mera, Pedro López, Manuel Hermenegildo.

Stability: [beta] Most of the functionality is there but it is still missing some testing and/or verification.


This module defines special properties and commands to be used in test declarations. They are called in general “test commands.” This includes some that are random generators.

Usage and interface

Documentation on exports

PROPERTYtry_sols/2

Usage:try_sols(G,N)

For this test of G get at most N solutions (normally 2 solutions are generated, just enough to detect non-determinism).

  • The following properties hold globally:
    (test_command/1)try_sols(G,N) is a test command.
Meta-predicate with arguments: try_sols(goal,?).

PROPERTYtimes/2

Usage:times(G,N)

This test of G should be repeated N times.

  • The following properties hold globally:
    (test_command/1)times(G,N) is a test command.
Meta-predicate with arguments: times(goal,?).

Usage:generate_from_calls_n(G,N)

For this test of G generate (at most) N initial test states from the calls field (normally only the first solution is generated).

  • The following properties hold globally:
    (test_command/1)generate_from_calls_n(G,N) is a test command.
Meta-predicate with arguments: generate_from_calls_n(goal,?).

PROPERTYtimeout/2

Usage:timeout(G,N)

For this test of G abort if runtime exceeds N milliseconds (normally the default timeout is 600000 milliseconds, and can be altered using the 'unittest_default_timeout' flag). A timeout of 0 means no timeout

  • The following properties hold globally:
    (test_command/1)timeout(G,N) is a test command.
Meta-predicate with arguments: timeout(goal,?).

PROPERTYnear/3

Usage:near(A,B,Eps)

Verifies that abs(B - A)/(abs(B) + abs(A)) =< Eps.

    PROPERTYuser_error/2
    Not implemented yet.

    Usage:

    The predicate should write to the current error stream the specified string.

      Usage:test_command(X)

      X is a test command.

      • The following properties hold globally:
        (sideff/2)test_command(X) is side-effect free.
      Meta-predicate with arguments: test_command(goal).

      Usage:

      Similar to the predicate random:random/3

        Usage:

        Similar to the predicate random:random/1

          Usage:

          Generates any floating point random number.

            Usage:

            Generates any floating point random number including special cases like infinite, nan or zero whith sign.

              Documentation on imports

              This module has the following direct dependencies: