Coverage Summary for Class: ContextCheck (it.unibo.tuprolog.argumentation.core.primitives.context)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| ContextCheck |
100%
(1/1)
|
100%
(3/3)
|
|
100%
(5/5)
|
100%
(54/54)
|
package it.unibo.tuprolog.argumentation.core.primitives.context
import it.unibo.tuprolog.argumentation.core.engine.DelegatedCall
import it.unibo.tuprolog.argumentation.core.engine.Delegation
import it.unibo.tuprolog.argumentation.core.primitives.PrimitiveWithSignature
import it.unibo.tuprolog.argumentation.core.runtime.context.ContextBranches
import it.unibo.tuprolog.argumentation.core.runtime.context.StoreClauses
import it.unibo.tuprolog.argumentation.core.runtime.context.branchLookup
import it.unibo.tuprolog.solve.ExecutionContext
import it.unibo.tuprolog.solve.Signature
import it.unibo.tuprolog.solve.primitive.Solve
/**
* context_check(Goal): the solutions of Goal in the active branch (see [it.unibo.tuprolog.argumentation.core.runtime.context.ClauseStore.solve]); the arg2p engine
* resolves Goal with the clauses of the branch itself (see [StoreClauses])
*/
internal class ContextCheck(
private val branches: ContextBranches,
) : PrimitiveWithSignature,
DelegatedCall {
override val signature = Signature("context_check", 1)
override fun delegate(request: Solve.Request<ExecutionContext>): Delegation? =
StoreClauses.delegation(branches.selected, branchLookup(branches.active), request.arguments[0], request.context.libraries)
override fun solve(request: Solve.Request<ExecutionContext>): Sequence<Solve.Response> =
branches.selected.solve(request.arguments[0]).map { request.replyWith(it) }
}