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

com.wesleyhome.test.jupiter.provider.IntValueSourceDataProvider.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.

There is a newer version: 3.0.0
Show newest version
package com.wesleyhome.test.jupiter.provider

import com.wesleyhome.test.jupiter.annotations.IntRangeSource
import com.wesleyhome.test.jupiter.annotations.IntSource

object IntValueSourceDataProvider : AbstractParameterDataProvider() {

    override fun providesDataFor(testParameter: TestParameter): Boolean {
        return super.providesDataFor(testParameter) && findAnnotation(testParameter) != null
    }

    override fun createParameterOptionsData(testParameter: TestParameter): List {
        return findAnnotation(testParameter)!!.values.toList()
    }

    private fun findAnnotation(testParameter: TestParameter) =
        testParameter.annotations.firstOrNull { it is IntSource }.let { annotation ->
            if (annotation == null) {
                null
            } else {
                annotation as IntSource
            }
        }
}

object IntRangeDataProvider : AbstractParameterDataProvider() {

    override fun providesDataFor(testParameter: TestParameter): Boolean {
        return super.providesDataFor(testParameter) && findAnnotation(testParameter) != null
    }

    override fun createParameterOptionsData(testParameter: TestParameter): List {
        val s = findAnnotation(testParameter)!!
        if (s.increment <= 0) {
            throw IllegalArgumentException("increment must be greater than 0")
        }
        if (s.min >= s.max) {
            throw IllegalArgumentException("min must be less than or equal to max")
        }
        val range: IntProgression = if (s.ascending) {
            s.min..s.max step s.increment
        } else {
            s.max downTo s.min step s.increment
        }
        return range.toList()
    }

    private fun findAnnotation(testParameter: TestParameter) =
        testParameter.annotations.firstOrNull { it is IntRangeSource }.let { annotation ->
            if (annotation == null) {
                null
            } else {
                annotation as IntRangeSource
            }
        }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy