Dev #8
@ -0,0 +1,15 @@
|
|||||||
|
package ru.mipt.npm.controls.xodus.util
|
||||||
|
|
||||||
|
import jetbrains.exodus.entitystore.StoreTransaction
|
||||||
|
import kotlinx.datetime.Instant
|
||||||
|
import ru.mipt.npm.controls.api.PropertyChangedMessage
|
||||||
|
import ru.mipt.npm.controls.xodus.toPropertyChangedMessage
|
||||||
|
|
||||||
|
public fun StoreTransaction.fromTo(from: Instant, to: Instant): List<PropertyChangedMessage> {
|
||||||
|
return find(
|
||||||
|
"PropertyChangedMessage",
|
||||||
|
"time",
|
||||||
|
from.toEpochMilliseconds(),
|
||||||
|
to.toEpochMilliseconds()
|
||||||
|
).map { it -> it.toPropertyChangedMessage() }.filterNotNull()
|
||||||
|
}
|
@ -16,7 +16,8 @@ import kotlin.test.assertEquals
|
|||||||
|
|
||||||
internal class ConvertersTest {
|
internal class ConvertersTest {
|
||||||
companion object {
|
companion object {
|
||||||
private val entityStore = PersistentEntityStores.newInstance(".test")
|
private val storeName = ".converters_test"
|
||||||
|
private val entityStore = PersistentEntityStores.newInstance(storeName)
|
||||||
private val expectedMessage = MagixMessage(
|
private val expectedMessage = MagixMessage(
|
||||||
"dataforge",
|
"dataforge",
|
||||||
"dataforge",
|
"dataforge",
|
||||||
@ -46,7 +47,7 @@ internal class ConvertersTest {
|
|||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun deleteDatabase() {
|
fun deleteDatabase() {
|
||||||
entityStore.close()
|
entityStore.close()
|
||||||
File(".test").deleteRecursively()
|
File(storeName).deleteRecursively()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,62 @@
|
|||||||
|
package ru.mipt.npm.controls.xodus.util
|
||||||
|
|
||||||
|
import jetbrains.exodus.entitystore.PersistentEntityStores
|
||||||
|
import kotlinx.datetime.Instant
|
||||||
|
import org.junit.jupiter.api.AfterAll
|
||||||
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
|
import org.junit.jupiter.api.BeforeAll
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
import ru.mipt.npm.controls.api.PropertyChangedMessage
|
||||||
|
import ru.mipt.npm.controls.xodus.toEntity
|
||||||
|
import space.kscience.dataforge.meta.Meta
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
internal class QueriesTest {
|
||||||
|
companion object {
|
||||||
|
private val storeName = ".queries_test"
|
||||||
|
private val entityStore = PersistentEntityStores.newInstance(storeName)
|
||||||
|
|
||||||
|
private val propertyChangedMessages = listOf(
|
||||||
|
PropertyChangedMessage(
|
||||||
|
"",
|
||||||
|
Meta.EMPTY,
|
||||||
|
time = Instant.fromEpochMilliseconds(1000)
|
||||||
|
),
|
||||||
|
PropertyChangedMessage(
|
||||||
|
"",
|
||||||
|
Meta.EMPTY,
|
||||||
|
time = Instant.fromEpochMilliseconds(1500)
|
||||||
|
),
|
||||||
|
PropertyChangedMessage(
|
||||||
|
"",
|
||||||
|
Meta.EMPTY,
|
||||||
|
time = Instant.fromEpochMilliseconds(2000)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
@JvmStatic
|
||||||
|
fun createEntities() {
|
||||||
|
entityStore.executeInTransaction { transaction ->
|
||||||
|
propertyChangedMessages.forEach {
|
||||||
|
it.toEntity(transaction)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
@JvmStatic
|
||||||
|
fun deleteDatabase() {
|
||||||
|
entityStore.close()
|
||||||
|
File(storeName).deleteRecursively()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testFromTo() {
|
||||||
|
assertEquals(propertyChangedMessages.subList(0, 2).toSet(), entityStore.computeInReadonlyTransaction {
|
||||||
|
it.fromTo(Instant.fromEpochMilliseconds(1000), Instant.fromEpochMilliseconds(1500))
|
||||||
|
}.toSet())
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user