Coverage Summary for Class: ContextCheckIn (it.unibo.tuprolog.argumentation.core.primitives.context)

Class Class, % Method, % Branch, % Line, % Instruction, %
ContextCheckIn 100% (1/1) 100% (3/3) 75% (6/8) 100% (11/11) 100% (80/80)


 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.branchArgument
 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(+Branch, Goal): the solutions of Goal in the given branch, as context_check/1 */
 internal class ContextCheckIn(
     private val branches: ContextBranches,
 ) : PrimitiveWithSignature,
     DelegatedCall {
     override val signature = Signature("context_check", 2)
 
     // A branch that does not exist has no solutions (solved as the primitive does)
     override fun delegate(request: Solve.Request<ExecutionContext>): Delegation? {
         val branch = request.branchArgument(0)
         val store = branches.storeOf(branch) ?: return null
         return StoreClauses.delegation(store, branchLookup(branch), request.arguments[1], request.context.libraries)
     }
 
     override fun solve(request: Solve.Request<ExecutionContext>): Sequence<Solve.Response> =
         branches
             .storeOf(request.branchArgument(0))
             ?.solve(request.arguments[1])
             ?.map { request.replyWith(it) }
             ?: emptySequence()
 }