Coverage Summary for Class: Arg2pSolver (it.unibo.tuprolog.argumentation.core)

Class Method, % Branch, % Line, % Instruction, %
Arg2pSolver 100% (3/3) 100% (6/6) 100% (63/63)
Arg2pSolver$Companion 100% (3/3) 100% (6/6) 100% (26/26)
Arg2pSolver$Companion$of$1 100% (3/3) 100% (7/7) 100% (40/40)
Total 100% (9/9) 100% (19/19) 100% (129/129)


 package it.unibo.tuprolog.argumentation.core
 
 import it.unibo.tuprolog.argumentation.core.modules.ArgContext
 import it.unibo.tuprolog.argumentation.core.modules.ArgLibrary
 import it.unibo.tuprolog.argumentation.core.modules.ArgLoader
 import it.unibo.tuprolog.argumentation.core.modules.ModuleRegistry
 import it.unibo.tuprolog.argumentation.core.modules.entry.Arg2pModule
 import it.unibo.tuprolog.argumentation.core.runtime.cache.Cache
 import it.unibo.tuprolog.argumentation.core.runtime.context.Context
 import it.unibo.tuprolog.argumentation.core.runtime.modules.DynamicLoader
 import it.unibo.tuprolog.argumentation.core.runtime.settings.Settings
 import it.unibo.tuprolog.core.operators.OperatorSet
 import it.unibo.tuprolog.solve.library.Runtime
 
 interface Arg2pSolver {
     val loader: ArgLoader
     val context: ArgContext
     val cache: Cache
     val settings: Settings
 
     /** The libraries of every arg2p solver: the module loader, the context, the cache and the settings */
     fun baseLibraries(): List<ArgLibrary> = listOf(loader, context, cache, settings)
 
     fun staticLibraries(): Iterable<ArgLibrary>
 
     fun dynamicLibraries(): Iterable<ArgLibrary>
 
     fun to2pLibraries() = Runtime.of(baseLibraries().plus(staticLibraries()).map { it.content() })
 
     fun operators() =
         baseLibraries()
             .plus(staticLibraries())
             .map { it.theoryOperators }
             .reduce(OperatorSet::plus)
 
     companion object {
         fun of(
             staticLibs: Iterable<ArgLibrary>,
             dynamicLibs: Iterable<ArgLibrary>,
         ) = object : Arg2pSolver {
             override val loader: ArgLoader = DynamicLoader(this)
             override val context: ArgContext = Context()
             override val cache = Cache()
             override val settings = Settings(this)
 
             override fun staticLibraries() = staticLibs
 
             override fun dynamicLibraries() = dynamicLibs
         }
 
         fun default(
             staticLibs: Iterable<ArgLibrary> = emptyList(),
             dynamicLibs: Iterable<ArgLibrary> = emptyList(),
         ) = of(
             listOf(Arg2pModule) + staticLibs,
             ModuleRegistry.all + dynamicLibs,
         )
     }
 }