# Wiki Discussion: Using SWI-Prolog unit tests

**URL:** <https://swi-prolog.discourse.group/t/wiki-discussion-using-swi-prolog-unit-tests/2772>\
**Category:** Wiki Discussion\
**Created:** [August 10, 2020, 12:00pm UTC](https://swi-prolog.discourse.group/t/wiki-discussion-using-swi-prolog-unit-tests/2772 "2020-08-10T12:00:26Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Wiki](https://avatars.discourse-cdn.com/v4/letter/w/e8c25b/32.png) [@Wiki](https://swi-prolog.discourse.group/u/Wiki)\
**Post date:** [August 10, 2020, 12:00pm UTC](https://swi-prolog.discourse.group/t/wiki-discussion-using-swi-prolog-unit-tests/2772/1 "2020-08-10T12:00:26Z")

</div>

This is a topic to discuss the Wiki

[Using SWI-Prolog unit tests](https://swi-prolog.discourse.group/t/using-swi-prolog-unit-tests/2771)

---

<div class="post-metadata">

**Author:** ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://swi-prolog.discourse.group/u/EricGT)\
**Post date:** [August 10, 2020, 12:12pm UTC](https://swi-prolog.discourse.group/t/wiki-discussion-using-swi-prolog-unit-tests/2772/2 "2020-08-10T12:12:45Z")

</div>

One of the primary items that should be in the Wiki are examples of how to use the various options.

* * *

Example of

> **set** (AnswerTerm Cmp Instances)
> 
> Similar to `all(AnswerTerm Cmp Instances)` , but before testing both the bindings of AnswerTerm and Instances are sorted using [sort/2](https://www.swi-prolog.org/pldoc/man?predicate=sort/2). This removes duplicates and places both sets in the same order.2

```prolog
add_element(X,L1,L2) :-
    append([X],L1,L0),
    permutation(L0,L2).

:- begin_tests(add_element).

add_element_test(success,0,[1,2],[[0,1,2],[0,2,1],[1,0,2],[1,2,0],[2,0,1],[2,1,0]]).

test(add_element_success,[forall(add_element_test(success,X,L1,Expected_result)),set(L2 == Expected_result )]) :-
    add_element(X,L1,L2).

:- end_tests(add_element).

```

* * *
