main.kotlin.ch.tutteli.atrium.logic.impl.DefaultCollectionLikeAssertions.kt Maven / Gradle / Ivy
package ch.tutteli.atrium.logic.impl
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.creating.AssertionContainer
import ch.tutteli.atrium.logic.CollectionLikeAssertions
import ch.tutteli.atrium.logic.createDescriptiveAssertion
import ch.tutteli.atrium.logic.creating.transformers.FeatureExtractorBuilder
import ch.tutteli.atrium.logic.creating.typeutils.CollectionLike
import ch.tutteli.atrium.logic.manualFeature
import ch.tutteli.atrium.translations.DescriptionBasic.NOT_TO_BE
import ch.tutteli.atrium.translations.DescriptionBasic.TO_BE
import ch.tutteli.atrium.translations.DescriptionCollectionExpectation.SIZE
import ch.tutteli.atrium.translations.DescriptionCollectionExpectation.EMPTY
class DefaultCollectionLikeAssertions : CollectionLikeAssertions {
override fun isEmpty(container: AssertionContainer, converter: (T) -> Collection<*>): Assertion =
container.createDescriptiveAssertion(TO_BE, EMPTY) { converter(it).isEmpty() }
override fun isNotEmpty(container: AssertionContainer, converter: (T) -> Collection<*>): Assertion =
container.createDescriptiveAssertion(NOT_TO_BE, EMPTY) { converter(it).isNotEmpty() }
override fun size(container: AssertionContainer, converter: (T) -> Collection<*>): FeatureExtractorBuilder.ExecutionStep =
container.manualFeature(SIZE) { converter(this).size }
}