Move replayOccurrences back to MatchJournal again, fix tests

This commit is contained in:
Grigorii Kirgizov 2019-05-30 16:49:27 +03:00
parent 8d615852c6
commit 71eac08775
4 changed files with 10 additions and 9 deletions

View File

@ -38,7 +38,6 @@ interface MatchJournal : MutableIterable<MatchJournal.Chunk> {
fun resetPos()
fun reset(pastPos: Pos)
fun replay(controller: Controller, futurePos: Pos)
fun replayOccurrences(controller: Controller, occSpecs: Iterable<MatchJournal.Chunk.Entry>) {}
fun view(): View
fun storeView(): StoreView
@ -164,7 +163,8 @@ internal open class MatchJournalImpl(
if (currentPos() != futurePos) throw IllegalStateException()
}
// override fun replayOccurrences(occSpecs: Iterable<MatchJournal.Chunk.Entry>) {}
private fun replayOccurrences(controller: Controller, occSpecs: Iterable<MatchJournal.Chunk.Entry>) =
occSpecs.forEach { if (it.isDiscarded) it.occ.terminate(controller) else it.occ.revive(controller) }
override fun view() = MatchJournal.View(ArrayList(hist), nextChunkId)

View File

@ -116,10 +116,6 @@ internal class ProcessingStateImpl(private var dispatchingFront: Dispatcher.Disp
private data class ExecPos(val pos: MatchJournal.Pos, val activeOcc: Occurrence)
override fun replayOccurrences(controller: Controller, occSpecs: Iterable<MatchJournal.Chunk.Entry>) =
occSpecs.forEach { if (it.isDiscarded) it.occ.terminate(controller) else it.occ.revive(controller) }
// only for tests
fun pushActivateFirstOccOf(ctr: Constraint): Boolean {
val pos = currentPos()

View File

@ -16,7 +16,6 @@
package jetbrains.mps.logic.reactor.core.internal
import jetbrains.mps.logic.reactor.core.Dispatcher
import jetbrains.mps.logic.reactor.core.ProcessingState
import java.lang.IllegalArgumentException

View File

@ -1,9 +1,9 @@
import jetbrains.mps.logic.reactor.core.IncrementalProgramSpec
import jetbrains.mps.logic.reactor.core.Occurrence
import jetbrains.mps.logic.reactor.core.ReactorLifecycle
import jetbrains.mps.logic.reactor.core.SessionToken
import jetbrains.mps.logic.reactor.evaluation.EvaluationResult
import jetbrains.mps.logic.reactor.evaluation.EvaluationSession
import jetbrains.mps.logic.reactor.evaluation.StoreView
import jetbrains.mps.logic.reactor.program.Constraint
import jetbrains.mps.logic.reactor.program.ConstraintSymbol
import jetbrains.mps.logic.reactor.program.Rule as CRule
@ -147,10 +147,13 @@ class TestIncrementalProgram {
)
).relaunch("test1", progSpec, evalRes.token()) { result ->
result.storeView().constraintSymbols() shouldBe setOf(sym0("foo"), sym0("bar"), sym0("baz"))
result.token().journalView.chunks.last().activated().constraintSymbols() shouldBe listOf(sym0("baz"))
}
}
}
private fun Iterable<Occurrence>.constraintSymbols() = this.map { it.constraint.symbol() }
@Test
fun addMatchAfterReplaced() {
val progSpec = MockIncrProgSpec(
@ -370,6 +373,9 @@ class TestIncrementalProgram {
}.also { (builder, evalRes) ->
builder.programWithRules(
rule("baz.lax",
headReplaced(
princConstraint("foo")
),
headKept(
princConstraint("baz")
),
@ -378,7 +384,7 @@ class TestIncrementalProgram {
)
)
).relaunch("test2", progSpec, evalRes.token()) { result ->
result.storeView().constraintSymbols() shouldBe setOf(sym0("bar"), sym0("baz"), sym0("qux"))
result.storeView().constraintSymbols() shouldBe setOf(sym0("bar"), sym0("baz"), sym0("lax"))
}
}
}