Skip to content

Commit 139b4d7

Browse files
authored
Add reified inline build extension functions (#82)
1 parent e554969 commit 139b4d7

2 files changed

Lines changed: 23 additions & 3 deletions

File tree

src/main/kotlin/io/github/hellocuriosity/ModelForgeKotlin.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import kotlin.reflect.KClass
1111
*
1212
* @return Instance of clazz
1313
*/
14-
fun <T : Any> ModelForge.build(clazz: KClass<T>): T =
14+
public fun <T : Any> ModelForge.build(clazz: KClass<T>): T =
1515
build(clazz.java)
1616

1717
/**
@@ -24,7 +24,7 @@ fun <T : Any> ModelForge.build(clazz: KClass<T>): T =
2424
*
2525
* @return Instance of clazz
2626
*/
27-
fun <T : Any> ModelForge.buildList(clazz: KClass<T>, size: Int = 10): List<T> =
27+
public fun <T : Any> ModelForge.buildList(clazz: KClass<T>, size: Int = 10): List<T> =
2828
buildList(clazz.java, size)
2929

3030
/**
@@ -35,5 +35,9 @@ fun <T : Any> ModelForge.buildList(clazz: KClass<T>, size: Int = 10): List<T> =
3535
* @param provider Provider for populating data
3636
*
3737
*/
38-
fun <T : Any> ModelForge.addProvider(clazz: KClass<T>, provider: Provider<T>) =
38+
public fun <T : Any> ModelForge.addProvider(clazz: KClass<T>, provider: Provider<T>) =
3939
addProvider(clazz.java, provider)
40+
41+
public inline fun <reified T : Any> ModelForge.build(): T = build(T::class)
42+
43+
public inline fun <reified T : Any> ModelForge.build(size: Int = 10): List<T> = buildList(T::class, size)

src/test/kotlin/io/github/hellocuriosity/ModelForgeKotlinTest.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ class ModelForgeKotlinTest {
1515
testObject.assert()
1616
}
1717

18+
@Test
19+
fun testReifiedBuild() {
20+
val testObject: TestObject = forge.build()
21+
testObject.assert()
22+
}
23+
1824
@Test
1925
fun testBuild_WithProvider() {
2026
forge.addProvider(TestProviderObject::class, testProvider)
@@ -41,6 +47,16 @@ class ModelForgeKotlinTest {
4147
}
4248
}
4349

50+
@Test
51+
fun testReifiedBuildList_WithSize() {
52+
val size = 3
53+
val list = forge.build<TestObject>(size)
54+
assertEquals(size, list.size)
55+
list.map { testObject ->
56+
testObject.assert()
57+
}
58+
}
59+
4460
@Test(expected = ModelForgeException::class)
4561
fun testBuild_WithUnsupportedType() {
4662
data class UnsupportedTestObject(

0 commit comments

Comments
 (0)