diff --git a/core-kotlin-modules/core-kotlin-lang-oop-2/pom.xml b/core-kotlin-modules/core-kotlin-lang-oop-2/pom.xml index f0adea121e..f952911ae1 100644 --- a/core-kotlin-modules/core-kotlin-lang-oop-2/pom.xml +++ b/core-kotlin-modules/core-kotlin-lang-oop-2/pom.xml @@ -22,4 +22,57 @@ - \ No newline at end of file + + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-stdlib-jdk7 + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-stdlib-common + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-reflect + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-test-junit + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-test + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-test-common + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-test-annotations-common + ${kotlin.version} + + + + + + 1.4.10 + + diff --git a/core-kotlin-modules/core-kotlin-lang-oop-2/src/test/kotlin/com/baeldung/kotlin/delegates/DelegateProviderTest.kt b/core-kotlin-modules/core-kotlin-lang-oop-2/src/test/kotlin/com/baeldung/kotlin/delegates/DelegateProviderTest.kt new file mode 100644 index 0000000000..2959ea0e3c --- /dev/null +++ b/core-kotlin-modules/core-kotlin-lang-oop-2/src/test/kotlin/com/baeldung/kotlin/delegates/DelegateProviderTest.kt @@ -0,0 +1,42 @@ +package com.baeldung.kotlin.delegates + +import org.junit.Test +import kotlin.properties.PropertyDelegateProvider +import kotlin.reflect.KProperty +import kotlin.test.assertEquals + +class DelegateProvider(private val field: String, private val id: Int) + : PropertyDelegateProvider> { + override operator fun provideDelegate(thisRef: T, prop: KProperty<*>): DatabaseDelegate { + println("Providing delegate for field $field and ID $id") + prop.returnType.isMarkedNullable + return DatabaseDelegate(field, id) + } +} + +class DelegateProvidingUser(val id: Int) { + var name: String by DelegateProvider("name", id) + var age: Int by DelegateProvider("age", id) +} + +class DelegateProviderTest { + @Test + fun testGetKnownFields() { + val user = DelegateProvidingUser(1) + assertEquals("George", user.name) + assertEquals(4, user.age) + } + + @Test + fun testSetKnownFields() { + val user = DelegateProvidingUser(2) + user.age = 3 + assertEquals(3, user.age) + } + + @Test(expected = NoRecordFoundException::class) + fun testGetKnownField() { + val user = DelegateProvidingUser(3) + user.name + } +}