deprecate ExpectImpl.builder; use assertionBuilder directly

This commit is contained in:
Robert Stoll
2020-07-11 21:47:31 +02:00
parent 771b5ccf1c
commit c2269c8a89
57 changed files with 318 additions and 306 deletions

View File

@@ -7,12 +7,12 @@ import ch.tutteli.atrium.api.verbs.assert
import ch.tutteli.atrium.api.verbs.assertThat
import ch.tutteli.atrium.api.verbs.expect
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.Text
import ch.tutteli.atrium.reporting.translating.StringBasedTranslatable
import ch.tutteli.atrium.translations.DescriptionBasic.IS
import ch.tutteli.atrium.translations.DescriptionAnyAssertion.TO_BE
import ch.tutteli.atrium.translations.DescriptionBasic.IS
import kotlin.test.Test
class SmokeTest {
@@ -110,7 +110,7 @@ fun Expect<Int>.isEven() = createAndAddAssertion(IS, Text("an even number")) { i
fun Expect<Int>.isMultipleOf(base: Int): Expect<Int> = addAssertion(_isMultipleOf(this, base))
private fun _isMultipleOf(expect: Expect<Int>, base: Int): Assertion =
ExpectImpl.builder.createDescriptive(expect, DescriptionIntAssertions.IS_MULTIPLE_OF, base) {
assertionBuilder.createDescriptive(expect, DescriptionIntAssertions.IS_MULTIPLE_OF, base) {
it % base == 0
}

View File

@@ -5,8 +5,8 @@ import ch.tutteli.atrium.api.fluent.en_GB.toBe
import ch.tutteli.atrium.api.verbs.assert
import ch.tutteli.atrium.api.verbs.assertThat
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.Text
import ch.tutteli.atrium.reporting.translating.StringBasedTranslatable
import ch.tutteli.atrium.translations.DescriptionBasic
@@ -38,7 +38,7 @@ fun Expect<Int>.isEven() =
fun Expect<Int>.isMultipleOf(base: Int) = addAssertion(_isMultipleOf(this, base))
fun _isMultipleOf(expect: Expect<Int>, base: Int): Assertion =
ExpectImpl.builder.createDescriptive(expect, DescriptionIntAssertions.IS_MULTIPLE_OF, base) {
assertionBuilder.createDescriptive(expect, DescriptionIntAssertions.IS_MULTIPLE_OF, base) {
it % base == 0
}

View File

@@ -6,8 +6,8 @@ import ch.tutteli.atrium.api.fluent.en_GB.kotlin_1_3.isSuccess
import ch.tutteli.atrium.api.fluent.en_GB.toBe
import ch.tutteli.atrium.api.verbs.expect
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.Text
import ch.tutteli.atrium.reporting.translating.StringBasedTranslatable
import ch.tutteli.atrium.translations.DescriptionBasic
@@ -37,7 +37,7 @@ fun Expect<Int>.isEven(): Expect<Int> =
fun Expect<Int>.isMultipleOf(base: Int): Expect<Int> = addAssertion(_isMultipleOf(this, base))
fun _isMultipleOf(expect: Expect<Int>, base: Int): Assertion =
ExpectImpl.builder.createDescriptive(expect, DescriptionIntAssertions.IS_MULTIPLE_OF, base) {
assertionBuilder.createDescriptive(expect, DescriptionIntAssertions.IS_MULTIPLE_OF, base) {
it % base == 0
}

View File

@@ -1,8 +1,8 @@
import ch.tutteli.atrium.api.infix.en_GB.*
import ch.tutteli.atrium.api.verbs.assertThat
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.Text
import ch.tutteli.atrium.reporting.translating.StringBasedTranslatable
import ch.tutteli.atrium.translations.DescriptionBasic.IS
@@ -58,7 +58,7 @@ infix fun Expect<Int>.tobe(@Suppress("UNUSED_PARAMETER") even: even) =
infix fun Expect<Int>.isMultipleOf(base: Int): Expect<Int> = addAssertion(isMultipleOf(this, base))
private fun isMultipleOf(expect: Expect<Int>, base: Int): Assertion =
ExpectImpl.builder.createDescriptive(expect, DescriptionIntAssertions.IS_MULTIPLE_OF, base) {
assertionBuilder.createDescriptive(expect, DescriptionIntAssertions.IS_MULTIPLE_OF, base) {
it % base == 0
}

View File

@@ -3,8 +3,8 @@ package custom
import ch.tutteli.atrium.api.infix.en_GB.toBe
import ch.tutteli.atrium.api.verbs.assertThat
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.Text
import ch.tutteli.atrium.reporting.translating.StringBasedTranslatable
import ch.tutteli.atrium.translations.DescriptionBasic
@@ -33,7 +33,7 @@ infix fun Expect<Int>.tobe(@Suppress("UNUSED_PARAMETER") even: even) =
infix fun Expect<Int>.isMultipleOf(base: Int) = addAssertion(isMultipleOf(this, base))
fun isMultipleOf(expect: Expect<Int>, base: Int): Assertion =
ExpectImpl.builder.createDescriptive(expect, DescriptionIntAssertions.IS_MULTIPLE_OF, base) {
assertionBuilder.createDescriptive(expect, DescriptionIntAssertions.IS_MULTIPLE_OF, base) {
it % base == 0
}

View File

@@ -7,8 +7,8 @@ import ch.tutteli.atrium.api.infix.en_GB.success
import ch.tutteli.atrium.api.infix.en_GB.toBe
import ch.tutteli.atrium.api.verbs.expect
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.Text
import ch.tutteli.atrium.reporting.translating.StringBasedTranslatable
import ch.tutteli.atrium.translations.DescriptionBasic
@@ -41,7 +41,7 @@ infix fun Expect<Int>.tobe(@Suppress("UNUSED_PARAMETER") even: even) =
infix fun Expect<Int>.isMultipleOf(base: Int): Expect<Int> = addAssertion(_isMultipleOf(this, base))
fun _isMultipleOf(expect: Expect<Int>, base: Int): Assertion =
ExpectImpl.builder.createDescriptive(expect, DescriptionIntAssertions.IS_MULTIPLE_OF, base) {
assertionBuilder.createDescriptive(expect, DescriptionIntAssertions.IS_MULTIPLE_OF, base) {
it % base == 0
}

View File

@@ -31,6 +31,5 @@ interface RootExpect<T> : Expect<T> {
is RootExpectImpl -> RootExpectImpl(rootExpect, expectOptions)
else -> throw UnsupportedOperationException("Please open an issue that a hook shall be implemented: $BUG_REPORT_URL?template=feature_request&title=Hook%20for%20RootExpect%20creation")
}
}
}

View File

@@ -3,7 +3,6 @@ package ch.tutteli.atrium.assertions.builders
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.core.falseProvider
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.specs.SubjectLessSpec
import ch.tutteli.atrium.specs.expectLambda
import org.spekframework.spek2.Spek
@@ -11,7 +10,7 @@ import org.spekframework.spek2.Spek
class DescriptiveWithBasedOnSubjectSpec : Spek({
fun addDescriptive(f: (Expect<Int>, Descriptive.HoldsOption) -> Assertion) = expectLambda<Int> {
addAssertion(f(this, ExpectImpl.builder.descriptive))
addAssertion(f(this, assertionBuilder.descriptive))
}
include(object : SubjectLessSpec<Int>("",
@@ -23,7 +22,7 @@ class DescriptiveWithBasedOnSubjectSpec : Spek({
"withFailureHintBasedOnDefinedSubject" to addDescriptive { expect, builder ->
builder.failing
.withFailureHintBasedOnDefinedSubject(expect) {
ExpectImpl.builder.explanatory.withExplanation("asdf").build()
assertionBuilder.explanatory.withExplanation("asdf").build()
}
.withDescriptionAndRepresentation("what ever", 1)
.build()
@@ -32,9 +31,9 @@ class DescriptiveWithBasedOnSubjectSpec : Spek({
builder.failing
.withFailureHintBasedOnSubject(expect) {
ifDefined {
ExpectImpl.builder.explanatory.withExplanation("asdf").build()
assertionBuilder.explanatory.withExplanation("asdf").build()
} ifAbsent {
ExpectImpl.builder.explanatory.withExplanation("asdf").build()
assertionBuilder.explanatory.withExplanation("asdf").build()
}
}
.showForAnyFailure
@@ -43,7 +42,7 @@ class DescriptiveWithBasedOnSubjectSpec : Spek({
},
"showOnlyIf" to addDescriptive { expect, builder ->
builder.failing
.withFailureHint { ExpectImpl.builder.explanatory.withExplanation("any hint").build() }
.withFailureHint { assertionBuilder.explanatory.withExplanation("any hint").build() }
.showBasedOnSubjectOnlyIf(expect) {
ifDefined {
it < 3
@@ -54,14 +53,14 @@ class DescriptiveWithBasedOnSubjectSpec : Spek({
},
"showOnlyIfSubjectDefined" to addDescriptive { expect, builder ->
builder.failing
.withFailureHint { ExpectImpl.builder.explanatory.withExplanation("any hint").build() }
.withFailureHint { assertionBuilder.explanatory.withExplanation("any hint").build() }
.showOnlyIfSubjectDefined(expect)
.withDescriptionAndRepresentation("what ever", 1)
.build()
},
"showBasedOnDefinedSubjectOnlyIf" to addDescriptive { expect, builder ->
builder.failing
.withFailureHint { ExpectImpl.builder.explanatory.withExplanation("any hint").build() }
.withFailureHint { assertionBuilder.explanatory.withExplanation("any hint").build() }
.showBasedOnDefinedSubjectOnlyIf(expect) { it < 3 }
.withDescriptionAndRepresentation("what ever", 1)
.build()

View File

@@ -2,8 +2,8 @@ package ch.tutteli.atrium.core.robstoll.lib.reporting
import ch.tutteli.atrium.api.fluent.en_GB.toBe
import ch.tutteli.atrium.api.verbs.internal.expect
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.root
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.Text
import ch.tutteli.atrium.reporting.translating.Untranslatable
import ch.tutteli.atrium.reporting.translating.UsingDefaultTranslator
@@ -30,7 +30,7 @@ class TextNextLineAssertionPairFormatterSpec : AssertionFormatterSpecBase({
describeFun(testee::formatGroupHeader.name) {
it("puts the representation on the next line indented as the bullet point used for newParameterObject") {
val newParameterObject = parameterObject.createChildWithNewPrefix(bulletPoint)
val assertionGroup = ExpectImpl.builder.root
val assertionGroup = assertionBuilder.root
.withDescriptionAndRepresentation(name, subject)
.withAssertions(listOf())
.build()
@@ -39,7 +39,7 @@ class TextNextLineAssertionPairFormatterSpec : AssertionFormatterSpecBase({
}
it("does not append a new line if the subject is ${Text::class.simpleName}${Text.Companion::EMPTY.name}") {
val assertionGroup = ExpectImpl.builder.root
val assertionGroup = assertionBuilder.root
.withDescriptionAndEmptyRepresentation(name)
.withAssertions(listOf())
.build()

View File

@@ -2,11 +2,11 @@ package ch.tutteli.atrium.logic.impl
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.ExplanatoryAssertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.withFailureHintBasedOnDefinedSubject
import ch.tutteli.atrium.core.polyfills.formatFloatingPointNumber
import ch.tutteli.atrium.core.polyfills.fullName
import ch.tutteli.atrium.creating.AssertionContainer
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.logic.FloatingPointAssertions
import ch.tutteli.atrium.reporting.translating.TranslatableWithArgs
import ch.tutteli.atrium.translations.DescriptionFloatingPointAssertion.*
@@ -37,7 +37,7 @@ class DefaultFloatingPointAssertions : FloatingPointAssertions {
): Assertion where T : Comparable<T>, T : Number {
return toBeWithErrorTolerance(container, expected, tolerance, absDiff) { subject ->
listOf(
ExpectImpl.builder.explanatory
assertionBuilder.explanatory
.withExplanation(FAILURE_DUE_TO_FLOATING_POINT_NUMBER, subject::class.fullName)
.build(),
createToBeWithErrorToleranceExplained(subject, expected, absDiff, tolerance)
@@ -53,7 +53,7 @@ internal fun <T> createToBeWithErrorToleranceExplained(
expected: T,
absDiff: (T) -> T,
tolerance: T
): ExplanatoryAssertion where T : Comparable<T>, T : Number = ExpectImpl.builder.explanatory
): ExplanatoryAssertion where T : Comparable<T>, T : Number = assertionBuilder.explanatory
.withExplanation(
TO_BE_WITH_ERROR_TOLERANCE_EXPLAINED,
formatFloatingPointNumber(subject),
@@ -69,14 +69,14 @@ internal fun <T : Comparable<T>> toBeWithErrorTolerance(
tolerance: T,
absDiff: (T) -> T,
explanatoryAssertionCreator: (T) -> List<Assertion>
): Assertion = ExpectImpl.builder.descriptive
): Assertion = assertionBuilder.descriptive
.withTest(container) { absDiff(it) <= tolerance }
.withFailureHintBasedOnDefinedSubject(container) { subject ->
//TODO that's not nice in case we use it in an Iterable contains assertion, for instance contains...entry { toBeWithErrorTolerance(x, 0.01) }
//we do not want to see the failure nor the exact check in the 'an entry which...' part
//same problematic applies to feature assertions within an identification lambda
// => yet explanatory assertion should always hold
ExpectImpl.builder.explanatoryGroup
assertionBuilder.explanatoryGroup
.withDefaultType
.withAssertions(explanatoryAssertionCreator(subject))
.build()

View File

@@ -1,6 +1,7 @@
package ch.tutteli.atrium.logic.impl
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.fixedClaimGroup
import ch.tutteli.atrium.assertions.builders.invisibleGroup
import ch.tutteli.atrium.core.Option
@@ -8,7 +9,6 @@ import ch.tutteli.atrium.core.falseProvider
import ch.tutteli.atrium.core.getOrElse
import ch.tutteli.atrium.creating.AssertionContainer
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.domain.creating.changers.ExtractedFeaturePostStep
import ch.tutteli.atrium.logic.*
import ch.tutteli.atrium.logic.assertions.LazyThreadUnsafeAssertionGroup
@@ -35,10 +35,10 @@ class DefaultIterableLikeAssertions : IterableLikeAssertions {
val mismatches = createMismatchAssertions(list, assertionCreatorOrNull)
assertions.add(
ExpectImpl.builder.explanatoryGroup
assertionBuilder.explanatoryGroup
.withWarningType
.withAssertion(
ExpectImpl.builder.list
assertionBuilder.list
.withDescriptionAndEmptyRepresentation(DescriptionIterableAssertion.WARNING_MISMATCHES)
.withAssertions(mismatches)
.build()
@@ -46,10 +46,10 @@ class DefaultIterableLikeAssertions : IterableLikeAssertions {
.build()
)
ExpectImpl.builder.invisibleGroup
assertionBuilder.invisibleGroup
.withAssertions(
hasElementAssertion,
ExpectImpl.builder.fixedClaimGroup
assertionBuilder.fixedClaimGroup
.withListType
.withClaim(mismatches.isEmpty())
.withDescriptionAndEmptyRepresentation(DescriptionIterableAssertion.ALL)
@@ -69,7 +69,7 @@ class DefaultIterableLikeAssertions : IterableLikeAssertions {
.mapWithIndex()
.filter { (_, element) -> !allCreatedAssertionsHold(element, assertionCreator) }
.map { (index, element) ->
ExpectImpl.builder.createDescriptive(
assertionBuilder.createDescriptive(
TranslatableWithArgs(DescriptionIterableAssertion.INDEX, index),
element,
falseProvider

View File

@@ -1,12 +1,12 @@
package ch.tutteli.atrium.logic.impl
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.core.None
import ch.tutteli.atrium.core.Option
import ch.tutteli.atrium.core.Some
import ch.tutteli.atrium.core.trueProvider
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.domain.builders.creating.collectors.collectAssertions
import ch.tutteli.atrium.domain.creating.collectors.assertionCollector
import ch.tutteli.atrium.reporting.Text
@@ -15,10 +15,10 @@ import ch.tutteli.atrium.translations.DescriptionIterableAssertion
internal fun createHasElementAssertion(iterator: Iterator<*>): AssertionGroup {
val hasElement = iterator.hasNext()
return ExpectImpl.builder.feature
return assertionBuilder.feature
.withDescriptionAndRepresentation(DescriptionIterableAssertion.HAS_ELEMENT, Text(hasElement.toString()))
.withAssertion(
ExpectImpl.builder.createDescriptive(DescriptionBasic.IS, Text(true.toString())) { hasElement }
assertionBuilder.createDescriptive(DescriptionBasic.IS, Text(true.toString())) { hasElement }
)
.build()
}
@@ -43,7 +43,7 @@ internal inline fun <E : Any> createExplanatoryAssertionGroup(
noinline assertionCreatorOrNull: (Expect<E>.() -> Unit)?,
firstOrNull: () -> Option<E>
): AssertionGroup {
return ExpectImpl.builder.explanatoryGroup
return assertionBuilder.explanatoryGroup
.withDefaultType
.let {
if (assertionCreatorOrNull != null) {
@@ -52,7 +52,7 @@ internal inline fun <E : Any> createExplanatoryAssertionGroup(
it.withAssertion(
// it is for an explanatoryGroup where it does not matter if the assertion holds or not
// thus it is OK to use trueProvider
ExpectImpl.builder.createDescriptive(DescriptionBasic.IS, Text.NULL, trueProvider)
assertionBuilder.createDescriptive(DescriptionBasic.IS, Text.NULL, trueProvider)
)
}
}

View File

@@ -6,8 +6,8 @@ import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.ExplanatoryAssertion
import ch.tutteli.atrium.assertions.WarningAssertionGroupType
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.translating.TranslatableWithArgs
import ch.tutteli.atrium.reporting.translating.Untranslatable
import ch.tutteli.atrium.specs.fileSystemSupportsCreatingSymlinks
@@ -35,7 +35,7 @@ object SymbolicLinkResolvingSpec : Spek({
val ifSymlinksNotSupported =
if (fileSystemSupportsCreatingSymlinks()) Skip.No else Skip.Yes("creating symbolic links is not supported on this file system")
val testAssertion = ExpectImpl.builder.createDescriptive(Untranslatable("testAssertion"), null) { true }
val testAssertion = assertionBuilder.createDescriptive(Untranslatable("testAssertion"), null) { true }
val resolvedPathConsumer by memoized(TEST) {
mockk<(Path) -> Assertion> {
every { this@mockk.invoke(any()) } returns testAssertion

View File

@@ -27,7 +27,12 @@ object ExpectImpl {
* In detail, its an `inline` property which returns [ch.tutteli.atrium.assertions.builders.assertionBuilder]
* which in turn returns an implementation of [AssertionBuilder].
*/
inline val builder get() = assertionBuilder
@Deprecated(
"Use assertionBuilder directly, ExpectImpl will be removed with 1.0.0",
ReplaceWith("ch.tutteli.atrium.assertions.builders.assertionBuilder")
)
inline val builder
get() = assertionBuilder
/**
* Returns [SubjectChangerBuilder] - helping you to change the subject of the assertion.

View File

@@ -1,11 +1,11 @@
package ch.tutteli.atrium.domain.builders.creating.changers.impl.subjectchanger
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.invisibleGroup
import ch.tutteli.atrium.core.None
import ch.tutteli.atrium.core.Option
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.domain.builders.creating.collectors.collectAssertions
import ch.tutteli.atrium.domain.creating.changers.SubjectChanger
@@ -18,10 +18,10 @@ class DefaultFailureHandlerImpl<T, R> : SubjectChanger.FailureHandler<T, R> {
): Assertion = maybeAssertionCreator.fold({
descriptiveAssertion
}) { assertionCreator ->
ExpectImpl.builder.invisibleGroup
assertionBuilder.invisibleGroup
.withAssertions(
descriptiveAssertion,
ExpectImpl.builder.explanatoryGroup
assertionBuilder.explanatoryGroup
.withDefaultType
.collectAssertions(None, assertionCreator)
.build()

View File

@@ -6,6 +6,7 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.creating.SubjectProvider
import ch.tutteli.atrium.domain.builders.ExpectImpl
@@ -19,28 +20,28 @@ import kotlin.reflect.KClass
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T> _toBe(subjectProvider: SubjectProvider<T>, expected: T) =
ExpectImpl.builder.createDescriptive(subjectProvider, TO_BE, expected) { it == expected }
assertionBuilder.createDescriptive(subjectProvider, TO_BE, expected) { it == expected }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T> _notToBe(subjectProvider: SubjectProvider<T>, expected: T) =
ExpectImpl.builder.createDescriptive(subjectProvider, NOT_TO_BE, expected) { it != expected }
assertionBuilder.createDescriptive(subjectProvider, NOT_TO_BE, expected) { it != expected }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T> _isSame(subjectProvider: SubjectProvider<T>, expected: T) =
ExpectImpl.builder.createDescriptive(subjectProvider, IS_SAME, expected) { it === expected }
assertionBuilder.createDescriptive(subjectProvider, IS_SAME, expected) { it === expected }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T> _isNotSame(subjectProvider: SubjectProvider<T>, expected: T) =
ExpectImpl.builder.createDescriptive(subjectProvider, IS_NOT_SAME, expected) { it !== expected }
assertionBuilder.createDescriptive(subjectProvider, IS_NOT_SAME, expected) { it !== expected }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : Any?> _toBeNull(subjectProvider: SubjectProvider<T>) =
ExpectImpl.builder.createDescriptive(subjectProvider, TO_BE, Text.NULL) { it == null }
assertionBuilder.createDescriptive(subjectProvider, TO_BE, Text.NULL) { it == null }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")

View File

@@ -1,12 +1,15 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating.changers
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.fixedClaimGroup
import ch.tutteli.atrium.core.*
import ch.tutteli.atrium.core.ExperimentalNewExpectTypes
import ch.tutteli.atrium.core.None
import ch.tutteli.atrium.core.Option
import ch.tutteli.atrium.core.Some
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.creating.FeatureExpect
import ch.tutteli.atrium.creating.FeatureExpectOptions
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.domain.builders.creating.collectors.collectAssertions
import ch.tutteli.atrium.domain.creating.collectors.assertionCollector
import ch.tutteli.atrium.reporting.translating.Translatable
@@ -26,7 +29,7 @@ fun <T, R> _extractFeature(
.fold(
{
originalAssertionContainer.addAssertion(
ExpectImpl.builder.fixedClaimGroup
assertionBuilder.fixedClaimGroup
.withFeatureType
.failing
.withDescriptionAndRepresentation(description, representationForFailure)
@@ -34,7 +37,7 @@ fun <T, R> _extractFeature(
listOf<Assertion>()
}) { assertionCreator ->
listOf(
ExpectImpl.builder.explanatoryGroup.withDefaultType
assertionBuilder.explanatoryGroup.withDefaultType
.collectAssertions(None, assertionCreator)
.build()
)

View File

@@ -3,9 +3,9 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.creating.SubjectProvider
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.domain.creating.charsequence.contains.CharSequenceContains
import ch.tutteli.atrium.domain.creating.charsequence.contains.searchbehaviours.NoOpSearchBehaviour
import ch.tutteli.atrium.domain.creating.charsequence.contains.searchbehaviours.NotSearchBehaviour
@@ -26,44 +26,44 @@ fun <T : CharSequence> _containsNotBuilder(subjectProvider: SubjectProvider<T>):
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun _startsWith(subjectProvider: SubjectProvider<CharSequence>, expected: CharSequence): Assertion =
ExpectImpl.builder.createDescriptive(subjectProvider, STARTS_WITH, expected) { it.startsWith(expected) }
assertionBuilder.createDescriptive(subjectProvider, STARTS_WITH, expected) { it.startsWith(expected) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun _startsNotWith(subjectProvider: SubjectProvider<CharSequence>, expected: CharSequence): Assertion =
ExpectImpl.builder.createDescriptive(subjectProvider, STARTS_NOT_WITH, expected) { !it.startsWith(expected) }
assertionBuilder.createDescriptive(subjectProvider, STARTS_NOT_WITH, expected) { !it.startsWith(expected) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun _endsWith(subjectProvider: SubjectProvider<CharSequence>, expected: CharSequence): Assertion =
ExpectImpl.builder.createDescriptive(subjectProvider, ENDS_WITH, expected) { it.endsWith(expected) }
assertionBuilder.createDescriptive(subjectProvider, ENDS_WITH, expected) { it.endsWith(expected) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun _endsNotWith(subjectProvider: SubjectProvider<CharSequence>, expected: CharSequence): Assertion =
ExpectImpl.builder.createDescriptive(subjectProvider, ENDS_NOT_WITH, expected) { !it.endsWith(expected) }
assertionBuilder.createDescriptive(subjectProvider, ENDS_NOT_WITH, expected) { !it.endsWith(expected) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun _isEmpty(subjectProvider: SubjectProvider<CharSequence>): Assertion =
ExpectImpl.builder.createDescriptive(subjectProvider, IS, EMPTY) { it.isEmpty() }
assertionBuilder.createDescriptive(subjectProvider, IS, EMPTY) { it.isEmpty() }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun _isNotEmpty(subjectProvider: SubjectProvider<CharSequence>): Assertion =
ExpectImpl.builder.createDescriptive(subjectProvider, IS_NOT, EMPTY) { it.isNotEmpty() }
assertionBuilder.createDescriptive(subjectProvider, IS_NOT, EMPTY) { it.isNotEmpty() }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun _isNotBlank(subjectProvider: SubjectProvider<CharSequence>): Assertion =
ExpectImpl.builder.createDescriptive(subjectProvider, IS_NOT, BLANK) { it.isNotBlank() }
assertionBuilder.createDescriptive(subjectProvider, IS_NOT, BLANK) { it.isNotBlank() }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : CharSequence> _matches(expect: Expect<T>, expected: Regex): Assertion =
ExpectImpl.builder.createDescriptive(expect, MATCHES, expected) { it.matches(expected) }
assertionBuilder.createDescriptive(expect, MATCHES, expected) { it.matches(expected) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : CharSequence> _mismatches(expect: Expect<T>, expected: Regex): Assertion =
ExpectImpl.builder.createDescriptive(expect, MISMATCHES, expected) { !it.matches(expected) }
assertionBuilder.createDescriptive(expect, MISMATCHES, expected) { !it.matches(expected) }

View File

@@ -1,7 +1,7 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating.charsequence.contains.checkers
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.domain.creating.charsequence.contains.CharSequenceContains
import ch.tutteli.atrium.translations.DescriptionBasic
@@ -11,5 +11,5 @@ import ch.tutteli.atrium.translations.DescriptionBasic
class NotChecker : CharSequenceContains.Checker {
override fun createAssertion(foundNumberOfTimes: Int): Assertion =
ExpectImpl.builder.createDescriptive(DescriptionBasic.IS, 0) { foundNumberOfTimes == 0 }
assertionBuilder.createDescriptive(DescriptionBasic.IS, 0) { foundNumberOfTimes == 0 }
}

View File

@@ -3,6 +3,7 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.creating.SubjectProvider
import ch.tutteli.atrium.domain.builders.ExpectImpl
@@ -15,12 +16,12 @@ import ch.tutteli.atrium.translations.DescriptionCollectionAssertion.EMPTY
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun _isEmpty(subjectProvider: SubjectProvider<Collection<*>>): Assertion =
ExpectImpl.builder.createDescriptive(subjectProvider, IS, EMPTY) { it.isEmpty() }
assertionBuilder.createDescriptive(subjectProvider, IS, EMPTY) { it.isEmpty() }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun _isNotEmpty(subjectProvider: SubjectProvider<Collection<*>>): Assertion =
ExpectImpl.builder.createDescriptive(subjectProvider, IS_NOT, EMPTY) { it.isNotEmpty() }
assertionBuilder.createDescriptive(subjectProvider, IS_NOT, EMPTY) { it.isNotEmpty() }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")

View File

@@ -2,13 +2,12 @@ package ch.tutteli.atrium.domain.robstoll.lib.creating.collectors
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.invisibleGroup
import ch.tutteli.atrium.assertions.builders.withExplanatoryAssertion
import ch.tutteli.atrium.core.Option
import ch.tutteli.atrium.core.coreFactory
import ch.tutteli.atrium.creating.CollectingExpect
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.Text
import ch.tutteli.atrium.translations.DescriptionBasic
import ch.tutteli.atrium.translations.ErrorMessages
@@ -21,7 +20,7 @@ fun <T> _collect(
.addAssertionsCreatedBy(assertionCreator)
.getAssertions()
return if (collectedAssertions.size > 1) {
ExpectImpl.builder.invisibleGroup.withAssertions(collectedAssertions).build()
assertionBuilder.invisibleGroup.withAssertions(collectedAssertions).build()
} else {
collectedAssertions[0]
}
@@ -47,7 +46,7 @@ fun <T> _collectForComposition(
} catch (@Suppress("DEPRECATION") e: ch.tutteli.atrium.creating.PlantHasNoSubjectException) {
@Suppress("DEPRECATION")
listOf(
ExpectImpl.builder.explanatoryGroup
assertionBuilder.explanatoryGroup
.withWarningType
.withExplanatoryAssertion(ErrorMessages.SUBJECT_ACCESSED_TOO_EARLY)
.build()
@@ -65,7 +64,7 @@ private fun <T> collectAssertions(
.addAssertionsCreatedBy(assertionCreatorOrNull)
.getAssertions()
} else {
listOf(ExpectImpl.builder.createDescriptive(DescriptionBasic.IS, Text.NULL) {
listOf(assertionBuilder.createDescriptive(DescriptionBasic.IS, Text.NULL) {
maybeSubject.isDefined()
})
}

View File

@@ -1,31 +1,31 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.creating.SubjectProvider
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.translations.DescriptionComparableAssertion.*
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T1 : Comparable<T2>, T2 : Any?> _isLessThan(subjectProvider: SubjectProvider<T1>, expected: T2) =
ExpectImpl.builder.createDescriptive(subjectProvider, IS_LESS_THAN, expected) { it < expected }
assertionBuilder.createDescriptive(subjectProvider, IS_LESS_THAN, expected) { it < expected }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T1 : Comparable<T2>, T2 : Any?> _isLessThanOrEqual(subjectProvider: SubjectProvider<T1>, expected: T2) =
ExpectImpl.builder.createDescriptive(subjectProvider, IS_LESS_OR_EQUALS, expected) { it <= expected }
assertionBuilder.createDescriptive(subjectProvider, IS_LESS_OR_EQUALS, expected) { it <= expected }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T1 : Comparable<T2>, T2 : Any?> _isGreaterThan(subjectProvider: SubjectProvider<T1>, expected: T2) =
ExpectImpl.builder.createDescriptive(subjectProvider, IS_GREATER_THAN, expected) { it > expected }
assertionBuilder.createDescriptive(subjectProvider, IS_GREATER_THAN, expected) { it > expected }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T1 : Comparable<T2>, T2 : Any?> _isGreaterThanOrEqual(subjectProvider: SubjectProvider<T1>, expected: T2) =
ExpectImpl.builder.createDescriptive(subjectProvider, IS_GREATER_OR_EQUALS, expected) { it >= expected }
assertionBuilder.createDescriptive(subjectProvider, IS_GREATER_OR_EQUALS, expected) { it >= expected }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T1 : Comparable<T2>, T2 : Any?> _isEqualComparingTo(expect: Expect<T1>, expected: T2) =
ExpectImpl.builder.createDescriptive(expect, IS_EQUAL, expected) { it.compareTo(expected) == 0 }
assertionBuilder.createDescriptive(expect, IS_EQUAL, expected) { it.compareTo(expected) == 0 }

View File

@@ -7,11 +7,11 @@ package ch.tutteli.atrium.domain.robstoll.lib.creating
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.ExplanatoryAssertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.withFailureHintBasedOnDefinedSubject
import ch.tutteli.atrium.core.polyfills.formatFloatingPointNumber
import ch.tutteli.atrium.core.polyfills.fullName
import ch.tutteli.atrium.creating.SubjectProvider
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.translating.TranslatableWithArgs
import ch.tutteli.atrium.translations.DescriptionFloatingPointAssertion.*
import kotlin.jvm.JvmMultifileClass
@@ -36,7 +36,7 @@ private fun <T> toBeWithErrorToleranceOfFloatOrDouble(
): Assertion where T : Comparable<T>, T : Number {
return toBeWithErrorTolerance(subjectProvider, expected, tolerance, absDiff) { subject ->
listOf(
ExpectImpl.builder.explanatory
assertionBuilder.explanatory
.withExplanation(FAILURE_DUE_TO_FLOATING_POINT_NUMBER, subject::class.fullName)
.build(),
createToBeWithErrorToleranceExplained(subject, expected, absDiff, tolerance)
@@ -50,7 +50,7 @@ internal fun <T> createToBeWithErrorToleranceExplained(
expected: T,
absDiff: (T) -> T,
tolerance: T
): ExplanatoryAssertion where T : Comparable<T>, T : Number = ExpectImpl.builder.explanatory
): ExplanatoryAssertion where T : Comparable<T>, T : Number = assertionBuilder.explanatory
.withExplanation(
TO_BE_WITH_ERROR_TOLERANCE_EXPLAINED,
formatFloatingPointNumber(subject),
@@ -66,14 +66,14 @@ internal fun <T : Comparable<T>> toBeWithErrorTolerance(
tolerance: T,
absDiff: (T) -> T,
explanatoryAssertionCreator: (T) -> List<Assertion>
): Assertion = ExpectImpl.builder.descriptive
): Assertion = assertionBuilder.descriptive
.withTest(subjectProvider) { absDiff(it) <= tolerance }
.withFailureHintBasedOnDefinedSubject(subjectProvider) { subject ->
//TODO that's not nice in case we use it in an Iterable contains assertion, for instance contains...entry { toBeWithErrorTolerance(x, 0.01) }
//we do not want to see the failure nor the exact check in the 'an entry which...' part
//same problematic applies to feature assertions within an identification lambda
// => yet explanatory assertion should always hold
ExpectImpl.builder.explanatoryGroup
assertionBuilder.explanatoryGroup
.withDefaultType
.withAssertions(explanatoryAssertionCreator(subject))
.build()

View File

@@ -1,7 +1,7 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating.iterable.contains.checkers
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.domain.creating.iterable.contains.IterableContains
import ch.tutteli.atrium.translations.DescriptionBasic
@@ -11,5 +11,5 @@ import ch.tutteli.atrium.translations.DescriptionBasic
class NotChecker : IterableContains.Checker {
override fun createAssertion(foundNumberOfTimes: Int): Assertion =
ExpectImpl.builder.createDescriptive(DescriptionBasic.IS, 0) { foundNumberOfTimes == 0 }
assertionBuilder.createDescriptive(DescriptionBasic.IS, 0) { foundNumberOfTimes == 0 }
}

View File

@@ -7,6 +7,7 @@ import ch.tutteli.atrium.api.fluent.en_GB.feature
import ch.tutteli.atrium.api.fluent.en_GB.toBe
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.fixedClaimGroup
import ch.tutteli.atrium.core.*
import ch.tutteli.atrium.creating.Expect
@@ -32,7 +33,7 @@ internal inline fun <E : Any> createExplanatoryAssertionGroup(
noinline assertionCreatorOrNull: (Expect<E>.() -> Unit)?,
firstOrNull: () -> Option<E>
): AssertionGroup {
return ExpectImpl.builder.explanatoryGroup
return assertionBuilder.explanatoryGroup
.withDefaultType
.let {
if (assertionCreatorOrNull != null) {
@@ -41,7 +42,7 @@ internal inline fun <E : Any> createExplanatoryAssertionGroup(
it.withAssertion(
// it is for an explanatoryGroup where it does not matter if the assertion holds or not
// thus it is OK to use trueProvider
ExpectImpl.builder.createDescriptive(DescriptionBasic.IS, Text.NULL, trueProvider)
assertionBuilder.createDescriptive(DescriptionBasic.IS, Text.NULL, trueProvider)
)
}
}
@@ -49,7 +50,7 @@ internal inline fun <E : Any> createExplanatoryAssertionGroup(
}
internal fun createEntryAssertion(explanatoryGroup: AssertionGroup, found: Boolean): AssertionGroup {
return ExpectImpl.builder.fixedClaimGroup
return assertionBuilder.fixedClaimGroup
.withListType
.withClaim(found)
.withDescriptionAndEmptyRepresentation(AN_ENTRY_WHICH)
@@ -81,7 +82,7 @@ internal fun <E, SC> createEntryAssertionTemplate(
false to SIZE_EXCEEDED
})
val description = TranslatableWithArgs(entryWithIndex, index)
ExpectImpl.builder.feature
assertionBuilder.feature
.withDescriptionAndRepresentation(description, entryRepresentation)
.withAssertion(createEntryFeatureAssertion { found })
.build()
@@ -100,16 +101,16 @@ internal fun <E> createSizeFeatureAssertionForInOrderOnly(
addAssertion(LazyThreadUnsafeAssertionGroup {
val additionalEntries = itr.mapRemainingWithCounter { counter, it ->
val description = TranslatableWithArgs(ENTRY_WITH_INDEX, expectedSize + counter)
ExpectImpl.builder.descriptive
assertionBuilder.descriptive
.holding
.withDescriptionAndRepresentation(description, it)
.build()
}
ExpectImpl.builder.explanatoryGroup
assertionBuilder.explanatoryGroup
.withWarningType
.withAssertion(
ExpectImpl.builder.list
assertionBuilder.list
.withDescriptionAndEmptyRepresentation(WARNING_ADDITIONAL_ENTRIES)
.withAssertions(additionalEntries)
.build()
@@ -123,10 +124,10 @@ internal fun <E> createSizeFeatureAssertionForInOrderOnly(
internal fun createHasElementAssertion(iterator: Iterator<*>): AssertionGroup {
val hasElement = iterator.hasNext()
return ExpectImpl.builder.feature
return assertionBuilder.feature
.withDescriptionAndRepresentation(HAS_ELEMENT, Text(hasElement.toString()))
.withAssertion(
ExpectImpl.builder.createDescriptive(DescriptionBasic.IS, Text(true.toString())) { hasElement }
assertionBuilder.createDescriptive(DescriptionBasic.IS, Text(true.toString())) { hasElement }
)
.build()
}

View File

@@ -4,14 +4,13 @@ import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.DefaultListAssertionGroupType
import ch.tutteli.atrium.assertions.DefaultSummaryAssertionGroupType
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.core.None
import ch.tutteli.atrium.core.Some
import ch.tutteli.atrium.core.coreFactory
import ch.tutteli.atrium.core.getOrElse
import ch.tutteli.atrium.creating.CollectingExpect
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.creating.SubjectProvider
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.domain.creating.iterable.contains.IterableContains
import ch.tutteli.atrium.domain.creating.iterable.contains.searchbehaviours.InAnyOrderSearchBehaviour
import ch.tutteli.atrium.domain.creating.iterable.contains.searchbehaviours.NotSearchBehaviour
@@ -72,7 +71,7 @@ class InAnyOrderEntriesAssertionCreator<E : Any, in T : Iterable<E?>>(
DefaultListAssertionGroupType
}
return ExpectImpl.builder.customType(groupType)
return assertionBuilder.customType(groupType)
.withDescriptionAndEmptyRepresentation(AN_ENTRY_WHICH)
.withAssertions(assertions)
.build()

View File

@@ -5,9 +5,9 @@ package ch.tutteli.atrium.domain.robstoll.lib.creating.iterable.contains.creator
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.invisibleGroup
import ch.tutteli.atrium.creating.SubjectProvider
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.domain.creating.iterable.contains.IterableContains
import ch.tutteli.atrium.domain.creating.iterable.contains.searchbehaviours.InAnyOrderOnlySearchBehaviour
import ch.tutteli.atrium.domain.robstoll.lib.assertions.LazyThreadUnsafeAssertionGroup
@@ -54,14 +54,14 @@ abstract class InAnyOrderOnlyAssertionCreator<E, in T : Iterable<E?>, in SC>(
})
}
assertions.add(
ExpectImpl.builder.feature
assertionBuilder.feature
.withDescriptionAndRepresentation(Untranslatable("size"), Text(actualSize.toString()))
.withAssertions(featureAssertions)
.build()
)
val description = searchBehaviour.decorateDescription(CONTAINS)
val summary = ExpectImpl.builder.summary
val summary = assertionBuilder.summary
.withDescription(description)
.withAssertions(assertions)
.build()
@@ -71,7 +71,7 @@ abstract class InAnyOrderOnlyAssertionCreator<E, in T : Iterable<E?>, in SC>(
mismatches -> WARNING_MISMATCHES
else -> WARNING_MISMATCHES_ADDITIONAL_ENTRIES
}
ExpectImpl.builder.invisibleGroup
assertionBuilder.invisibleGroup
.withAssertions(
summary,
createExplanatoryGroupForMismatchesEtc(list, warningDescription)
@@ -103,7 +103,8 @@ abstract class InAnyOrderOnlyAssertionCreator<E, in T : Iterable<E?>, in SC>(
): Pair<Boolean, Assertion>
private fun createSizeFeatureAssertion(allSearchCriteria: List<SC>, actualSize: Int): MutableList<Assertion> =
mutableListOf(ExpectImpl.builder.descriptive
mutableListOf(
assertionBuilder.descriptive
.withTest { actualSize == allSearchCriteria.size }
.withDescriptionAndRepresentation(TO_BE, Text(allSearchCriteria.size.toString()))
.build()
@@ -113,12 +114,12 @@ abstract class InAnyOrderOnlyAssertionCreator<E, in T : Iterable<E?>, in SC>(
list: MutableList<E?>,
warning: DescriptionIterableAssertion
): AssertionGroup {
val assertions = list.map { ExpectImpl.builder.explanatory.withExplanation(it).build() }
val additionalEntries = ExpectImpl.builder.list
val assertions = list.map { assertionBuilder.explanatory.withExplanation(it).build() }
val additionalEntries = assertionBuilder.list
.withDescriptionAndEmptyRepresentation(warning)
.withAssertions(assertions)
.build()
return ExpectImpl.builder.explanatoryGroup
return assertionBuilder.explanatoryGroup
.withWarningType
.withAssertion(additionalEntries)
.build()

View File

@@ -2,7 +2,7 @@ package ch.tutteli.atrium.domain.robstoll.lib.creating.iterable.contains.creator
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.domain.creating.iterable.contains.searchbehaviours.InAnyOrderOnlySearchBehaviour
import ch.tutteli.atrium.reporting.translating.Translatable
import ch.tutteli.atrium.translations.DescriptionIterableAssertion.AN_ENTRY_WHICH_IS
@@ -28,6 +28,6 @@ class InAnyOrderOnlyValuesAssertionCreator<E, in T : Iterable<E?>>(
list: MutableList<E?>
): Pair<Boolean, Assertion> {
val found: Boolean = list.remove(searchCriterion)
return found to ExpectImpl.builder.createDescriptive(AN_ENTRY_WHICH_IS, searchCriterion) { found }
return found to assertionBuilder.createDescriptive(AN_ENTRY_WHICH_IS, searchCriterion) { found }
}
}

View File

@@ -4,6 +4,7 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating.iterable.contains.creators
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.core.Some
import ch.tutteli.atrium.core.getOrElse
import ch.tutteli.atrium.creating.Expect
@@ -34,7 +35,7 @@ abstract class InOrderOnlyBaseAssertionCreator<E, in T : Iterable<E>, SC>(
addAssertion(createSizeFeatureAssertionForInOrderOnly(index, subject, remainingList.iterator()))
}
val description = searchBehaviour.decorateDescription(DescriptionIterableAssertion.CONTAINS)
ExpectImpl.builder.summary
assertionBuilder.summary
.withDescription(description)
.withAssertion(assertion)
.build()

View File

@@ -1,8 +1,8 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating.iterable.contains.creators
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.core.Option
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.translations.DescriptionAnyAssertion.TO_BE
class InOrderOnlyValueMatcher<E> : InOrderOnlyMatcher<E, E> {
@@ -13,6 +13,6 @@ class InOrderOnlyValueMatcher<E> : InOrderOnlyMatcher<E, E> {
maybeSubject: Option<List<E>>,
searchCriterion: E
): (() -> Boolean) -> Assertion = { found ->
ExpectImpl.builder.createDescriptive(TO_BE, searchCriterion, found)
assertionBuilder.createDescriptive(TO_BE, searchCriterion, found)
}
}

View File

@@ -6,6 +6,7 @@ package ch.tutteli.atrium.domain.robstoll.lib.creating.iterable.contains
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.core.coreFactory
import ch.tutteli.atrium.creating.AssertionPlant
import ch.tutteli.atrium.creating.MaybeSubject
@@ -101,7 +102,7 @@ internal fun <E, SC> createEntryAssertionTemplate(
Pair(false, DescriptionIterableAssertion.SIZE_EXCEEDED)
})
val description = TranslatableWithArgs(entryWithIndex, index)
ExpectImpl.builder.feature
assertionBuilder.feature
.withDescriptionAndRepresentation(description, entryRepresentation)
.withAssertion(createEntryFeatureAssertion { found })
.build()
@@ -111,7 +112,7 @@ internal fun <E, SC> createEntryAssertionTemplate(
@Suppress("DeprecatedCallableAddReplaceWith", "DEPRECATION")
@Deprecated("Will be removed with 1.0.0")
internal fun createEntryAssertion(explanatoryAssertions: List<Assertion>, found: Boolean): AssertionGroup {
val explanatoryGroup = ExpectImpl.builder.explanatoryGroup
val explanatoryGroup = assertionBuilder.explanatoryGroup
.withDefaultType
.withAssertions(explanatoryAssertions)
.build()

View File

@@ -3,6 +3,7 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.fixedClaimGroup
import ch.tutteli.atrium.assertions.builders.invisibleGroup
import ch.tutteli.atrium.core.Option
@@ -49,10 +50,10 @@ fun <E : Any, T : Iterable<E?>> _iterableAll(
val mismatches = createMismatchAssertions(list, assertionCreatorOrNull)
assertions.add(
ExpectImpl.builder.explanatoryGroup
assertionBuilder.explanatoryGroup
.withWarningType
.withAssertion(
ExpectImpl.builder.list
assertionBuilder.list
.withDescriptionAndEmptyRepresentation(WARNING_MISMATCHES)
.withAssertions(mismatches)
.build()
@@ -60,10 +61,10 @@ fun <E : Any, T : Iterable<E?>> _iterableAll(
.build()
)
ExpectImpl.builder.invisibleGroup
assertionBuilder.invisibleGroup
.withAssertions(
hasElementAssertion,
ExpectImpl.builder.fixedClaimGroup
assertionBuilder.fixedClaimGroup
.withListType
.withClaim(mismatches.isEmpty())
.withDescriptionAndEmptyRepresentation(ALL)
@@ -83,7 +84,7 @@ private fun <E : Any> createMismatchAssertions(
.mapWithIndex()
.filter { (_, element) -> !allCreatedAssertionsHold(element, assertionCreator) }
.map { (index, element) ->
ExpectImpl.builder.createDescriptive(TranslatableWithArgs(INDEX, index), element, falseProvider)
assertionBuilder.createDescriptive(TranslatableWithArgs(INDEX, index), element, falseProvider)
}
.toList()
}
@@ -91,14 +92,14 @@ private fun <E : Any> createMismatchAssertions(
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <E, T : Iterable<E>> _hasNext(expect: Expect<T>): Assertion =
ExpectImpl.builder.createDescriptive(expect, DescriptionBasic.HAS, NEXT_ELEMENT) {
assertionBuilder.createDescriptive(expect, DescriptionBasic.HAS, NEXT_ELEMENT) {
it.iterator().hasNext()
}
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <E, T : Iterable<E>> _hasNotNext(expect: Expect<T>): Assertion =
ExpectImpl.builder.createDescriptive(expect, DescriptionBasic.HAS_NOT, NEXT_ELEMENT) {
assertionBuilder.createDescriptive(expect, DescriptionBasic.HAS_NOT, NEXT_ELEMENT) {
!it.iterator().hasNext()
}

View File

@@ -3,18 +3,18 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.translations.DescriptionBasic
import ch.tutteli.atrium.translations.DescriptionIterableAssertion.NEXT_ELEMENT
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <E, T : Iterator<E>> _hasNext(expect: Expect<T>): Assertion =
ExpectImpl.builder.createDescriptive(expect, DescriptionBasic.HAS, NEXT_ELEMENT) { it.hasNext() }
assertionBuilder.createDescriptive(expect, DescriptionBasic.HAS, NEXT_ELEMENT) { it.hasNext() }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <E, T : Iterator<E>> _hasNotNext(expect: Expect<T>): Assertion =
ExpectImpl.builder.createDescriptive(expect, DescriptionBasic.HAS_NOT, NEXT_ELEMENT) { !it.hasNext() }
assertionBuilder.createDescriptive(expect, DescriptionBasic.HAS_NOT, NEXT_ELEMENT) { !it.hasNext() }

View File

@@ -7,6 +7,7 @@ package ch.tutteli.atrium.domain.robstoll.lib.creating
import ch.tutteli.atrium.api.fluent.en_GB.toBe
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.core.Option
import ch.tutteli.atrium.core.coreFactory
import ch.tutteli.atrium.creating.Expect
@@ -64,7 +65,7 @@ fun <K, V, T : Map<out K, V>> _containsKeyWithValueAssertion(
.addToInitial(assertionCreator)
}
}
return ExpectImpl.builder.list
return assertionBuilder.list
.withDescriptionAndEmptyRepresentation(CONTAINS_IN_ANY_ORDER)
.withAssertion(assertion)
.build()
@@ -73,23 +74,23 @@ fun <K, V, T : Map<out K, V>> _containsKeyWithValueAssertion(
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <K> _containsKey(subjectProvider: SubjectProvider<Map<out K, *>>, key: K): Assertion =
ExpectImpl.builder.createDescriptive(subjectProvider, CONTAINS_KEY, key) { it.containsKey(key) }
assertionBuilder.createDescriptive(subjectProvider, CONTAINS_KEY, key) { it.containsKey(key) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <K> _containsNotKey(subjectProvider: SubjectProvider<Map<out K, *>>, key: K): Assertion =
ExpectImpl.builder.createDescriptive(subjectProvider, CONTAINS_NOT_KEY, key) { it.containsKey(key).not() }
assertionBuilder.createDescriptive(subjectProvider, CONTAINS_NOT_KEY, key) { it.containsKey(key).not() }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun _isEmpty(subjectProvider: SubjectProvider<Map<*, *>>): Assertion =
ExpectImpl.builder.createDescriptive(subjectProvider, IS, EMPTY) { it.isEmpty() }
assertionBuilder.createDescriptive(subjectProvider, IS, EMPTY) { it.isEmpty() }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun _isNotEmpty(subjectProvider: SubjectProvider<Map<*, *>>): Assertion =
ExpectImpl.builder.createDescriptive(subjectProvider, IS_NOT, EMPTY) { it.isNotEmpty() }
assertionBuilder.createDescriptive(subjectProvider, IS_NOT, EMPTY) { it.isNotEmpty() }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")

View File

@@ -5,13 +5,13 @@ package ch.tutteli.atrium.domain.robstoll.lib.creating.throwable.thrown.creators
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.ExplanatoryAssertionGroupType
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.invisibleGroup
import ch.tutteli.atrium.core.None
import ch.tutteli.atrium.core.Option
import ch.tutteli.atrium.core.polyfills.fullName
import ch.tutteli.atrium.core.polyfills.stackBacktrace
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.domain.builders.creating.collectors.collectAssertions
import ch.tutteli.atrium.domain.creating.changers.SubjectChanger
import ch.tutteli.atrium.reporting.Text
@@ -34,7 +34,7 @@ class ThrowableThrownFailureHandler<T : Throwable?, R>(
val assertions = mutableListOf(descriptiveAssertion)
maybeAssertionCreator.fold({ /* nothing to do */ }) { assertionCreator ->
assertions.add(
ExpectImpl.builder.explanatoryGroup
assertionBuilder.explanatoryGroup
.withDefaultType
.collectAssertions(None, assertionCreator)
.build()
@@ -46,7 +46,7 @@ class ThrowableThrownFailureHandler<T : Throwable?, R>(
if (it != null) assertions.add(propertiesOfThrowable(it, maxStackTrace))
}
)
return ExpectImpl.builder.invisibleGroup
return assertionBuilder.invisibleGroup
.withAssertions(assertions.toList())
.build()
}
@@ -62,7 +62,7 @@ class ThrowableThrownFailureHandler<T : Throwable?, R>(
maxStackTrace: Int,
explanation: Assertion = createExplanation(throwable)
): AssertionGroup {
return ExpectImpl.builder.explanatoryGroup
return assertionBuilder.explanatoryGroup
.withDefaultType
.withAssertions(
explanation,
@@ -72,7 +72,7 @@ class ThrowableThrownFailureHandler<T : Throwable?, R>(
}
private fun createExplanation(throwable: Throwable) =
ExpectImpl.builder.explanatory
assertionBuilder.explanatory
.withExplanation(
DescriptionThrowableAssertion.OCCURRED_EXCEPTION_PROPERTIES,
throwable::class.simpleName ?: throwable::class.fullName
@@ -95,14 +95,14 @@ class ThrowableThrownFailureHandler<T : Throwable?, R>(
assertions.addAll(createAdditionalHints(throwable, maxStackTrace))
createCauseHint(throwable, maxStackTrace)?.let { assertions.add(it) }
return ExpectImpl.builder.explanatoryGroup
return assertionBuilder.explanatoryGroup
.withDefaultType
.withAssertions(assertions.toList())
.build()
}
private fun createMessageHint(throwable: Throwable) =
ExpectImpl.builder.descriptive
assertionBuilder.descriptive
.holding
.withDescriptionAndRepresentation(
DescriptionThrowableAssertion.OCCURRED_EXCEPTION_MESSAGE,
@@ -123,17 +123,17 @@ class ThrowableThrownFailureHandler<T : Throwable?, R>(
val assertions = stackTrace.asSequence()
.take(maxStackTrace)
.map {
ExpectImpl.builder.explanatory.withExplanation(Text(it)).build()
assertionBuilder.explanatory.withExplanation(Text(it)).build()
}
.let {
if (stackTrace.size > maxStackTrace) {
it.plus(ExpectImpl.builder.explanatory.withExplanation(Text("...")).build())
it.plus(assertionBuilder.explanatory.withExplanation(Text("...")).build())
} else {
it
}
}.toList()
return ExpectImpl.builder.list
return assertionBuilder.list
.withDescriptionAndEmptyRepresentation(DescriptionThrowableAssertion.OCCURRED_EXCEPTION_STACKTRACE)
.withAssertions(assertions)
.build()
@@ -161,7 +161,7 @@ class ThrowableThrownFailureHandler<T : Throwable?, R>(
maxStackTrace: Int
): AssertionGroup {
val secondStackTrace = if (throwable.stackBacktrace.size > 1) throwable.stackBacktrace[1] else null
return ExpectImpl.builder.list
return assertionBuilder.list
.withDescriptionAndRepresentation(childDescription, child)
.withAssertion(
createHints(

View File

@@ -6,7 +6,7 @@ package ch.tutteli.atrium.assertions
import ch.tutteli.atrium.api.fluent.en_GB.containsExactly
import ch.tutteli.atrium.api.fluent.en_GB.toBe
import ch.tutteli.atrium.api.verbs.internal.expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.domain.robstoll.lib.assertions.LazyThreadUnsafeAssertionGroup
import org.spekframework.spek2.Spek
import org.spekframework.spek2.style.specification.describe
@@ -15,14 +15,14 @@ object LazyThreadUnsafeAssertionGroupSpec : Spek({
describe("creating it") {
var callingCount = 0
val assertion = ExpectImpl.builder.descriptive
val assertion = assertionBuilder.descriptive
.failing
.withDescriptionAndRepresentation("b", 3)
.build()
val testee = LazyThreadUnsafeAssertionGroup {
++callingCount
ExpectImpl.builder.feature
assertionBuilder.feature
.withDescriptionAndRepresentation("a", 2)
.withAssertion(assertion)
.build()

View File

@@ -5,7 +5,7 @@ package ch.tutteli.atrium.assertions
import ch.tutteli.atrium.api.fluent.en_GB.toBe
import ch.tutteli.atrium.api.verbs.internal.expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.domain.robstoll.lib.assertions.LazyThreadUnsafeBasicAssertion
import org.spekframework.spek2.Spek
import org.spekframework.spek2.style.specification.describe
@@ -16,7 +16,7 @@ object LazyThreadUnsafeBasicAssertionSpec : Spek({
var callingCount = 0
val testee = LazyThreadUnsafeBasicAssertion {
++callingCount
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation("a", 2).build()
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation("a", 2).build()
}
it("does not evaluate anything") {
expect(callingCount).toBe(0)

View File

@@ -8,17 +8,17 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.withExplanatoryAssertion
import ch.tutteli.atrium.assertions.builders.withFailureHint
import ch.tutteli.atrium.creating.SubjectProvider
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.translations.DescriptionBigDecimalAssertion.*
import java.math.BigDecimal
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : BigDecimal> _isNumericallyEqualTo(subjectProvider: SubjectProvider<T>, expected: T) =
ExpectImpl.builder.createDescriptive(subjectProvider, IS_NUMERICALLY_EQUAL_TO, expected) {
assertionBuilder.createDescriptive(subjectProvider, IS_NUMERICALLY_EQUAL_TO, expected) {
isNumericallyEqualTo(it, expected)
}
@@ -28,7 +28,7 @@ private fun <T : BigDecimal> isNumericallyEqualTo(subject: T, expected: T) =
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : BigDecimal> _isNotNumericallyEqualTo(subjectProvider: SubjectProvider<T>, expected: T) =
ExpectImpl.builder.createDescriptive(
assertionBuilder.createDescriptive(
subjectProvider,
IS_NOT_NUMERICALLY_EQUAL_TO,
expected
@@ -40,10 +40,10 @@ fun <T : BigDecimal> _isEqualIncludingScale(
subjectProvider: SubjectProvider<T>,
expected: T,
nameOfIsNumericallyEqualTo: String
): Assertion = ExpectImpl.builder.descriptive
): Assertion = assertionBuilder.descriptive
.withTest(subjectProvider) { it == expected }
.withFailureHint {
ExpectImpl.builder.explanatoryGroup
assertionBuilder.explanatoryGroup
.withDefaultType
.withExplanatoryAssertion(
FAILURE_IS_EQUAL_INCLUDING_SCALE_BUT_NUMERICALLY_EQUAL,
@@ -63,7 +63,7 @@ fun <T : BigDecimal> _isNotEqualIncludingScale(subjectProvider: SubjectProvider<
// unfortunately we cannot give a hint about isNotNumericallyEqualTo, because <<10 is not 10.0>> holds
// so we do not get to the point where we can detect that using this function instead of isNotNumericallyEqualTo
// might not be the intention of the user
return ExpectImpl.builder.createDescriptive(subjectProvider, IS_NOT_EQUAL_INCLUDING_SCALE, expected) {
return assertionBuilder.createDescriptive(subjectProvider, IS_NOT_EQUAL_INCLUDING_SCALE, expected) {
it != expected
}
}

View File

@@ -8,39 +8,39 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.translations.DescriptionDateTimeLikeAssertion.*
import java.time.chrono.ChronoLocalDate
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : ChronoLocalDate> _isBefore(expect: Expect<T>, expected: ChronoLocalDate): Assertion =
ExpectImpl.builder.createDescriptive(expect, IS_BEFORE, expected) { it.isBefore(expected) }
assertionBuilder.createDescriptive(expect, IS_BEFORE, expected) { it.isBefore(expected) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : ChronoLocalDate> _isBeforeOrEquals(expect: Expect<T>, expected: ChronoLocalDate): Assertion =
ExpectImpl.builder.createDescriptive(expect, IS_BEFORE_OR_EQUAL, expected) {
assertionBuilder.createDescriptive(expect, IS_BEFORE_OR_EQUAL, expected) {
it.isBefore(expected) || it.isEqual(expected)
}
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : ChronoLocalDate> _isAfter(expect: Expect<T>, expected: ChronoLocalDate): Assertion =
ExpectImpl.builder.createDescriptive(expect, IS_AFTER, expected) { it.isAfter(expected) }
assertionBuilder.createDescriptive(expect, IS_AFTER, expected) { it.isAfter(expected) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : ChronoLocalDate> _isAfterOrEquals(expect: Expect<T>, expected: ChronoLocalDate): Assertion =
ExpectImpl.builder.createDescriptive(expect, IS_AFTER_OR_EQUAL, expected) {
assertionBuilder.createDescriptive(expect, IS_AFTER_OR_EQUAL, expected) {
it.isAfter(expected) || it.isEqual(expected)
}
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : ChronoLocalDate> _isEqual(expect: Expect<T>, expected: ChronoLocalDate): Assertion =
ExpectImpl.builder.createDescriptive(expect, SAME_DAY, expected) {
assertionBuilder.createDescriptive(expect, SAME_DAY, expected) {
it.isEqual(expected)
}

View File

@@ -8,8 +8,8 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.translations.DescriptionDateTimeLikeAssertion.*
import java.time.chrono.ChronoLocalDate
import java.time.chrono.ChronoLocalDateTime
@@ -17,7 +17,7 @@ import java.time.chrono.ChronoLocalDateTime
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : ChronoLocalDateTime<*>> _isBefore(expect: Expect<T>, expected: ChronoLocalDateTime<*>): Assertion =
ExpectImpl.builder.createDescriptive(expect, IS_BEFORE, expected) { it.isBefore(expected) }
assertionBuilder.createDescriptive(expect, IS_BEFORE, expected) { it.isBefore(expected) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
@@ -25,7 +25,7 @@ fun <T : ChronoLocalDateTime<out ChronoLocalDate>> _isBeforeOrEquals(
expect: Expect<T>,
expected: ChronoLocalDateTime<*>
): Assertion =
ExpectImpl.builder.createDescriptive(expect, IS_BEFORE_OR_EQUAL, expected) {
assertionBuilder.createDescriptive(expect, IS_BEFORE_OR_EQUAL, expected) {
it.isBefore(expected) || it.isEqual(expected)
}
@@ -34,14 +34,14 @@ fun <T : ChronoLocalDateTime<out ChronoLocalDate>> _isBeforeOrEquals(
fun <T : ChronoLocalDateTime<out ChronoLocalDate>> _isAfter(
expect: Expect<T>,
expected: ChronoLocalDateTime<*>
): Assertion = ExpectImpl.builder.createDescriptive(expect, IS_AFTER, expected) { it.isAfter(expected) }
): Assertion = assertionBuilder.createDescriptive(expect, IS_AFTER, expected) { it.isAfter(expected) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : ChronoLocalDateTime<out ChronoLocalDate>> _isAfterOrEquals(
expect: Expect<T>,
expected: ChronoLocalDateTime<*>
): Assertion = ExpectImpl.builder.createDescriptive(expect, IS_AFTER_OR_EQUAL, expected) {
): Assertion = assertionBuilder.createDescriptive(expect, IS_AFTER_OR_EQUAL, expected) {
it.isAfter(expected) || it.isEqual(expected)
}
@@ -50,6 +50,6 @@ fun <T : ChronoLocalDateTime<out ChronoLocalDate>> _isAfterOrEquals(
fun <T : ChronoLocalDateTime<out ChronoLocalDate>> _isEqual(
expect: Expect<T>,
expected: ChronoLocalDateTime<*>
): Assertion = ExpectImpl.builder.createDescriptive(expect, IS_EQUAL_TO, expected) {
): Assertion = assertionBuilder.createDescriptive(expect, IS_EQUAL_TO, expected) {
it.isEqual(expected)
}

View File

@@ -8,8 +8,8 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.translations.DescriptionDateTimeLikeAssertion.*
import java.time.chrono.ChronoLocalDate
import java.time.chrono.ChronoZonedDateTime
@@ -19,7 +19,7 @@ import java.time.chrono.ChronoZonedDateTime
fun <T : ChronoZonedDateTime<out ChronoLocalDate>> _isBefore(
expect: Expect<T>,
expected: ChronoZonedDateTime<*>
): Assertion = ExpectImpl.builder.createDescriptive(expect, IS_BEFORE, expected) { it.isBefore(expected) }
): Assertion = assertionBuilder.createDescriptive(expect, IS_BEFORE, expected) { it.isBefore(expected) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
@@ -27,7 +27,7 @@ fun <T : ChronoZonedDateTime<out ChronoLocalDate>> _isBeforeOrEquals(
expect: Expect<T>,
expected: ChronoZonedDateTime<*>
): Assertion =
ExpectImpl.builder.createDescriptive(expect, IS_BEFORE_OR_EQUAL, expected) {
assertionBuilder.createDescriptive(expect, IS_BEFORE_OR_EQUAL, expected) {
it.isBefore(expected) || it.isEqual(expected)
}
@@ -36,14 +36,14 @@ fun <T : ChronoZonedDateTime<out ChronoLocalDate>> _isBeforeOrEquals(
fun <T : ChronoZonedDateTime<out ChronoLocalDate>> _isAfter(
expect: Expect<T>,
expected: ChronoZonedDateTime<*>
): Assertion = ExpectImpl.builder.createDescriptive(expect, IS_AFTER, expected) { it.isAfter(expected) }
): Assertion = assertionBuilder.createDescriptive(expect, IS_AFTER, expected) { it.isAfter(expected) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : ChronoZonedDateTime<out ChronoLocalDate>> _isAfterOrEquals(
expect: Expect<T>,
expected: ChronoZonedDateTime<*>
): Assertion = ExpectImpl.builder.createDescriptive(expect, IS_AFTER_OR_EQUAL, expected) {
): Assertion = assertionBuilder.createDescriptive(expect, IS_AFTER_OR_EQUAL, expected) {
it.isAfter(expected) || it.isEqual(expected)
}
@@ -52,6 +52,6 @@ fun <T : ChronoZonedDateTime<out ChronoLocalDate>> _isAfterOrEquals(
fun <T : ChronoZonedDateTime<out ChronoLocalDate>> _isEqual(
expect: Expect<T>,
expected: ChronoZonedDateTime<*>
): Assertion = ExpectImpl.builder.createDescriptive(expect, IS_EQUAL_TO, expected) {
): Assertion = assertionBuilder.createDescriptive(expect, IS_EQUAL_TO, expected) {
it.isEqual(expected)
}

View File

@@ -8,8 +8,8 @@ package ch.tutteli.atrium.domain.robstoll.lib.creating.filesystem
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.withExplanatoryAssertion
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.translations.DescriptionPathAssertion.FAILURE_DUE_TO_LINK_LOOP
import ch.tutteli.atrium.translations.DescriptionPathAssertion.HINT_FOLLOWED_SYMBOLIC_LINK
import ch.tutteli.niok.followSymbolicLink
@@ -28,7 +28,7 @@ inline fun explainForResolvedLink(path: Path, resolvedPathAssertionProvider: (re
is AssertionGroup -> hintList.addAll(resolvedPathAssertion.assertions)
else -> hintList.add(resolvedPathAssertion)
}
ExpectImpl.builder.explanatoryGroup.withDefaultType
assertionBuilder.explanatoryGroup.withDefaultType
.withAssertions(hintList)
.build()
} else {
@@ -87,7 +87,7 @@ private fun addOneStepResolvedSymlinkHint(absolutePath: Path, hintList: Deque<As
.normalize()
hintList.add(
ExpectImpl.builder.explanatory
assertionBuilder.explanatory
.withExplanation(HINT_FOLLOWED_SYMBOLIC_LINK, absolutePath, nextPath)
.build()
)
@@ -100,7 +100,7 @@ private fun addOneStepResolvedSymlinkHint(absolutePath: Path, hintList: Deque<As
private fun hintForLinkLoop(loop: List<Path>, startIndex: Int): Assertion {
val loopRepresentation = loop.subList(startIndex, loop.size).joinToString(" -> ")
return ExpectImpl.builder.explanatoryGroup.withWarningType
return assertionBuilder.explanatoryGroup.withWarningType
.withExplanatoryAssertion(FAILURE_DUE_TO_LINK_LOOP, loopRepresentation)
.build()
}

View File

@@ -7,6 +7,7 @@
package ch.tutteli.atrium.domain.robstoll.lib.creating
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.core.Option
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
@@ -18,7 +19,7 @@ import java.util.*
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : Optional<*>> _isEmpty(expect: Expect<T>): Assertion =
ExpectImpl.builder.createDescriptive(expect, IS, DescriptionOptionalAssertion.EMPTY) { !it.isPresent }
assertionBuilder.createDescriptive(expect, IS, DescriptionOptionalAssertion.EMPTY) { !it.isPresent }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")

View File

@@ -9,6 +9,7 @@ package ch.tutteli.atrium.domain.robstoll.lib.creating
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.withFailureHintBasedOnDefinedSubject
import ch.tutteli.atrium.core.None
import ch.tutteli.atrium.core.Some
@@ -39,22 +40,22 @@ private const val IO_EXCEPTION_STACK_TRACE_LENGTH = 15
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : Path> _startsWith(expect: Expect<T>, expected: Path): Assertion =
ExpectImpl.builder.createDescriptive(expect, STARTS_WITH, expected) { it.startsWith(expected) }
assertionBuilder.createDescriptive(expect, STARTS_WITH, expected) { it.startsWith(expected) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : Path> _startsNotWith(expect: Expect<T>, expected: Path): Assertion =
ExpectImpl.builder.createDescriptive(expect, STARTS_NOT_WITH, expected) { !it.startsWith(expected) }
assertionBuilder.createDescriptive(expect, STARTS_NOT_WITH, expected) { !it.startsWith(expected) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : Path> _endsWith(expect: Expect<T>, expected: Path): Assertion =
ExpectImpl.builder.createDescriptive(expect, ENDS_WITH, expected) { it.endsWith(expected) }
assertionBuilder.createDescriptive(expect, ENDS_WITH, expected) { it.endsWith(expected) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : Path> _endsNotWith(expect: Expect<T>, expected: Path) =
ExpectImpl.builder.createDescriptive(expect, ENDS_NOT_WITH, expected) { !it.endsWith(expected) }
assertionBuilder.createDescriptive(expect, ENDS_NOT_WITH, expected) { !it.endsWith(expected) }
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
@@ -64,7 +65,7 @@ fun <T : Path> _hasSameTextualContentAs(
sourceCharset: Charset,
targetCharset: Charset
) =
ExpectImpl.builder.createDescriptive(
assertionBuilder.createDescriptive(
expect,
TranslatableWithArgs(HAS_SAME_TEXTUAL_CONTENT, sourceCharset, targetCharset),
targetPath
@@ -75,7 +76,7 @@ fun <T : Path> _hasSameTextualContentAs(
@Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : Path> _hasSameBinaryContentAs(expect: Expect<T>, targetPath: Path) =
ExpectImpl.builder.createDescriptive(expect, HAS_SAME_BINARY_CONTENT, targetPath) {
assertionBuilder.createDescriptive(expect, HAS_SAME_BINARY_CONTENT, targetPath) {
it.readAllBytes().contentEquals(targetPath.readAllBytes())
}
@@ -83,14 +84,14 @@ fun <T : Path> _hasSameBinaryContentAs(expect: Expect<T>, targetPath: Path) =
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : Path> _exists(expect: Expect<T>): Assertion =
changeSubjectToFileAttributes(expect) { fileAttributesAssertionContainer ->
ExpectImpl.builder.descriptive
assertionBuilder.descriptive
.withTest(fileAttributesAssertionContainer) { it is Success }
.withFailureHintBasedOnDefinedSubject(fileAttributesAssertionContainer) { result ->
explainForResolvedLink(result.path) { realPath ->
val exception = (result as Failure).exception
when (exception) {
// TODO remove group once https://github.com/robstoll/atrium-roadmap/issues/1 is implemented
is NoSuchFileException -> ExpectImpl.builder.explanatoryGroup.withDefaultType.withAssertion(
is NoSuchFileException -> assertionBuilder.explanatoryGroup.withDefaultType.withAssertion(
hintForClosestExistingParent(realPath)
).build()
else -> hintForIoException(realPath, exception)
@@ -105,7 +106,7 @@ fun <T : Path> _exists(expect: Expect<T>): Assertion =
@Deprecated("use the function from atrium-logic instead, will be removed with 1.0.0")
fun <T : Path> _existsNot(expect: Expect<T>): Assertion =
changeSubjectToFileAttributes(expect) { fileAttributesAssertionContainer ->
ExpectImpl.builder.descriptive
assertionBuilder.descriptive
.withTest(fileAttributesAssertionContainer) { it is Failure && it.exception is NoSuchFileException }
.withFailureHintBasedOnDefinedSubject(fileAttributesAssertionContainer) { result ->
explainForResolvedLink(result.path) { realPath ->
@@ -146,14 +147,14 @@ private fun <T : Path> filePermissionAssertion(
) = ExpectImpl.changeSubject(expect).unreported {
it.runCatchingIo { fileSystem.provider().checkAccess(it, accessMode) }
}.let { checkAccessResultContainer ->
ExpectImpl.builder.descriptive
assertionBuilder.descriptive
.withTest(checkAccessResultContainer) { it is Success }
.withFailureHintBasedOnDefinedSubject(checkAccessResultContainer) { result ->
explainForResolvedLink(result.path) { realPath ->
val exception = (result as Failure).exception
when (exception) {
is AccessDeniedException -> findHintForProblemWithParent(realPath)
?: ExpectImpl.builder.explanatoryGroup.withDefaultType
?: assertionBuilder.explanatoryGroup.withDefaultType
.withAssertions(
listOf(hintForExistsButMissingPermission(realPath, permissionName))
+ hintForOwnersAndPermissions(realPath)
@@ -172,7 +173,7 @@ private inline fun <T : Path> fileTypeAssertion(
typeName: Translatable,
crossinline typeTest: (BasicFileAttributes) -> Boolean
) = changeSubjectToFileAttributes(expect) { fileAttributesAssertionContainer ->
ExpectImpl.builder.descriptive
assertionBuilder.descriptive
.withTest(fileAttributesAssertionContainer) { it is Success && typeTest(it.value) }
.withFailureHintBasedOnDefinedSubject(fileAttributesAssertionContainer) { result ->
explainForResolvedLink(result.path) { realPath ->
@@ -228,28 +229,28 @@ private fun findHintForProblemWithParent(path: Path): Assertion? {
}
private fun hintForParentFailure(parent: Path, explanation: Assertion) =
ExpectImpl.builder.explanatoryGroup.withDefaultType
assertionBuilder.explanatoryGroup.withDefaultType
.withAssertions(
ExpectImpl.builder.descriptive.failing
assertionBuilder.descriptive.failing
.withDescriptionAndRepresentation(FAILURE_DUE_TO_PARENT, parent)
.build(),
when (explanation) {
is AssertionGroup -> explanation
// TODO remove group once https://github.com/robstoll/atrium-roadmap/issues/1 is implemented
else -> ExpectImpl.builder.explanatoryGroup.withDefaultType
else -> assertionBuilder.explanatoryGroup.withDefaultType
.withAssertion(explanation)
.build()
}
).build()
private fun hintForAccessDenied(path: Path): Assertion {
val failureDueToAccessDeniedHint = ExpectImpl.builder.explanatory
val failureDueToAccessDeniedHint = assertionBuilder.explanatory
.withExplanation(FAILURE_DUE_TO_ACCESS_DENIED)
.build()
return try {
val hints = hintForOwnersAndPermissions(path)
hints.add(0, failureDueToAccessDeniedHint)
ExpectImpl.builder.explanatoryGroup.withDefaultType
assertionBuilder.explanatoryGroup.withDefaultType
.withAssertions(hints)
.build()
} catch (e: IOException) {
@@ -275,32 +276,32 @@ private fun hintForOwnersAndPermissions(path: Path): MutableList<Assertion> {
}
private fun hintForOwner(owner: String) =
ExpectImpl.builder.explanatory
assertionBuilder.explanatory
.withExplanation(HINT_OWNER, owner)
.build()
private fun hintForOwnerAndGroup(owner: String, group: String) =
ExpectImpl.builder.explanatory
assertionBuilder.explanatory
.withExplanation(HINT_OWNER_AND_GROUP, owner, group)
.build()
private fun hintsForActualAclPermissions(acl: List<AclEntry>) =
arrayOf(
ExpectImpl.builder.explanatory
assertionBuilder.explanatory
.withExplanation(HINT_ACTUAL_ACL_PERMISSIONS)
.build(),
ExpectImpl.builder.explanatoryGroup.withDefaultType
assertionBuilder.explanatoryGroup.withDefaultType
.withAssertions(acl.map(::hintForAclEntry))
.build()
)
private fun hintForAclEntry(entry: AclEntry) =
ExpectImpl.builder.explanatory
assertionBuilder.explanatory
.withExplanation("${entry.type()} ${entry.principal().name}: ${entry.permissions().joinToString()}")
.build()
private fun hintForActualPosixPermissions(filePermissions: Set<PosixFilePermission>) =
ExpectImpl.builder.explanatory
assertionBuilder.explanatory
.withExplanation(HINT_ACTUAL_POSIX_PERMISSIONS, formatPosixPermissions(filePermissions))
.build()
@@ -332,12 +333,12 @@ private fun toPermissionString(
}
private fun <T : Path> hintForExistsButMissingPermission(subject: T, permissionName: Translatable) =
ExpectImpl.builder.explanatory
assertionBuilder.explanatory
.withExplanation(FAILURE_DUE_TO_PERMISSION_FILE_TYPE_HINT, subject.fileType, permissionName)
.build()
private fun describeWas(actual: Translatable) =
ExpectImpl.builder.descriptive.failing
assertionBuilder.descriptive.failing
.withDescriptionAndRepresentation(WAS, actual)
.build()
@@ -353,7 +354,7 @@ private fun hintForFileSpecificIoException(path: Path, exception: IOException) =
}
private fun hintForFileNotFound(path: Path) =
ExpectImpl.builder.explanatoryGroup.withDefaultType
assertionBuilder.explanatoryGroup.withDefaultType
.withAssertions(
hintForNoSuchFile(),
hintForClosestExistingParent(path)
@@ -361,7 +362,7 @@ private fun hintForFileNotFound(path: Path) =
.build()
private fun hintForNoSuchFile() =
ExpectImpl.builder.explanatory
assertionBuilder.explanatory
.withExplanation(FAILURE_DUE_TO_NO_SUCH_FILE)
.build()
@@ -391,12 +392,12 @@ private fun hintForClosestExistingParent(path: Path): Assertion {
}
private fun hintForExistingParentDirectory(parent: Path?) =
ExpectImpl.builder.explanatory
assertionBuilder.explanatory
.withExplanation(HINT_CLOSEST_EXISTING_PARENT_DIRECTORY, parent ?: NONE)
.build()
private fun hintForNotDirectory(actualType: Translatable) =
ExpectImpl.builder.explanatory
assertionBuilder.explanatory
.withExplanation(FAILURE_DUE_TO_WRONG_FILE_TYPE, actualType, A_DIRECTORY)
.build()
@@ -404,7 +405,7 @@ private fun hintForOtherIoException(exception: IOException) =
ThrowableThrownFailureHandler.propertiesOfThrowable(
exception,
maxStackTrace = IO_EXCEPTION_STACK_TRACE_LENGTH,
explanation = ExpectImpl.builder.explanatory
explanation = assertionBuilder.explanatory
.withExplanation(
FAILURE_DUE_TO_ACCESS_EXCEPTION,
exception::class.simpleName ?: exception::class.fullName

View File

@@ -9,8 +9,8 @@ import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.ExplanatoryAssertion
import ch.tutteli.atrium.assertions.WarningAssertionGroupType
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.domain.robstoll.lib.creating.filesystem.explainForResolvedLink
import ch.tutteli.atrium.reporting.translating.TranslatableWithArgs
import ch.tutteli.atrium.reporting.translating.Untranslatable
@@ -39,7 +39,7 @@ object SymbolicLinkResolvingSpec : Spek({
val ifSymlinksNotSupported =
if (fileSystemSupportsCreatingSymlinks()) Skip.No else Skip.Yes("creating symbolic links is not supported on this file system")
val testAssertion = ExpectImpl.builder.createDescriptive(Untranslatable("testAssertion"), null) { true }
val testAssertion = assertionBuilder.createDescriptive(Untranslatable("testAssertion"), null) { true }
val resolvedPathConsumer by memoized(TEST) {
mockk<(Path) -> Assertion> {
every { this@mockk.invoke(any()) } returns testAssertion

View File

@@ -3,11 +3,11 @@ package ch.tutteli.atrium.specs
import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.ExplanatoryAssertionGroupType
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.core.None
import ch.tutteli.atrium.core.coreFactory
import ch.tutteli.atrium.creating.CollectingExpect
import ch.tutteli.atrium.creating.Expect
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.domain.builders.reporting.ExpectBuilder
import ch.tutteli.atrium.domain.builders.reporting.ExpectOptions
import org.spekframework.spek2.Spek
@@ -39,7 +39,7 @@ abstract class SubjectLessSpec<T>(
)
.build()
val explanatoryGroup = ExpectImpl.builder.explanatoryGroup
val explanatoryGroup = assertionBuilder.explanatoryGroup
.withDefaultType
.withAssertions(assertions)
.build()

View File

@@ -4,10 +4,10 @@ import ch.tutteli.atrium.api.fluent.en_GB.toBe
import ch.tutteli.atrium.api.verbs.internal.expect
import ch.tutteli.atrium.assertions.*
import ch.tutteli.atrium.assertions.builders.AssertionBuilder
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.fixedClaimGroup
import ch.tutteli.atrium.assertions.builders.root
import ch.tutteli.atrium.core.coreFactory
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.AssertionFormatterController
import ch.tutteli.atrium.reporting.AssertionFormatterParameterObject
import ch.tutteli.atrium.reporting.Text
@@ -67,12 +67,12 @@ abstract class AssertionFormatterControllerSpec(
)
)
val holdingAssertion = ExpectImpl.builder.descriptive
val holdingAssertion = assertionBuilder.descriptive
.holding
.withDescriptionAndRepresentation(IS_GREATER_OR_EQUALS, 1)
.build()
val failingAssertion = ExpectImpl.builder.descriptive
val failingAssertion = assertionBuilder.descriptive
.failing
.withDescriptionAndRepresentation(IS_LESS_OR_EQUALS, 2)
.build()
@@ -97,19 +97,19 @@ abstract class AssertionFormatterControllerSpec(
listOf<Pair<String, (ExplanatoryAssertionGroupType, List<Assertion>) -> AssertionGroup>>(
"${AssertionBuilder::class.simpleName}.${AssertionBuilder::explanatoryGroup.name}.customType(t)" to { t, a ->
ExpectImpl.builder.explanatoryGroup
assertionBuilder.explanatoryGroup
.withType(t)
.withAssertions(a)
.build()
},
"${AssertionBuilder::class.simpleName}.customType(t, ..)" to { t, a ->
ExpectImpl.builder.customType(t)
assertionBuilder.customType(t)
.withDescriptionAndRepresentation(AssertionVerb.VERB, 1)
.withAssertions(a)
.build()
},
"${AssertionBuilder::class.simpleName}.${AssertionBuilder::fixedClaimGroup.name}" to { t, a ->
ExpectImpl.builder.fixedClaimGroup
assertionBuilder.fixedClaimGroup
.withType(t)
.failing
.withDescriptionAndRepresentation(AssertionVerb.VERB, 1)
@@ -177,10 +177,10 @@ abstract class AssertionFormatterControllerSpec(
context("first an ${ExplanatoryAssertionGroupType::class.simpleName} and then a regular assertion") {
it("appends only the explanatory assertion group") {
val rootGroup = ExpectImpl.builder.root
val rootGroup = assertionBuilder.root
.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 5)
.withAssertions(
ExpectImpl.builder.explanatoryGroup.withDefaultType.withAssertion(holdingAssertion).build(),
assertionBuilder.explanatoryGroup.withDefaultType.withAssertion(holdingAssertion).build(),
holdingAssertion
)
.build()
@@ -194,11 +194,11 @@ abstract class AssertionFormatterControllerSpec(
context("first a regular assertion, then an ${ExplanatoryAssertionGroupType::class.simpleName} and finally a regular assertion again") {
it("appends only the explanatory assertion group") {
val rootGroup = ExpectImpl.builder.root
val rootGroup = assertionBuilder.root
.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 5)
.withAssertions(
holdingAssertion,
ExpectImpl.builder.explanatoryGroup.withWarningType.withAssertion(holdingAssertion).build(),
assertionBuilder.explanatoryGroup.withWarningType.withAssertion(holdingAssertion).build(),
holdingAssertion
)
.build()
@@ -211,17 +211,17 @@ abstract class AssertionFormatterControllerSpec(
}
context("an assertion group with assertions within an ${ExplanatoryAssertionGroupType::class.simpleName}") {
val assertionGroup = ExpectImpl.builder.list
val assertionGroup = assertionBuilder.list
.withDescriptionAndRepresentation(AssertionVerb.EXPECT_THROWN, 2)
.withAssertions(holdingAssertion, failingAssertion)
.build()
val explanatoryAssertionGroup = ExpectImpl.builder.explanatoryGroup
val explanatoryAssertionGroup = assertionBuilder.explanatoryGroup
.withDefaultType
.withAssertions(listOf(assertionGroup, holdingAssertion))
.build()
it("appends the explanatory assertion group including all its assertions") {
val rootGroup = ExpectImpl.builder.root
val rootGroup = assertionBuilder.root
.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 5)
.withAssertion(explanatoryAssertionGroup)
.build()
@@ -237,11 +237,11 @@ abstract class AssertionFormatterControllerSpec(
context("within another ${ExplanatoryAssertionGroupType::class.simpleName} which is preceded and followed by a regular assertion ") {
it("appends the explanatory assertion group including all its assertions") {
val explanatoryAssertionGroup2 = ExpectImpl.builder.explanatoryGroup
val explanatoryAssertionGroup2 = assertionBuilder.explanatoryGroup
.withWarningType
.withAssertion(explanatoryAssertionGroup)
.build()
val rootGroup2 = ExpectImpl.builder.root
val rootGroup2 = assertionBuilder.root
.withDescriptionAndRepresentation(IS_LESS_THAN, 10)
.withAssertions(failingAssertion, explanatoryAssertionGroup2, holdingAssertion)
.build()
@@ -281,7 +281,7 @@ abstract class AssertionFormatterControllerSpec(
override val representation = "representation"
override val assertions = listOf(holdingAssertion, failingAssertion)
}
val summaryGroup = ExpectImpl.builder.summary
val summaryGroup = assertionBuilder.summary
.withDescription(AssertionVerb.ASSERT)
.withAssertion(invisibleGroup)
.build()

View File

@@ -5,8 +5,8 @@ import ch.tutteli.atrium.api.fluent.en_GB.containsNot
import ch.tutteli.atrium.api.verbs.internal.expect
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.AssertionGroupType
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.core.coreFactory
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.AssertionFormatter
import ch.tutteli.atrium.reporting.AssertionFormatterController
import ch.tutteli.atrium.reporting.AssertionFormatterParameterObject
@@ -45,7 +45,7 @@ abstract class EmptyNameAndSubjectAssertionGroupFormatterSpec<T : AssertionGroup
).forEach { (typeRepresentation, type) ->
context("formatting an ${AssertionGroup::class.simpleName} of type $typeRepresentation") {
it("does not include ${AssertionGroup::description.name} nor ${AssertionGroup::representation.name}") {
val assertionGroup = ExpectImpl.builder.customType(type)
val assertionGroup = assertionBuilder.customType(type)
.withDescriptionAndRepresentation(TestDescription.TEST_NAME, testSubject)
.withAssertions(listOf())
.build()

View File

@@ -6,9 +6,9 @@ import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.DescriptiveAssertion
import ch.tutteli.atrium.assertions.RootAssertionGroupType
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.assertions.builders.root
import ch.tutteli.atrium.core.coreFactory
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.AssertionFormatterFacade
import ch.tutteli.atrium.reporting.AtriumErrorAdjuster
import ch.tutteli.atrium.reporting.Reporter
@@ -44,7 +44,7 @@ abstract class OnlyFailureReporterSpec(
val assertion = object : Assertion {
override fun holds() = true
}
val basicAssertion = ExpectImpl.builder.descriptive
val basicAssertion = assertionBuilder.descriptive
.holding
.withDescriptionAndRepresentation(TO_BE, 0)
.build()
@@ -61,7 +61,7 @@ abstract class OnlyFailureReporterSpec(
override val representation = 0
override val assertions = listOf(assertion, basicAssertion, basicAssertionAnonymous)
}
val assertionGroup = ExpectImpl.builder.root
val assertionGroup = assertionBuilder.root
.withDescriptionAndRepresentation(AssertionVerb.VERB, 1)
.withAssertions(listOf(assertion, basicAssertion, basicAssertionAnonymous, assertionGroupAnonymous))
.build()

View File

@@ -9,9 +9,9 @@ import ch.tutteli.atrium.assertions.Assertion
import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.AssertionGroupType
import ch.tutteli.atrium.assertions.BulletPointIdentifier
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.core.coreFactory
import ch.tutteli.atrium.core.polyfills.fullName
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.AssertionFormatter
import ch.tutteli.atrium.reporting.AssertionFormatterController
import ch.tutteli.atrium.reporting.AssertionFormatterParameterObject
@@ -43,11 +43,11 @@ abstract class SingleAssertionGroupTypeFormatterSpec<out T : AssertionGroupType>
val unsupportedAssertion = object : Assertion {
override fun holds() = false
}
val unsupportedAssertionGroup = ExpectImpl.builder.customType(object : AssertionGroupType {})
val unsupportedAssertionGroup = assertionBuilder.customType(object : AssertionGroupType {})
.withDescriptionAndRepresentation(Untranslatable.EMPTY, 1)
.withAssertions(listOf())
.build()
val supportedAssertionGroupWithAnonymousType = ExpectImpl.builder.customType(supportedAnonymousAssertionGroupType)
val supportedAssertionGroupWithAnonymousType = assertionBuilder.customType(supportedAnonymousAssertionGroupType)
.withDescriptionAndRepresentation(Untranslatable.EMPTY, 1)
.withAssertions(listOf())
.build()
@@ -57,7 +57,7 @@ abstract class SingleAssertionGroupTypeFormatterSpec<out T : AssertionGroupType>
override val representation = 1
override val assertions: List<Assertion> = emptyList()
}
val supportedAssertionGroup = ExpectImpl.builder.customType(supportedAssertionGroupType)
val supportedAssertionGroup = assertionBuilder.customType(supportedAssertionGroupType)
.withDescriptionAndRepresentation(Untranslatable.EMPTY, 1)
.withAssertions(listOf())
.build()

View File

@@ -2,7 +2,7 @@ package ch.tutteli.atrium.specs.reporting
import ch.tutteli.atrium.assertions.BulletPointIdentifier
import ch.tutteli.atrium.assertions.ExplanatoryAssertionGroupType
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.reporting.AssertionFormatter
import ch.tutteli.atrium.reporting.AssertionFormatterController
import kotlin.reflect.KClass
@@ -14,5 +14,5 @@ abstract class TextExplanatoryAssertionGroupFormatterSpec(
testeeFactory,
ExplanatoryAssertionGroupType::class,
object : ExplanatoryAssertionGroupType {},
{ ExpectImpl.builder.explanatoryGroup.withDefaultType.withAssertions(it).build() },
{ assertionBuilder.explanatoryGroup.withDefaultType.withAssertions(it).build() },
describePrefix)

View File

@@ -4,17 +4,17 @@ import ch.tutteli.atrium.api.fluent.en_GB.contains
import ch.tutteli.atrium.api.fluent.en_GB.toBe
import ch.tutteli.atrium.api.verbs.internal.expect
import ch.tutteli.atrium.assertions.*
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.core.coreFactory
import ch.tutteli.atrium.core.polyfills.fullName
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.AssertionFormatter
import ch.tutteli.atrium.reporting.AssertionFormatterController
import ch.tutteli.atrium.reporting.ObjectFormatter
import ch.tutteli.atrium.reporting.translating.Translator
import ch.tutteli.atrium.reporting.translating.Untranslatable
import ch.tutteli.atrium.reporting.translating.UsingDefaultTranslator
import ch.tutteli.atrium.specs.lineSeperator
import ch.tutteli.atrium.specs.describeFunTemplate
import ch.tutteli.atrium.specs.lineSeperator
import ch.tutteli.atrium.specs.toBeDescr
import ch.tutteli.atrium.translations.DescriptionAnyAssertion.IS_SAME
import ch.tutteli.atrium.translations.DescriptionAnyAssertion.TO_BE
@@ -69,14 +69,14 @@ abstract class TextFallbackAssertionFormatterSpec(
context("assertion of type ${DescriptiveAssertion::class.simpleName}") {
it("writes ${DescriptiveAssertion::description.name} and ${DescriptiveAssertion::representation.name} on the same line separated by colon and space") {
val assertion =
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(IS_SAME, "bli").build()
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(IS_SAME, "bli").build()
testee.formatNonGroup(assertion, parameterObject)
expect(sb.toString()).toBe("$lineSeperator${IS_SAME.getDefault()}: bli")
}
}
context("assertion of type ${RepresentationOnlyAssertion::class.simpleName}") {
it("writes ${RepresentationOnlyAssertion::representation.name} without any additional colon or such") {
val assertion = ExpectImpl.builder.representationOnly.failing.withRepresentation("hello").build()
val assertion = assertionBuilder.representationOnly.failing.withRepresentation("hello").build()
testee.formatNonGroup(assertion, parameterObject)
expect(sb.toString()).toBe("${lineSeperator}hello")
}
@@ -98,10 +98,10 @@ abstract class TextFallbackAssertionFormatterSpec(
override val description = Untranslatable("group")
override val representation = "subject of group"
override val assertions = listOf(
ExpectImpl.builder.descriptive.failing
assertionBuilder.descriptive.failing
.withDescriptionAndRepresentation(IS_SAME, "b")
.build(),
ExpectImpl.builder.descriptive.failing
assertionBuilder.descriptive.failing
.withDescriptionAndRepresentation(TO_BE, "d")
.build()
)
@@ -133,10 +133,10 @@ abstract class TextFallbackAssertionFormatterSpec(
override val description = Untranslatable("inner group")
override val representation = "subject of inner group"
override val assertions = listOf(
ExpectImpl.builder.descriptive.failing
assertionBuilder.descriptive.failing
.withDescriptionAndRepresentation(IS_SAME, "b")
.build(),
ExpectImpl.builder.descriptive.failing
assertionBuilder.descriptive.failing
.withDescriptionAndRepresentation(TO_BE, "d")
.build()
)

View File

@@ -3,15 +3,14 @@ package ch.tutteli.atrium.specs.reporting
import ch.tutteli.atrium.api.fluent.en_GB.toBe
import ch.tutteli.atrium.api.verbs.internal.expect
import ch.tutteli.atrium.assertions.*
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.core.coreFactory
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.AssertionFormatter
import ch.tutteli.atrium.reporting.AssertionFormatterController
import ch.tutteli.atrium.reporting.translating.Untranslatable
import ch.tutteli.atrium.specs.lineSeperator
import ch.tutteli.atrium.specs.AssertionVerb
import ch.tutteli.atrium.specs.describeFunTemplate
import org.spekframework.spek2.Spek
import ch.tutteli.atrium.specs.lineSeperator
import org.spekframework.spek2.style.specification.Suite
import kotlin.reflect.KClass
@@ -38,7 +37,7 @@ abstract class TextIndentBasedAssertionGroupFormatterSpec<T : AssertionGroupType
val testee = testeeFactory(bulletPoints, coreFactory.newAssertionFormatterController())
it("returns true for an ${AssertionGroup::class.simpleName} with type object: ${assertionGroupTypeClass.simpleName}") {
val result = testee.canFormat(
ExpectImpl.builder.customType(anonymousAssertionGroupType)
assertionBuilder.customType(anonymousAssertionGroupType)
.withDescriptionAndRepresentation(Untranslatable.EMPTY, 1)
.withAssertions(listOf())
.build()
@@ -50,11 +49,11 @@ abstract class TextIndentBasedAssertionGroupFormatterSpec<T : AssertionGroupType
describeFun(AssertionFormatter::formatGroup.name) {
context("${AssertionGroup::class.simpleName} of type ${assertionGroupTypeClass.simpleName}") {
val assertions = listOf(
ExpectImpl.builder.descriptive.holding.withDescriptionAndRepresentation(
assertionBuilder.descriptive.holding.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
1
).build(),
ExpectImpl.builder.descriptive.holding.withDescriptionAndRepresentation(
assertionBuilder.descriptive.holding.withDescriptionAndRepresentation(
AssertionVerb.EXPECT_THROWN,
2
).build()
@@ -80,12 +79,12 @@ abstract class TextIndentBasedAssertionGroupFormatterSpec<T : AssertionGroupType
it("puts the assertions one under the other and indents the second one including a prefix") {
val featureAssertions = listOf(
indentAssertionGroup,
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
20
).build()
)
val featureAssertionGroup = ExpectImpl.builder.feature
val featureAssertionGroup = assertionBuilder.feature
.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 10)
.withAssertions(featureAssertions)
.build()
@@ -107,12 +106,12 @@ abstract class TextIndentBasedAssertionGroupFormatterSpec<T : AssertionGroupType
context("in an ${AssertionGroup::class.simpleName} of type ${ListAssertionGroupType::class.simpleName}") {
val listAssertions = listOf(
indentAssertionGroup,
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
20
).build()
)
val listAssertionGroup = ExpectImpl.builder.list
val listAssertionGroup = assertionBuilder.list
.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 10)
.withAssertions(listAssertions)
.build()
@@ -136,12 +135,12 @@ abstract class TextIndentBasedAssertionGroupFormatterSpec<T : AssertionGroupType
it("puts the assertions one under the other and indents as the other assertions but adds an extra indent to the second assertion including a prefix") {
val listAssertions2 = listOf(
listAssertionGroup,
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.EXPECT_THROWN,
30
).build()
)
val listAssertionGroup2 = ExpectImpl.builder.list
val listAssertionGroup2 = assertionBuilder.list
.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 5)
.withAssertions(listAssertions2)
.build()
@@ -165,16 +164,16 @@ abstract class TextIndentBasedAssertionGroupFormatterSpec<T : AssertionGroupType
context("in another ${AssertionGroup::class.simpleName} of type object: ${assertionGroupTypeClass::class.simpleName}") {
val indentAssertions = listOf(
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
21
).build(), indentAssertionGroup,
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
20
).build()
)
val indentAssertionGroup2 = ExpectImpl.builder.customType(anonymousAssertionGroupType)
val indentAssertionGroup2 = assertionBuilder.customType(anonymousAssertionGroupType)
.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 10)
.withAssertions(indentAssertions)
.build()

View File

@@ -4,15 +4,14 @@ import ch.tutteli.atrium.api.fluent.en_GB.isEmpty
import ch.tutteli.atrium.api.fluent.en_GB.toBe
import ch.tutteli.atrium.api.verbs.internal.expect
import ch.tutteli.atrium.assertions.*
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.core.coreFactory
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.AssertionFormatter
import ch.tutteli.atrium.reporting.AssertionFormatterController
import ch.tutteli.atrium.reporting.translating.Untranslatable
import ch.tutteli.atrium.specs.lineSeperator
import ch.tutteli.atrium.specs.AssertionVerb
import ch.tutteli.atrium.specs.describeFunTemplate
import org.spekframework.spek2.Spek
import ch.tutteli.atrium.specs.lineSeperator
import org.spekframework.spek2.style.specification.Suite
import kotlin.reflect.KClass
@@ -44,7 +43,7 @@ abstract class TextSummaryAssertionGroupFormatterSpec(
val testee = testeeFactory(bulletPoints, coreFactory.newAssertionFormatterController())
it("returns true for an ${AssertionGroup::class.simpleName} with type object: ${SummaryAssertionGroupType::class.simpleName}") {
val result = testee.canFormat(
ExpectImpl.builder.customType(object : SummaryAssertionGroupType {})
assertionBuilder.customType(object : SummaryAssertionGroupType {})
.withDescriptionAndRepresentation(Untranslatable.EMPTY, 1)
.withAssertions(listOf())
.build()
@@ -57,16 +56,16 @@ abstract class TextSummaryAssertionGroupFormatterSpec(
describeFun(AssertionFormatter::formatGroup.name) {
context("${AssertionGroup::class.simpleName} of ${DefaultSummaryAssertionGroupType::class.simpleName} and does not hold") {
val assertions = listOf(
ExpectImpl.builder.descriptive.holding.withDescriptionAndRepresentation(
assertionBuilder.descriptive.holding.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
1
).build(),
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.EXPECT_THROWN,
2
).build()
)
val summaryAssertionGroup = ExpectImpl.builder.customType(DefaultSummaryAssertionGroupType)
val summaryAssertionGroup = assertionBuilder.customType(DefaultSummaryAssertionGroupType)
.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 22)
.withAssertions(assertions)
.build()
@@ -90,12 +89,12 @@ abstract class TextSummaryAssertionGroupFormatterSpec(
it("puts the assertions one under the other and indents the second one including a prefix") {
val featureAssertions = listOf(
summaryAssertionGroup,
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
20
).build()
)
val featureAssertionGroup = ExpectImpl.builder.feature
val featureAssertionGroup = assertionBuilder.feature
.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 10)
.withAssertions(featureAssertions)
.build()
@@ -117,12 +116,12 @@ abstract class TextSummaryAssertionGroupFormatterSpec(
context("in an ${AssertionGroup::class.simpleName} of type ${ListAssertionGroupType::class.simpleName}") {
val listAssertions = listOf(
summaryAssertionGroup,
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
20
).build()
)
val listAssertionGroup = ExpectImpl.builder.list
val listAssertionGroup = assertionBuilder.list
.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 10)
.withAssertions(listAssertions)
.build()
@@ -146,12 +145,12 @@ abstract class TextSummaryAssertionGroupFormatterSpec(
it("puts the assertions one under the other and indents as the other assertions but adds an extra indent to the second assertion including a prefix") {
val listAssertions2 = listOf(
listAssertionGroup,
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.EXPECT_THROWN,
30
).build()
)
val listAssertionGroup2 = ExpectImpl.builder.list
val listAssertionGroup2 = assertionBuilder.list
.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 5)
.withAssertions(listAssertions2)
.build()
@@ -175,26 +174,26 @@ abstract class TextSummaryAssertionGroupFormatterSpec(
context("in another ${AssertionGroup::class.simpleName} of type object: ${SummaryAssertionGroupType::class.simpleName}") {
val summaryAssertions = listOf(
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
21
).build(),
summaryAssertionGroup,
ExpectImpl.builder.summary
assertionBuilder.summary
.withDescription(AssertionVerb.EXPECT_THROWN)
.withAssertions(
ExpectImpl.builder.descriptive.holding.withDescriptionAndRepresentation(
assertionBuilder.descriptive.holding.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
30
).build(),
ExpectImpl.builder.descriptive.holding.withDescriptionAndRepresentation(
assertionBuilder.descriptive.holding.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
31
).build()
)
.build()
)
val summaryAssertionGroup2 = ExpectImpl.builder.customType(object : SummaryAssertionGroupType {})
val summaryAssertionGroup2 = assertionBuilder.customType(object : SummaryAssertionGroupType {})
.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 10)
.withAssertions(summaryAssertions)
.build()
@@ -221,12 +220,12 @@ abstract class TextSummaryAssertionGroupFormatterSpec(
context("${AssertionGroup::class.simpleName} of ${DefaultSummaryAssertionGroupType::class.simpleName} and group holds") {
it("The group is not formatted since it is filtered out") {
val assertions = listOf(
ExpectImpl.builder.descriptive.holding.withDescriptionAndRepresentation(
assertionBuilder.descriptive.holding.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
1
).build()
)
val summaryAssertionGroup = ExpectImpl.builder.summary
val summaryAssertionGroup = assertionBuilder.summary
.withDescription(AssertionVerb.ASSERT)
.withAssertions(assertions)
.build()

View File

@@ -2,7 +2,7 @@ package ch.tutteli.atrium.specs.reporting
import ch.tutteli.atrium.assertions.BulletPointIdentifier
import ch.tutteli.atrium.assertions.WarningAssertionGroupType
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.reporting.AssertionFormatter
import ch.tutteli.atrium.reporting.AssertionFormatterController
import kotlin.reflect.KClass
@@ -14,6 +14,6 @@ abstract class TextWarningAssertionGroupFormatterSpec(
testeeFactory,
WarningAssertionGroupType::class,
WarningAssertionGroupType,
{ ExpectImpl.builder.explanatoryGroup.withWarningType.withAssertions(it).build() },
{ assertionBuilder.explanatoryGroup.withWarningType.withAssertions(it).build() },
describePrefix
)

View File

@@ -6,17 +6,17 @@ import ch.tutteli.atrium.assertions.AssertionGroup
import ch.tutteli.atrium.assertions.BulletPointIdentifier
import ch.tutteli.atrium.assertions.DefaultListAssertionGroupType
import ch.tutteli.atrium.assertions.FeatureAssertionGroupType
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.core.coreFactory
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.AssertionFormatter
import ch.tutteli.atrium.reporting.AssertionFormatterController
import ch.tutteli.atrium.reporting.ObjectFormatter
import ch.tutteli.atrium.reporting.translating.Translator
import ch.tutteli.atrium.reporting.translating.Untranslatable
import ch.tutteli.atrium.reporting.translating.UsingDefaultTranslator
import ch.tutteli.atrium.specs.lineSeperator
import ch.tutteli.atrium.specs.AssertionVerb
import ch.tutteli.atrium.specs.describeFunTemplate
import ch.tutteli.atrium.specs.lineSeperator
import ch.tutteli.atrium.specs.reporting.translating.TranslatorIntSpec
import org.spekframework.spek2.style.specification.Suite
import kotlin.reflect.KClass
@@ -30,10 +30,10 @@ abstract class TextFeatureAssertionGroupFormatterSpec(
describeFunTemplate(describePrefix, funName, body = body)
val assertions = listOf(
ExpectImpl.builder.descriptive.holding.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 1).build(),
ExpectImpl.builder.descriptive.holding.withDescriptionAndRepresentation(AssertionVerb.EXPECT_THROWN, 2).build()
assertionBuilder.descriptive.holding.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 1).build(),
assertionBuilder.descriptive.holding.withDescriptionAndRepresentation(AssertionVerb.EXPECT_THROWN, 2).build()
)
val featureAssertionGroup = ExpectImpl.builder
val featureAssertionGroup = assertionBuilder
.customType(object : FeatureAssertionGroupType {})
.withDescriptionAndRepresentation(TranslatorIntSpec.TestTranslatable.PLACEHOLDER, 2)
.withAssertions(assertions)
@@ -46,7 +46,7 @@ abstract class TextFeatureAssertionGroupFormatterSpec(
)
it("returns true for an ${AssertionGroup::class.simpleName} with type object: ${FeatureAssertionGroupType::class.simpleName}") {
val result = testee.canFormat(
ExpectImpl.builder
assertionBuilder
.customType(object : FeatureAssertionGroupType {})
.withDescriptionAndRepresentation(Untranslatable.EMPTY, 1)
.withAssertions(listOf())
@@ -99,12 +99,12 @@ abstract class TextFeatureAssertionGroupFormatterSpec(
context("in an ${AssertionGroup::class.simpleName} of type ${DefaultListAssertionGroupType::class.simpleName}") {
val listAssertions = listOf(
featureAssertionGroup,
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
20
).build()
)
val listAssertionGroup = ExpectImpl.builder.list
val listAssertionGroup = assertionBuilder.list
.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 10)
.withAssertions(listAssertions)
.build()
@@ -127,16 +127,16 @@ abstract class TextFeatureAssertionGroupFormatterSpec(
context("in another ${AssertionGroup::class.simpleName} of type ${FeatureAssertionGroupType::class.simpleName}") {
it("indents the group ${AssertionGroup::description.name} as well as the ${AssertionGroup::assertions.name} accordingly - uses `$featureBulletPoint` for each assertion and `$listBulletPoint` for each element in the list group") {
val featureAssertions = listOf(
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
5
).build(), featureAssertionGroup,
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
30
).build()
)
val featureAssertionGroup2 = ExpectImpl.builder
val featureAssertionGroup2 = assertionBuilder
.customType(object : FeatureAssertionGroupType {})
.withDescriptionAndRepresentation(AssertionVerb.EXPECT_THROWN, 10)
.withAssertions(featureAssertions)

View File

@@ -3,17 +3,17 @@ package ch.tutteli.atrium.specs.reporting
import ch.tutteli.atrium.api.fluent.en_GB.toBe
import ch.tutteli.atrium.api.verbs.internal.expect
import ch.tutteli.atrium.assertions.*
import ch.tutteli.atrium.assertions.builders.assertionBuilder
import ch.tutteli.atrium.core.coreFactory
import ch.tutteli.atrium.domain.builders.ExpectImpl
import ch.tutteli.atrium.reporting.AssertionFormatter
import ch.tutteli.atrium.reporting.AssertionFormatterController
import ch.tutteli.atrium.reporting.ObjectFormatter
import ch.tutteli.atrium.reporting.translating.Translator
import ch.tutteli.atrium.reporting.translating.Untranslatable
import ch.tutteli.atrium.reporting.translating.UsingDefaultTranslator
import ch.tutteli.atrium.specs.lineSeperator
import ch.tutteli.atrium.specs.AssertionVerb
import ch.tutteli.atrium.specs.describeFunTemplate
import ch.tutteli.atrium.specs.lineSeperator
import ch.tutteli.atrium.specs.reporting.translating.TranslatorIntSpec
import org.spekframework.spek2.style.specification.Suite
import kotlin.reflect.KClass
@@ -30,10 +30,10 @@ abstract class TextListBasedAssertionGroupFormatterSpec<T : AssertionGroupType>(
describeFunTemplate(describePrefix, funName, body = body)
val assertions = listOf(
ExpectImpl.builder.descriptive.holding.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 1).build(),
ExpectImpl.builder.descriptive.holding.withDescriptionAndRepresentation(AssertionVerb.EXPECT_THROWN, 2).build()
assertionBuilder.descriptive.holding.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 1).build(),
assertionBuilder.descriptive.holding.withDescriptionAndRepresentation(AssertionVerb.EXPECT_THROWN, 2).build()
)
val listAssertionGroup = ExpectImpl.builder.customType(anonymousAssertionGroupType)
val listAssertionGroup = assertionBuilder.customType(anonymousAssertionGroupType)
.withDescriptionAndRepresentation(TranslatorIntSpec.TestTranslatable.PLACEHOLDER, 2)
.withAssertions(assertions)
.build()
@@ -45,7 +45,7 @@ abstract class TextListBasedAssertionGroupFormatterSpec<T : AssertionGroupType>(
)
it("returns true for an ${AssertionGroup::class.simpleName} with type object: ${assertionGroupClass.simpleName}") {
val result = testee.canFormat(
ExpectImpl.builder.customType(anonymousAssertionGroupType)
assertionBuilder.customType(anonymousAssertionGroupType)
.withDescriptionAndRepresentation(Untranslatable.EMPTY, 1)
.withAssertions(listOf())
.build()
@@ -109,12 +109,12 @@ abstract class TextListBasedAssertionGroupFormatterSpec<T : AssertionGroupType>(
context("in an ${AssertionGroup::class.simpleName} of type ${DefaultFeatureAssertionGroupType::class.simpleName}") {
val featureAssertions = listOf(
listAssertionGroup,
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
20
).build()
)
val featureAssertionGroup = ExpectImpl.builder.feature
val featureAssertionGroup = assertionBuilder.feature
.withDescriptionAndRepresentation(AssertionVerb.ASSERT, 10)
.withAssertions(featureAssertions)
.build()
@@ -136,16 +136,16 @@ abstract class TextListBasedAssertionGroupFormatterSpec<T : AssertionGroupType>(
context("in another ${AssertionGroup::class.simpleName} of type ${assertionGroupType::class.simpleName}") {
it("indents the group ${AssertionGroup::description.name} as well as the ${AssertionGroup::assertions.name} accordingly - uses `$listBulletPoint` for each assertion and `$bulletPoint` for each element in the list group") {
val listAssertions = listOf(
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
5
).build(), featureAssertionGroup,
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
30
).build()
)
val listAssertionGroup2 = ExpectImpl.builder
val listAssertionGroup2 = assertionBuilder
.customType(assertionGroupType)
.withDescriptionAndRepresentation(AssertionVerb.EXPECT_THROWN, 10)
.withAssertions(listAssertions)
@@ -172,17 +172,17 @@ abstract class TextListBasedAssertionGroupFormatterSpec<T : AssertionGroupType>(
context("in another ${AssertionGroup::class.simpleName} of type ${assertionGroupClass.simpleName}") {
it("indents the group ${AssertionGroup::description.name} as well as the ${AssertionGroup::assertions.name} accordingly - uses `$listBulletPoint` for each assertion and `$bulletPoint` for each element in the list group") {
val listAssertions = listOf(
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
5
).build(),
listAssertionGroup,
ExpectImpl.builder.descriptive.failing.withDescriptionAndRepresentation(
assertionBuilder.descriptive.failing.withDescriptionAndRepresentation(
AssertionVerb.ASSERT,
30
).build()
)
val listAssertionGroup2 = ExpectImpl.builder.customType(anonymousAssertionGroupType)
val listAssertionGroup2 = assertionBuilder.customType(anonymousAssertionGroupType)
.withDescriptionAndRepresentation(AssertionVerb.EXPECT_THROWN, 10)
.withAssertions(listAssertions)
.build()