Skip to content

Commit 9ea8815

Browse files
committed
Make map and except apply transformer/filter to ALL value providers
1 parent beef34f commit 9ea8815

File tree

2 files changed

+10
-20
lines changed

2 files changed

+10
-20
lines changed

utbot-fuzzing/src/main/kotlin/org/utbot/fuzzing/Providers.kt

+10-15
Original file line numberDiff line numberDiff line change
@@ -92,26 +92,16 @@ fun interface ValueProvider<T, R, D : Description<T>> {
9292
}
9393

9494
/**
95-
* Removes `anotherValueProviders<T, R` from current one.
95+
* Removes providers matching [filter] from the current one.
9696
*/
97-
fun except(filter: (ValueProvider<T, R, D>) -> Boolean): ValueProvider<T, R, D> {
98-
return if (this is Combined) {
99-
Combined(providers.map { it.unwrapIfFallback() }.filterNot(filter))
100-
} else {
101-
Combined(if (filter(unwrapIfFallback())) emptyList() else listOf(this))
102-
}
103-
}
97+
fun except(filter: (ValueProvider<T, R, D>) -> Boolean): ValueProvider<T, R, D> =
98+
map { if (filter(it)) Combined(emptyList()) else it }
10499

105100
/**
106101
* Applies [transform] for current provider
107102
*/
108-
fun map(transform: (ValueProvider<T, R, D>) -> ValueProvider<T, R, D>): ValueProvider<T, R, D> {
109-
return if (this is Combined) {
110-
Combined(providers.map(transform))
111-
} else {
112-
transform(this)
113-
}
114-
}
103+
fun map(transform: (ValueProvider<T, R, D>) -> ValueProvider<T, R, D>): ValueProvider<T, R, D> =
104+
transform(this)
115105

116106
/**
117107
* Uses fallback value provider in case when 'this' one failed to generate any value.
@@ -167,6 +157,8 @@ fun interface ValueProvider<T, R, D : Description<T>> {
167157
}
168158
}
169159

160+
override fun map(transform: (ValueProvider<T, R, D>) -> ValueProvider<T, R, D>): ValueProvider<T, R, D> =
161+
transform(Fallback(provider.map(transform), fallback.map(transform)))
170162
}
171163

172164
/**
@@ -200,6 +192,9 @@ fun interface ValueProvider<T, R, D : Description<T>> {
200192
}
201193
}
202194
}
195+
196+
override fun map(transform: (ValueProvider<T, R, D>) -> ValueProvider<T, R, D>): ValueProvider<T, R, D> =
197+
transform(Combined(providers.map { it.map(transform) }))
203198
}
204199

205200
companion object {

utbot-java-fuzzing/src/main/kotlin/org/utbot/fuzzing/spring/decorators/ValueProviderDecorator.kt

-5
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,6 @@ abstract class ValueProviderDecorator<T, R, D : Description<T>>(
1919
override fun generate(description: D, type: T): Sequence<Seed<T, R>> =
2020
delegate.generate(description, type)
2121

22-
override fun except(filter: (ValueProvider<T, R, D>) -> Boolean): ValueProvider<T, R, D> {
23-
val res = wrap(delegate.except(filter))
24-
return if (filter(res)) ValueProvider.of(emptyList()) else res
25-
}
26-
2722
override fun map(transform: (ValueProvider<T, R, D>) -> ValueProvider<T, R, D>): ValueProvider<T, R, D> =
2823
transform(wrap(delegate.map(transform)))
2924
}

0 commit comments

Comments
 (0)