Coverage Summary for Class: UtilsModule (it.unibo.tuprolog.argumentation.core.modules.utils)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| UtilsModule |
100%
(1/1)
|
100%
(4/4)
|
|
100%
(19/19)
|
100%
(135/135)
|
package it.unibo.tuprolog.argumentation.core.modules.utils
import it.unibo.tuprolog.argumentation.core.modules.PrologModule
import it.unibo.tuprolog.argumentation.core.primitives.utils.AppendFast
import it.unibo.tuprolog.argumentation.core.primitives.utils.AppendLists
import it.unibo.tuprolog.argumentation.core.primitives.utils.AssertAll
import it.unibo.tuprolog.argumentation.core.primitives.utils.Contains
import it.unibo.tuprolog.argumentation.core.primitives.utils.ContainsAny
import it.unibo.tuprolog.argumentation.core.primitives.utils.Deduplicate
import it.unibo.tuprolog.argumentation.core.primitives.utils.ForEach
import it.unibo.tuprolog.argumentation.core.primitives.utils.Intersection
import it.unibo.tuprolog.argumentation.core.primitives.utils.MinimalBySet
import it.unibo.tuprolog.argumentation.core.primitives.utils.Sccs
import it.unibo.tuprolog.argumentation.core.primitives.utils.Sort
import it.unibo.tuprolog.argumentation.core.primitives.utils.SortDistinct
import it.unibo.tuprolog.argumentation.core.primitives.utils.Subtract
import it.unibo.tuprolog.argumentation.core.primitives.utils.UniqueByFirst
import it.unibo.tuprolog.solve.Signature
import it.unibo.tuprolog.solve.primitive.Primitive
/**
* Utilities on lists and on the labels of the context (module `utils`), most of them native primitives.
*/
object UtilsModule : PrologModule("prolog.argumentation.utils", "utils") {
override val primitives: Map<Signature, Primitive>
get() =
mapOf(
AppendFast.signature to AppendFast,
AppendLists.signature to AppendLists,
AssertAll.signature to AssertAll,
ForEach.signature to ForEach,
Contains.signature to Contains,
ContainsAny.signature to ContainsAny,
Sort.descriptionPair,
Deduplicate.descriptionPair,
SortDistinct.descriptionPair,
MinimalBySet.descriptionPair,
UniqueByFirst.descriptionPair,
Intersection.descriptionPair,
Subtract.descriptionPair,
Sccs(1).let { it.signature to it },
Sccs(2).let { it.signature to it },
)
override val prologRawTheory: String =
// language=Prolog
"""
% Lists Utils
%! writeList(+List)
% The items of List written one after the other, then a new line.
writeList([]) :- nl.
writeList([X|Others]) :-
write(X),
writeList(Others).
%! writeListNl(+List)
% The items of List written each on a line.
writeListNl([]).
writeListNl([X|Others]) :-
write(X),nl,
writeListNl(Others).
% sortDistinct/2, deduplicate/2, sort/2 and subtract/3 are native primitives (see primitives/utils)
""".trimIndent()
}