mirror of
https://github.com/jlengrand/atrium.git
synced 2026-03-10 08:01:19 +00:00
mention string matches regex for CharSequence contains regex
In 0.6.0 we used `contains ...`, we improved to `contains value...` by now but this is not enough for contains regex. Thus: - use `contains: string matching regex` - resolves #23
This commit is contained in:
@@ -7,6 +7,7 @@ import ch.tutteli.atrium.creating.AssertionPlant
|
||||
import ch.tutteli.atrium.domain.creating.charsequence.contains.CharSequenceContains
|
||||
import ch.tutteli.atrium.domain.creating.charsequence.contains.CharSequenceContains.*
|
||||
import ch.tutteli.atrium.domain.robstoll.lib.creating.basic.contains.creators.ContainsObjectsAssertionCreator
|
||||
import ch.tutteli.atrium.reporting.translating.Translatable
|
||||
import ch.tutteli.atrium.translations.DescriptionCharSequenceAssertion
|
||||
|
||||
/**
|
||||
@@ -30,13 +31,13 @@ import ch.tutteli.atrium.translations.DescriptionCharSequenceAssertion
|
||||
class CharSequenceContainsAssertionCreator<in T : CharSequence, in SC: Any, S : SearchBehaviour>(
|
||||
searchBehaviour: S,
|
||||
private val searcher: Searcher<S>,
|
||||
checkers: List<Checker>
|
||||
checkers: List<Checker>,
|
||||
override val groupDescription: Translatable
|
||||
) : ContainsObjectsAssertionCreator<T, SC, S, Checker>(searchBehaviour, checkers),
|
||||
CharSequenceContains.Creator<T, SC> {
|
||||
|
||||
override val descriptionContains = DescriptionCharSequenceAssertion.CONTAINS
|
||||
override val descriptionNumberOfOccurrences = DescriptionCharSequenceAssertion.NUMBER_OF_OCCURRENCES
|
||||
override val groupDescription = DescriptionCharSequenceAssertion.VALUE
|
||||
|
||||
override fun getAssertionGroupType() = DefaultListAssertionGroupType
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ import ch.tutteli.atrium.domain.robstoll.lib.creating.charsequence.contains.sear
|
||||
import ch.tutteli.atrium.domain.robstoll.lib.creating.charsequence.contains.searchers.IndexSearcher
|
||||
import ch.tutteli.atrium.domain.robstoll.lib.creating.charsequence.contains.searchers.RegexSearcher
|
||||
import ch.tutteli.atrium.reporting.translating.Translatable
|
||||
import ch.tutteli.atrium.translations.DescriptionCharSequenceAssertion.STRING_MATCHING_REGEX
|
||||
import ch.tutteli.atrium.translations.DescriptionCharSequenceAssertion.VALUE
|
||||
|
||||
fun <T : CharSequence> _containsValues(
|
||||
checkerOption: CharSequenceContains.CheckerOption<T, NoOpSearchBehaviour>,
|
||||
@@ -43,7 +45,7 @@ private fun <T : CharSequence, S : CharSequenceContains.SearchBehaviour> checkOn
|
||||
"Searching for an empty CharSequence does not make sense. You probably forgot to specify the search criterion."
|
||||
}
|
||||
}
|
||||
return createAssertionGroup(checkerOption, searcher, expected)
|
||||
return createAssertionGroup(checkerOption, searcher, expected, VALUE)
|
||||
}
|
||||
|
||||
fun <T : CharSequence> _containsDefaultTranslationOf(
|
||||
@@ -62,23 +64,25 @@ fun <T : CharSequence> _containsRegex(
|
||||
checkerOption: CharSequenceContains.CheckerOption<T, NoOpSearchBehaviour>,
|
||||
expected: List<String>
|
||||
): AssertionGroup
|
||||
= createAssertionGroup(checkerOption, RegexSearcher(), expected)
|
||||
= createAssertionGroup(checkerOption, RegexSearcher(), expected, STRING_MATCHING_REGEX)
|
||||
|
||||
fun <T : CharSequence> _containsRegexIgnoringCase(
|
||||
checkerOption: CharSequenceContains.CheckerOption<T, IgnoringCaseSearchBehaviour>,
|
||||
expected: List<String>
|
||||
): AssertionGroup
|
||||
= createAssertionGroup(checkerOption, IgnoringCaseRegexSearcher(), expected)
|
||||
= createAssertionGroup(checkerOption, IgnoringCaseRegexSearcher(), expected, STRING_MATCHING_REGEX)
|
||||
|
||||
private fun <T : CharSequence, SC : Any, S : CharSequenceContains.SearchBehaviour> createAssertionGroup(
|
||||
checkerOption: CharSequenceContains.CheckerOption<T, S>,
|
||||
searcher: CharSequenceContains.Searcher<S>,
|
||||
expected: List<SC>
|
||||
expected: List<SC>,
|
||||
groupDescription: Translatable
|
||||
): AssertionGroup {
|
||||
val creator = CharSequenceContainsAssertionCreator<T, SC, S>(
|
||||
checkerOption.containsBuilder.searchBehaviour,
|
||||
searcher,
|
||||
checkerOption.checkers
|
||||
checkerOption.checkers,
|
||||
groupDescription
|
||||
)
|
||||
return creator.createAssertionGroup(checkerOption.containsBuilder.plant, expected)
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ abstract class CharSequenceContainsRegexAssertionsSpec(
|
||||
= containsAtMostIgnoringCaseFunArr(atLeast, a, aX)
|
||||
|
||||
val indentBulletPoint = " ".repeat(rootBulletPoint.length)
|
||||
val valueWithIndent = "$indentBulletPoint$listBulletPoint${CharSequenceContainsSpecBase.value}"
|
||||
val regexWithIndent = "$indentBulletPoint$listBulletPoint$stringMatchingRegex"
|
||||
|
||||
describeFun(containsRegex) {
|
||||
context("throws an ${PatternSyntaxException::class.simpleName}") {
|
||||
@@ -152,7 +152,7 @@ abstract class CharSequenceContainsRegexAssertionsSpec(
|
||||
message {
|
||||
contains(
|
||||
"$rootBulletPoint$containsDescr: $separator" +
|
||||
"$valueWithIndent: \"[a-z]\"",
|
||||
"$regexWithIndent: \"[a-z]\"",
|
||||
"$numberOfOccurrences: 17",
|
||||
"$atMost: 16"
|
||||
)
|
||||
@@ -166,7 +166,7 @@ abstract class CharSequenceContainsRegexAssertionsSpec(
|
||||
message {
|
||||
contains(
|
||||
"$rootBulletPoint$containsIgnoringCase: $separator" +
|
||||
"$valueWithIndent: \"[a-z]\"",
|
||||
"$regexWithIndent: \"[a-z]\"",
|
||||
"$numberOfOccurrences: 19",
|
||||
"$atMost: 18"
|
||||
)
|
||||
|
||||
@@ -14,6 +14,7 @@ abstract class CharSequenceContainsSpecBase(spec: Spec.() -> Unit) : Spek(spec)
|
||||
val containsIgnoringCase = String.format(DescriptionCharSequenceAssertion.IGNORING_CASE.getDefault(), DescriptionCharSequenceAssertion.CONTAINS.getDefault())
|
||||
val numberOfOccurrences = DescriptionCharSequenceAssertion.NUMBER_OF_OCCURRENCES.getDefault()
|
||||
val value = DescriptionCharSequenceAssertion.VALUE.getDefault()
|
||||
val stringMatchingRegex = DescriptionCharSequenceAssertion.STRING_MATCHING_REGEX.getDefault()
|
||||
|
||||
val atLeast = DescriptionCharSequenceAssertion.AT_LEAST.getDefault()
|
||||
val atMost = DescriptionCharSequenceAssertion.AT_MOST.getDefault()
|
||||
|
||||
@@ -19,5 +19,6 @@ enum class DescriptionCharSequenceAssertion(override val value: String) : String
|
||||
NUMBER_OF_OCCURRENCES("Anzahl Treffer"),
|
||||
STARTS_WITH("beginnt mit"),
|
||||
STARTS_NOT_WITH("beginnt nicht mit"),
|
||||
STRING_MATCHING_REGEX("Zeichenkette übereinstimmend mit Regex"),
|
||||
VALUE("Wert"),
|
||||
}
|
||||
|
||||
@@ -19,5 +19,6 @@ enum class DescriptionCharSequenceAssertion(override val value: String) : String
|
||||
NUMBER_OF_OCCURRENCES("number of occurrences"),
|
||||
STARTS_WITH("starts with"),
|
||||
STARTS_NOT_WITH("does not start with"),
|
||||
STRING_MATCHING_REGEX("string matching regex"),
|
||||
VALUE("value"),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user