library(efdm)
library(testthat)
statespace <- expand.grid(a=1:2, b=1:2, vol=1:5)
pairdata <- data.frame(a=c(1,1,2,2), b=c(1,2,1,2), vol0=c(1,1,1,1), vol1=c(2,3,4,5))
state0 <- statespace
actprob <- statespace
actprob$test <- 1
state0$area <- 0
state0$area[1] <- 1

act1 <- define_activity("test", c("vol"))
transprobs(act1) <- estimatetransprobs("vol", pairdata, statespace, by=c("a", "b"), prior="nochange")
A <- transprobs(act1)
res0 <- runEFDM(state0, actprob, list(act1), 1)

transprobs(act1) <- A
res1 <- runEFDM(state0, actprob, list(act1), 1)
expect_identical(res0, res1)

act2 <- define_activity("test", c("vol"))
transprobs(act2) <- A
res2 <- runEFDM(state0, actprob, list(act2), 1)
expect_identical(res0, res2)

A$asdf <- 1
transprobs(act1) <- A
expect_error(runEFDM(state0, actprob, list(act1), 1, check=FALSE),
             "Variable 'asdf' required by activity 'test' not present in state.")
expect_error(runEFDM(state0, actprob, list(act1), 1),
             "Activity 'test' has variable asdf not in actprob.")


act3 <- define_activity("test", c("vol"))
transprobs(act3) <- data.frame(vol0 = 1:5, vol1=c(2:5, 5), prob=1)
res3 <- runEFDM(state0, actprob, list(act3), 3)
# Test something?
