commonMain.io.data2viz.test.matchers.StringMatchers.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of d2v-tests-jvm Show documentation
Show all versions of d2v-tests-jvm Show documentation
Data2viz d2v-tests library
/*
* Copyright (c) 2018-2021. data2viz sàrl.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package io.data2viz.test.matchers
interface StringMatchers {
infix fun HaveWrapper.substring(substr: String): Unit {
if (!value.contains(substr))
throw AssertionError("String does not have substring $substr")
}
infix fun StartWrapper.with(prefix: String): Unit {
if (!value.startsWith(prefix))
throw AssertionError("String does not start with $prefix but with ${value.take(prefix.length)}")
}
infix fun EndWrapper.with(suffix: String): Unit {
if (!value.endsWith(suffix))
throw AssertionError("String does not end with $suffix but with ${value.takeLast(suffix.length)}")
}
fun startWith(prefix: String): Matcher = object : Matcher {
override fun test(value: String) {
if (!value.startsWith(prefix))
throw AssertionError("String $value does not start with $prefix")
}
}
fun endWith(suffix: String): Matcher = object : Matcher {
override fun test(value: String) {
if (!value.endsWith(suffix))
throw AssertionError("String $value does not end with with $suffix")
}
}
fun match(regex: String): Matcher = object : Matcher {
override fun test(value: String) {
if (!value.matches(regex.toRegex()))
throw AssertionError("String $value does not match regex $regex")
}
}
fun haveLength(length: Int): Matcher = object : Matcher {
override fun test(value: String) {
if (value.length != length)
throw AssertionError("String $value does not have length $length")
}
}
}