Skip to content

Commit

Permalink
Rename configurator to option
Browse files Browse the repository at this point in the history
  • Loading branch information
takahirom committed Dec 5, 2024
1 parent c212768 commit 9bc33b8
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,12 @@ fun ComposablePreview<AndroidPreviewInfo>.applyToRobolectricConfiguration() {

@ExperimentalRoborazziApi
fun RoborazziComposeOptions.Builder.previewDevice(previewDevice: String): RoborazziComposeOptions.Builder {
return addConfigurator(RoborazziComposePreviewDeviceConfigurator(previewDevice))
return addOption(RoborazziComposePreviewDeviceOption(previewDevice))
}

@ExperimentalRoborazziApi
data class RoborazziComposePreviewDeviceConfigurator(private val previewDevice: String) :
RoborazziComposeSetupConfigurator {
data class RoborazziComposePreviewDeviceOption(private val previewDevice: String) :
RoborazziComposeSetupOption {
override fun configure() {
if (previewDevice.isNotBlank()) {
// Requires `io.github.sergio-sastre.ComposablePreviewScanner:android:0.4.0` or later
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,63 +18,63 @@ import org.robolectric.shadows.ShadowDisplay.getDefaultDisplay
import kotlin.math.roundToInt

@ExperimentalRoborazziApi
interface RoborazziComposeConfigurator
interface RoborazziComposeOption

@ExperimentalRoborazziApi
interface RoborazziComposeSetupConfigurator : RoborazziComposeConfigurator {
interface RoborazziComposeSetupOption : RoborazziComposeOption {
fun configure()
}

@ExperimentalRoborazziApi
interface RoborazziComposeActivityScenarioConfigurator : RoborazziComposeConfigurator {
interface RoborazziComposeActivityScenarioOption : RoborazziComposeOption {
fun configureWithActivityScenario(scenario: ActivityScenario<out Activity>)
}

@ExperimentalRoborazziApi
interface RoborazziComposeComposableConfigurator : RoborazziComposeConfigurator {
interface RoborazziComposeComposableOption : RoborazziComposeOption {
fun configureWithComposable(content: @Composable () -> Unit): @Composable () -> Unit
}

@ExperimentalRoborazziApi
class RoborazziComposeOptions private constructor(
private val activityScenarioConfigurators: List<RoborazziComposeActivityScenarioConfigurator>,
private val composableConfigurators: List<RoborazziComposeComposableConfigurator>,
private val setupConfigurators: List<RoborazziComposeSetupConfigurator>
private val activityScenarioConfigurators: List<RoborazziComposeActivityScenarioOption>,
private val composableConfigurators: List<RoborazziComposeComposableOption>,
private val setupConfigurators: List<RoborazziComposeSetupOption>
) {
class Builder {
private val activityScenarioConfigurators =
mutableListOf<RoborazziComposeActivityScenarioConfigurator>()
private val composableConfigurators = mutableListOf<RoborazziComposeComposableConfigurator>()
private val setupConfigurators = mutableListOf<RoborazziComposeSetupConfigurator>()

fun addConfigurator(configurator: RoborazziComposeConfigurator): Builder {
if (configurator is RoborazziComposeActivityScenarioConfigurator) {
activityScenarioConfigurators.add(configurator)
private val activityScenarioOptions =
mutableListOf<RoborazziComposeActivityScenarioOption>()
private val composableOptions = mutableListOf<RoborazziComposeComposableOption>()
private val setupOptions = mutableListOf<RoborazziComposeSetupOption>()

fun addOption(option: RoborazziComposeOption): Builder {
if (option is RoborazziComposeActivityScenarioOption) {
activityScenarioOptions.add(option)
}
if (configurator is RoborazziComposeComposableConfigurator) {
composableConfigurators.add(configurator)
if (option is RoborazziComposeComposableOption) {
composableOptions.add(option)
}
if (configurator is RoborazziComposeSetupConfigurator) {
setupConfigurators.add(configurator)
if (option is RoborazziComposeSetupOption) {
setupOptions.add(option)
}
return this
}

fun build(): RoborazziComposeOptions {
return RoborazziComposeOptions(
activityScenarioConfigurators = activityScenarioConfigurators,
composableConfigurators = composableConfigurators,
setupConfigurators = setupConfigurators
activityScenarioConfigurators = activityScenarioOptions,
composableConfigurators = composableOptions,
setupConfigurators = setupOptions
)
}
}

fun builder(): Builder {
return Builder()
.apply {
activityScenarioConfigurators.forEach { addConfigurator(it) }
composableConfigurators.forEach { addConfigurator(it) }
setupConfigurators.forEach { addConfigurator(it) }
activityScenarioConfigurators.forEach { addOption(it) }
composableConfigurators.forEach { addOption(it) }
setupConfigurators.forEach { addOption(it) }
}
}

Expand Down Expand Up @@ -106,13 +106,13 @@ fun RoborazziComposeOptions.Builder.size(
widthDp: Int = 0,
heightDp: Int = 0
): RoborazziComposeOptions.Builder {
return addConfigurator(RoborazziComposeSizeConfigurator(widthDp, heightDp))
return addOption(RoborazziComposeSizeOption(widthDp, heightDp))
}

@ExperimentalRoborazziApi
data class RoborazziComposeSizeConfigurator(val widthDp: Int, val heightDp: Int) :
RoborazziComposeActivityScenarioConfigurator,
RoborazziComposeComposableConfigurator {
data class RoborazziComposeSizeOption(val widthDp: Int, val heightDp: Int) :
RoborazziComposeActivityScenarioOption,
RoborazziComposeComposableOption {
override fun configureWithActivityScenario(scenario: ActivityScenario<out Activity>) {
scenario.onActivity { activity ->
activity.setDisplaySize(widthDp = widthDp, heightDp = heightDp)
Expand Down Expand Up @@ -163,14 +163,14 @@ fun RoborazziComposeOptions.Builder.background(
showBackground: Boolean,
backgroundColor: Long = 0L
): RoborazziComposeOptions.Builder {
return addConfigurator(RoborazziComposeBackgroundConfigurator(showBackground, backgroundColor))
return addOption(RoborazziComposeBackgroundOption(showBackground, backgroundColor))
}

@ExperimentalRoborazziApi
data class RoborazziComposeBackgroundConfigurator(
data class RoborazziComposeBackgroundOption(
private val showBackground: Boolean,
private val backgroundColor: Long
) : RoborazziComposeActivityScenarioConfigurator {
) : RoborazziComposeActivityScenarioOption {
override fun configureWithActivityScenario(scenario: ActivityScenario<out Activity>) {
when (showBackground) {
false -> {
Expand All @@ -194,12 +194,12 @@ data class RoborazziComposeBackgroundConfigurator(

@ExperimentalRoborazziApi
fun RoborazziComposeOptions.Builder.uiMode(uiMode: Int): RoborazziComposeOptions.Builder {
return addConfigurator(RoborazziComposeUiModeConfigurator(uiMode))
return addOption(RoborazziComposeUiModeOption(uiMode))
}

@ExperimentalRoborazziApi
data class RoborazziComposeUiModeConfigurator(private val uiMode: Int) :
RoborazziComposeSetupConfigurator {
data class RoborazziComposeUiModeOption(private val uiMode: Int) :
RoborazziComposeSetupOption {
override fun configure() {
val nightMode =
when (uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES) {
Expand All @@ -212,12 +212,12 @@ data class RoborazziComposeUiModeConfigurator(private val uiMode: Int) :

@ExperimentalRoborazziApi
fun RoborazziComposeOptions.Builder.locale(locale: String): RoborazziComposeOptions.Builder {
return addConfigurator(RoborazziComposeLocaleConfigurator(locale))
return addOption(RoborazziComposeLocaleOption(locale))
}

@ExperimentalRoborazziApi
data class RoborazziComposeLocaleConfigurator(private val locale: String) :
RoborazziComposeSetupConfigurator {
data class RoborazziComposeLocaleOption(private val locale: String) :
RoborazziComposeSetupOption {
override fun configure() {
val localeWithFallback = locale.ifBlank { "en" }
setQualifiers("+$localeWithFallback")
Expand All @@ -226,12 +226,12 @@ data class RoborazziComposeLocaleConfigurator(private val locale: String) :

@ExperimentalRoborazziApi
fun RoborazziComposeOptions.Builder.fontScale(fontScale: Float): RoborazziComposeOptions.Builder {
return addConfigurator(RoborazziComposeFontScaleConfigurator(fontScale))
return addOption(RoborazziComposeFontScaleOption(fontScale))
}

@ExperimentalRoborazziApi
data class RoborazziComposeFontScaleConfigurator(private val fontScale: Float) :
RoborazziComposeSetupConfigurator {
data class RoborazziComposeFontScaleOption(private val fontScale: Float) :
RoborazziComposeSetupOption {
init {
require(fontScale > 0) { "fontScale must be greater than 0" }
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ import com.github.takahirom.roborazzi.Dump
import com.github.takahirom.roborazzi.ExperimentalRoborazziApi
import com.github.takahirom.roborazzi.RoboComponent
import com.github.takahirom.roborazzi.RobolectricDeviceQualifiers
import com.github.takahirom.roborazzi.RoborazziComposeActivityScenarioConfigurator
import com.github.takahirom.roborazzi.RoborazziComposeComposableConfigurator
import com.github.takahirom.roborazzi.RoborazziComposeActivityScenarioOption
import com.github.takahirom.roborazzi.RoborazziComposeComposableOption
import com.github.takahirom.roborazzi.RoborazziComposeOptions
import com.github.takahirom.roborazzi.RoborazziOptions
import com.github.takahirom.roborazzi.captureRoboAllImage
Expand Down Expand Up @@ -178,9 +178,9 @@ class ManualTest {
// We have several options to configure the test environment.
fontScale(2f)
// We can also configure the activity scenario and the composable content.
addConfigurator(
object : RoborazziComposeComposableConfigurator,
RoborazziComposeActivityScenarioConfigurator {
addOption(
object : RoborazziComposeComposableOption,
RoborazziComposeActivityScenarioOption {
override fun configureWithActivityScenario(scenario: ActivityScenario<out Activity>) {
scenario.onActivity {
it.window.decorView.setBackgroundColor(Color.RED)
Expand Down

0 comments on commit 9bc33b8

Please sign in to comment.