package ch.tutteli.atrium.specs.reporting

import ch.tutteli.atrium.assertions.BulletPointIdentifier
import ch.tutteli.atrium.assertions.InformationAssertionGroupType
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.reporting.AssertionFormatter
import ch.tutteli.atrium.reporting.AssertionFormatterController
import kotlin.reflect.KClass

abstract class TextInformationAssertionGroupFormatterSpec(
    testeeFactory: (Map<KClass<out BulletPointIdentifier>, String>, AssertionFormatterController) -> AssertionFormatter,
    withIndent: Boolean,
    describePrefix: String = "[Atrium] "
) : TextExplanatoryBasedAssertionGroupFormatterSpec<InformationAssertionGroupType>(
    testeeFactory,
    InformationAssertionGroupType::class,
    InformationAssertionGroupType(withIndent),
    { assertionBuilder.explanatoryGroup.withInformationType(withIndent).withAssertions(it).build() },
    describePrefix,
    withIndent
)
