All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.wesleyhome.test.jupiter.provider.number.AbstractAnnotatedNumberRangeDataProvider.kt Maven / Gradle / Ivy

Go to download

Library to help generate test parameter permutations for parameterized tests in JUnit. This version is an initial attempt to convert to building with Gradle.

The newest version!
package com.wesleyhome.test.jupiter.provider.number

import com.wesleyhome.test.jupiter.annotations.validation.number.NumberRangeValidator
import com.wesleyhome.test.jupiter.propertyValue
import com.wesleyhome.test.jupiter.provider.AbstractAnnotatedParameterDataProvider
import com.wesleyhome.test.jupiter.provider.TestParameter
import com.wesleyhome.test.jupiter.step

internal abstract class AbstractAnnotatedNumberRangeDataProvider :
    AbstractAnnotatedParameterDataProvider() {

    final override fun createParameterOptionsData(testParameter: TestParameter): List {
        val s = findAnnotation(testParameter)!!
        val min = convert(s.propertyValue("min"))
        val max = convert(s.propertyValue("max"))
        val increment = convert(s.propertyValue("increment"))
        val ascending = s.propertyValue("ascending")
        val incrementDouble = increment.toDouble()
        val minDouble = min.toDouble()
        val maxDouble = max.toDouble()
        val errors = NumberRangeValidator.validate(min, max, increment)
        if (errors.isNotEmpty()) {
            throw IllegalArgumentException(errors.joinToString(", "))
        }
        val range = (minDouble..maxDouble step incrementDouble).map { convert(it) }.toList()
        return if (ascending) {
            range
        } else {
            range.reversed()
        }
    }

    abstract fun convert(value: Number): T

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy