Skip to content

Commit a22fab3

Browse files
Add MutableProvider#set(lazyValue)
1 parent d36d808 commit a22fab3

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/main/kotlin/xyz/xenondevs/commons/provider/MutableProvider.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,13 @@ interface MutableProvider<T> : Provider<T> {
9090
update(DeferredValue.Direct(value))
9191
}
9292

93+
/**
94+
* Sets the value of [this][MutableProvider] to the result of [lazyValue].
95+
*/
96+
fun set(lazyValue: () -> T) {
97+
update(DeferredValue.Lazy(lazyValue))
98+
}
99+
93100
/**
94101
* Sets the value of [this][MutableProvider] to [value].
95102
*/

src/test/kotlin/xyz/xenondevs/commons/provider/CoreProviderTest.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,23 @@ class CoreProviderTest {
114114
assertEquals(0, leafBUntransform)
115115
}
116116

117+
@Test
118+
fun testProviderSetLazyIsLazy() {
119+
var i = 0
120+
121+
val provider = mutableProvider { ++i }
122+
assertEquals(0, i)
123+
assertEquals(1, provider.get())
124+
assertEquals(1, provider.get())
125+
assertEquals(1, i)
126+
127+
provider.set { ++i }
128+
assertEquals(1, i)
129+
assertEquals(2, provider.get())
130+
assertEquals(2, provider.get())
131+
assertEquals(2, i)
132+
}
133+
117134
@Test
118135
fun testProviderSubscriber() {
119136
var invoked = false

0 commit comments

Comments
 (0)