Fix incorrect work of MetaWithDefault::getValue
This commit is contained in:
parent
c6a3a1af3f
commit
a438666d32
CHANGELOG.mdbuild.gradle.kts
dataforge-meta/src
commonMain/kotlin/space/kscience/dataforge/meta
commonTest/kotlin/space/kscience/dataforge/meta
@ -11,6 +11,7 @@
|
|||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
- Incorrect work of `MetaWithDefault::getValue`
|
||||||
|
|
||||||
### Security
|
### Security
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ plugins {
|
|||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
group = "space.kscience"
|
group = "space.kscience"
|
||||||
version = "0.10.0"
|
version = "0.10.1-dev"
|
||||||
}
|
}
|
||||||
|
|
||||||
subprojects {
|
subprojects {
|
||||||
|
@ -438,7 +438,7 @@ public inline fun Meta.copy(modification: MutableMeta.() -> Unit = {}): Meta = M
|
|||||||
|
|
||||||
private class MutableMetaWithDefault(
|
private class MutableMetaWithDefault(
|
||||||
val source: MutableMeta, val default: MetaProvider, val rootName: Name,
|
val source: MutableMeta, val default: MetaProvider, val rootName: Name,
|
||||||
) : MutableMeta by source {
|
) : MutableMeta {
|
||||||
override val items: Map<NameToken, MutableMeta>
|
override val items: Map<NameToken, MutableMeta>
|
||||||
get() {
|
get() {
|
||||||
val sourceKeys: Collection<NameToken> = source[rootName]?.items?.keys ?: emptyList()
|
val sourceKeys: Collection<NameToken> = source[rootName]?.items?.keys ?: emptyList()
|
||||||
@ -457,6 +457,17 @@ private class MutableMetaWithDefault(
|
|||||||
|
|
||||||
override fun get(name: Name): MutableMeta = MutableMetaWithDefault(source, default, rootName + name)
|
override fun get(name: Name): MutableMeta = MutableMetaWithDefault(source, default, rootName + name)
|
||||||
|
|
||||||
|
override fun set(name: Name, node: Meta?) {
|
||||||
|
source[name] = node
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setValue(name: Name, value: Value?) {
|
||||||
|
source.setValue(name, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getOrCreate(name: Name): MutableMeta =
|
||||||
|
MutableMetaWithDefault(source, default, rootName + name)
|
||||||
|
|
||||||
override fun toString(): String = Meta.toString(this)
|
override fun toString(): String = Meta.toString(this)
|
||||||
override fun equals(other: Any?): Boolean = Meta.equals(this, other as? Meta)
|
override fun equals(other: Any?): Boolean = Meta.equals(this, other as? Meta)
|
||||||
override fun hashCode(): Int = Meta.hashCode(this)
|
override fun hashCode(): Int = Meta.hashCode(this)
|
||||||
|
@ -3,9 +3,9 @@ package space.kscience.dataforge.meta
|
|||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
class MutableMetaTest{
|
class MutableMetaTest {
|
||||||
@Test
|
@Test
|
||||||
fun remove(){
|
fun remove() {
|
||||||
val meta = MutableMeta {
|
val meta = MutableMeta {
|
||||||
"aNode" put {
|
"aNode" put {
|
||||||
"innerNode" put {
|
"innerNode" put {
|
||||||
@ -19,4 +19,26 @@ class MutableMetaTest{
|
|||||||
meta.remove("aNode.c")
|
meta.remove("aNode.c")
|
||||||
assertEquals(meta["aNode.c"], null)
|
assertEquals(meta["aNode.c"], null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun withDefault() {
|
||||||
|
val metaWithDefault = MutableMeta().withDefault(
|
||||||
|
Meta {
|
||||||
|
"a" put {
|
||||||
|
value = 22.asValue()
|
||||||
|
"b" put true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
assertEquals(22, metaWithDefault["a"].int)
|
||||||
|
assertEquals(true, metaWithDefault.getValue("a.b")?.boolean)
|
||||||
|
|
||||||
|
metaWithDefault["a.b"] = "false"
|
||||||
|
|
||||||
|
assertEquals(false, metaWithDefault["a.b"]?.boolean)
|
||||||
|
assertEquals(false, metaWithDefault.getValue("a.b")?.boolean)
|
||||||
|
assertEquals(22, metaWithDefault.getValue("a")?.int)
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user