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

com.wesleyhome.test.jupiter.generator.ParametersGenerator.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.generator

import com.wesleyhome.test.jupiter.InvalidParameterException
import com.wesleyhome.test.jupiter.provider.BooleanParameterDataProvider
import com.wesleyhome.test.jupiter.provider.DoubleRangeDataProvider
import com.wesleyhome.test.jupiter.provider.DoubleValueSourceDataProvider
import com.wesleyhome.test.jupiter.provider.EnumParameterDataProvider
import com.wesleyhome.test.jupiter.provider.FloatRangeDataProvider
import com.wesleyhome.test.jupiter.provider.FloatValueSourceDataProvider
import com.wesleyhome.test.jupiter.provider.IntRangeDataProvider
import com.wesleyhome.test.jupiter.provider.IntValueSourceDataProvider
import com.wesleyhome.test.jupiter.provider.LocalDateRangeDataProvider
import com.wesleyhome.test.jupiter.provider.LocalDateTimeRangeDataProvider
import com.wesleyhome.test.jupiter.provider.LocalDateTimeValueSourceDataProvider
import com.wesleyhome.test.jupiter.provider.LocalDateValueSourceDataProvider
import com.wesleyhome.test.jupiter.provider.LocalTimeRangeDataProvider
import com.wesleyhome.test.jupiter.provider.LocalTimeValueSourceDataProvider
import com.wesleyhome.test.jupiter.provider.LongRangeDataProvider
import com.wesleyhome.test.jupiter.provider.LongValueSourceDataProvider
import com.wesleyhome.test.jupiter.provider.ParameterDataProvider
import com.wesleyhome.test.jupiter.provider.StringValueSourceDataProvider
import com.wesleyhome.test.jupiter.provider.TestModel
import org.junit.jupiter.params.provider.Arguments

class ParametersGenerator(
    testModel: TestModel
) {

    private val dataProviders: List> = listOf(
        BooleanParameterDataProvider,
        EnumParameterDataProvider,
        IntValueSourceDataProvider,
        IntRangeDataProvider,
        LongValueSourceDataProvider,
        LongRangeDataProvider,
        DoubleValueSourceDataProvider,
        DoubleRangeDataProvider,
        FloatValueSourceDataProvider,
        FloatRangeDataProvider,
        LocalDateValueSourceDataProvider,
        LocalDateRangeDataProvider,
        LocalDateTimeValueSourceDataProvider,
        LocalDateTimeRangeDataProvider,
        StringValueSourceDataProvider,
        LocalTimeValueSourceDataProvider,
        LocalTimeRangeDataProvider
    )
    private val options: List> = testModel.testParameters.map {
        dataProviders.firstOrNull { dp ->
            dp.providesDataFor(it)
        }?.createParameterOptionsData(it)
            ?: throw InvalidParameterException(it.type)
    }

    fun arguments(): Iterable {
        return ArgumentParameters(options)
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy