rxTest({
# NA tests
test_that("can assign NA", {
mod1 <- rxode2("a=NA;\nb=2;\nc=a+b")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_true(all(is.na(ret$a)))
expect_true(all(is.na(ret$b)))
})
test_that("logic NA", {
mod1 <- rxode2("a=NA;\nif(is.na(a)){a=3}b=2;\nc=a+b+exp(3)")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_equal(ret$a, as.double(3))
expect_equal(ret$c, 3 + 2 + exp(3))
mod1 <- rxode2("a=NA;\nif(!is.na(a)){a=4} else { a=3 }; b=2;\nc=a+b+exp(3)")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_equal(ret$c, 3 + 2 + exp(3))
})
# Inf tests
test_that("can assign Inf", {
mod1 <- rxode2("a=Inf;\nb=2;\nc=a+b")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_true(all(is.infinite(ret$a)))
expect_true(all(ret$a > 0))
expect_true(all(ret$b > 0))
})
test_that("can assign -Inf", {
mod1 <- rxode2("a=-Inf;\nb=2;\nc=a+b")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_true(all(is.infinite(ret$a)))
expect_true(all(ret$a < 0))
expect_true(all(ret$b < 0))
})
test_that("logic Inf", {
mod1 <- rxode2("a=Inf;\nif(is.infinite(a)){a=3}b=2;\nc=a+b+exp(3)")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_equal(ret$a, as.double(3))
expect_equal(ret$c, 3 + 2 + exp(3))
mod1 <- rxode2("a=Inf;\nif(!is.finite(a)){a=3}b=2;\nc=a+b+exp(3)")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_equal(ret$a, as.double(3))
expect_equal(ret$c, 3 + 2 + exp(3))
mod1 <- rxode2("a=Inf;\nif(!is.infinite(a)){a=4} else { a=3 }; b=2;\nc=a+b+exp(3)")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_equal(ret$c, 3 + 2 + exp(3))
mod1 <- rxode2("a=Inf;\nif(is.finite(a)){a=4} else { a=3 }; b=2;\nc=a+b+exp(3)")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_equal(ret$c, 3 + 2 + exp(3))
})
test_that("logic -Inf", {
mod1 <- rxode2("a=-Inf;\nif(is.infinite(a)){a=3}b=2;\nc=a+b+exp(3)")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_equal(ret$a, as.double(3))
expect_equal(ret$c, 3 + 2 + exp(3))
mod1 <- rxode2("a=-Inf;\nif(!is.finite(a)){a=3}b=2;\nc=a+b+exp(3)")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_equal(ret$a, as.double(3))
expect_equal(ret$c, 3 + 2 + exp(3))
mod1 <- rxode2("a=-Inf;\nif(!is.infinite(a)){a=4} else { a=3 }; b=2;\nc=a+b+exp(3)")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_equal(ret$c, 3 + 2 + exp(3))
mod1 <- rxode2("a=-Inf;\nif(is.finite(a)){a=4} else { a=3 }; b=2;\nc=a+b+exp(3)")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_equal(ret$c, 3 + 2 + exp(3))
})
# NaN tests
test_that("can assign NaN", {
mod1 <- rxode2("a=NaN;\nb=2;\nc=a+b")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_true(all(is.nan(ret$a)))
expect_true(all(is.nan(ret$b)))
})
test_that("logic NaN", {
mod1 <- rxode2("a=NaN;\nif(is.nan(a)){a=3}b=2;\nc=a+b+exp(3)")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_equal(ret$a, as.double(3))
expect_equal(ret$c, 3 + 2 + exp(3))
mod1 <- rxode2("a=NaN;\nif(!is.nan(a)){a=4} else { a=3 }; b=2;\nc=a+b+exp(3)")
ret <- rxSolve(mod1, et(0), returnType = "data.frame")
expect_equal(ret$c, 3 + 2 + exp(3))
})
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.