# Unit testing output

Once you have the SWIPL compiled, it is time to test it. To do so, we use CMAKE `ctest` with two testing packs:
 * `jpl:java_in_prolog`, for testing Prolog-calls-Java; and 
 * `jpl:prolog_in_java` (for testing Java-calls-Prolog).

**NOTE:** to have the tests built at compile time, one should have JUNIT4 available. In Ubuntu, it is provided via package `junit4`. Otherwise, when running CMAKE, it will yield the message "`-- No junit.jar. Make sure junit.jar points to junit4.jar  Dropping JPL tests.`" and no unit test will be available.


To run the tests with minimal output:

```bash
$ ctest -R jpl:prolog_in_java
Test project /home/ssardina/git/soft/prolog/swipl-devel.git/build
    Start 63: jpl:prolog_in_java
1/1 Test #63: jpl:prolog_in_java ...............   Passed    0.79 sec

100% tests passed, 0 tests failed out of 1

Total Test time (real) =   0.82 sec
[ssardina@Thinkpad-X1 build]$ ctest -R jpl:java_in_prolog
Test project /home/ssardina/git/soft/prolog/swipl-devel.git/build
    Start 64: jpl:java_in_prolog
1/1 Test #64: jpl:java_in_prolog ...............   Passed    0.57 sec

100% tests passed, 0 tests failed out of 1

Total Test time (real) =   0.59 sec
```

One can use the verbose `-V` option as follows:

```bash
$ ctest -V -R jpl:java_in_prolog
UpdateCTestConfiguration  from :/home/ssardina/git/soft/prolog/swipl-devel.git/build/DartConfiguration.tcl
UpdateCTestConfiguration  from :/home/ssardina/git/soft/prolog/swipl-devel.git/build/DartConfiguration.tcl
Test project /home/ssardina/git/soft/prolog/swipl-devel.git/build
Constructing a list of tests
Done constructing a list of tests
Updating test list for fixtures
Added 0 tests to meet fixture requirements
Checking test dependency graph...
Checking test dependency graph end
test 64
    Start 64: jpl:java_in_prolog

64: Test command: /home/ssardina/git/soft/prolog/swipl-devel.git/build/src/swipl "-p" "foreign=:/home/ssardina/git/soft/prolog/swipl-devel.git/build/packages/plunit" "-f" "none" "--no-packs" "-s" "/home/ssardina/git/soft/prolog/swipl-devel.git/packages/jpl/test_jpl.pl" "-g" "test_jpl" "-t" "halt"
64: Test timeout computed to be: 9.99988e+06
64: % PL-Unit: jpl .......................................................................................... done
64: % 3 tests are blocked:
64: % /home/ssardina/git/soft/prolog/swipl-devel.git/packages/jpl/test_jpl.pl:610:
64: 	test method_static_echo_float_4: we do not yet widen unbounded integers to floats or doubles
64: % /home/ssardina/git/soft/prolog/swipl-devel.git/packages/jpl/test_jpl.pl:914:
64: 	test set_field_static_shadow_1: we do not yet resolve same-named shadowed fields
64: % /home/ssardina/git/soft/prolog/swipl-devel.git/packages/jpl/test_jpl.pl:1193:
64: 	test throw_java_exception_1: part of the error term is nondeterministic: we need to match with _
64: % 90 tests passed
1/1 Test #64: jpl:java_in_prolog ...............   Passed    0.58 sec

The following tests passed:
	jpl:java_in_prolog

100% tests passed, 0 tests failed out of 1

Total Test time (real) =   0.60 sec
```

Similarly, for the Java-calls-Prolog test:

```java
$ ctest -V -R jpl:prolog_in_java
UpdateCTestConfiguration  from :/home/ssardina/git/soft/prolog/swipl-devel.git/build/DartConfiguration.tcl
UpdateCTestConfiguration  from :/home/ssardina/git/soft/prolog/swipl-devel.git/build/DartConfiguration.tcl
Test project /home/ssardina/git/soft/prolog/swipl-devel.git/build
Constructing a list of tests
Done constructing a list of tests
Updating test list for fixtures
Added 0 tests to meet fixture requirements
Checking test dependency graph...
Checking test dependency graph end
test 63
    Start 63: jpl:prolog_in_java

63: Test command: /usr/bin/env "CLASSPATH=src/main/java/jpl.jar" "SWI_HOME_DIR=../../home" "SWIPL_BOOT_FILE=../../home/boot.prc" "SOURCE_DIR=/home/ssardina/git/soft/prolog/swipl-devel.git/packages/jpl" "/usr/lib/jvm/java-11-openjdk-amd64/bin/java" "-Djava.library.path=." "-classpath" "/usr/share/java/junit4.jar:/usr/share/java/hamcrest-core.jar:src/main/java/jpl.jar:src/test/java/jpltest.jar" "org.jpl7.JPLTestSuiteRunner"
63: Test timeout computed to be: 9.99988e+06
63: Starting test: testAtomToString1 (Test_Atom)
63: Starting test: testAtomToString2 (Test_Atom)
63: Starting test: testAtomToString3 (Test_Atom)
63: Starting test: testAtomEquality1 (Test_Atom)
63: Starting test: testAtomEquality2 (Test_Atom)
63: Starting test: testAtomIdentity (Test_Atom)
63: Starting test: testAtom1 (Test_Atom)
...
...
...
63: Starting test: test_dict3 (Test_Dict)
63: Starting test: test_dict4 (Test_Dict)
63: Starting test: test_dict5 (Test_Dict)
63: ********* Test successful? true
1/1 Test #63: jpl:prolog_in_java ...............   Passed    1.06 sec

The following tests passed:
	jpl:prolog_in_java

100% tests passed, 0 tests failed out of 1

Total Test time (real) =   1.07 sec
```

