##----------------------------------------------------------------------------##
## TxpModel tests
##----------------------------------------------------------------------------##
##----------------------------------------------------------------------------##
## Initialization
test_that("We can create TxpModel objects", {
expect_silent({
slcLst <- list(S1 = TxpSlice("input1"), S2 = TxpSlice("input2"))
txpSlcLst <- TxpSliceList(S1 = TxpSlice("input1"), S2 = TxpSlice("input2"))
fxnLst <- list(f1 = function(x) x, f2 = function(x) x^2)
txpFxnLst <- TxpTransFuncList(f1 = function(x) x, f2 = function(x) x^2)
wrnLst <- TxpSliceList(S1 = TxpSlice("input1"), S2 = TxpSlice("input1"))
})
expect_s4_class(TxpModel(slcLst), "TxpModel")
expect_s4_class(TxpModel(txpSlcLst), "TxpModel")
expect_s4_class(TxpModel(txpSlices = slcLst, txpTransFuncs = fxnLst),
"TxpModel")
expect_s4_class(TxpModel(txpSlices = slcLst, txpTransFuncs = txpFxnLst),
"TxpModel")
expect_error(TxpModel(txpSlices = txpSlcLst, txpWeights = 1))
expect_error(TxpModel(txpSlices = txpSlcLst, txpWeights = "1"))
expect_error(TxpModel(txpSlices = txpSlcLst, txpTransFuncs = txpFxnLst[1]))
expect_warning(TxpModel(wrnLst))
})
##----------------------------------------------------------------------------##
## Accessors
test_that("TxpModel accessors return expected slots", {
expect_silent({
sl <- TxpSliceList(S1 = TxpSlice("input1"), S2 = TxpSlice("input2"))
md <- TxpModel(sl)
})
expect_s4_class(txpSlices(md), "TxpSliceList")
expect_equal(txpWeights(md), rep(1, 2))
expect_equal(txpWeights(md, adjust = TRUE), rep(0.5, 2))
expect_s4_class(txpTransFuncs(md), "TxpTransFuncList")
expect_equal(txpValueNames(md), list(S1 = "input1", S2 = "input2"))
expect_equal(txpValueNames(md, simplify = TRUE),
c(S1 = "input1", S2 = "input2"))
expect_named(md, c("S1", "S2"))
expect_length(md, 2)
})
##----------------------------------------------------------------------------##
## Replace
test_that("We can replace TxpModel slots", {
expect_silent({
sl1 <- TxpSliceList(S1 = TxpSlice("input1"), S2 = TxpSlice("input2"))
sl2 <- TxpSliceList(S1 = TxpSlice("input1"), S3 = TxpSlice("input3"))
md <- TxpModel(sl1)
fl <- TxpTransFuncList(f1 = function(x) x, f2 = function(x) sqrt(x))
})
expect_s4_class(txpSlices(md) <- sl2, "TxpSliceList")
expect_named(txpSlices(md), c("S1", "S3"))
expect_error(txpSlices(md) <- c("A", "B"))
expect_error(txpSlices(md) <- c(sl1, sl2[2]))
expect_silent(txpWeights(md) <- 1:2)
expect_equal(txpWeights(md), 1:2)
expect_silent(txpTransFuncs(md) <- fl)
expect_named(txpTransFuncs(md), c("f1", "f2"))
expect_silent(txpTransFuncs(md) <- as.list(fl)[2:1])
expect_named(txpTransFuncs(md), c("f2", "f1"))
expect_silent(txpTransFuncs(md) <- NULL)
expect_equal(txpTransFuncs(md), TxpTransFuncList(NULL, NULL))
md <- TxpModel(c(sl1, sl2[2]))
names(md) <- c("A", "B", "C")
expect_named(md, c("A", "B", "C"))
expect_error(names(md) <- "hello")
names(md)[2] <- "hello"
expect_named(md, c("A", "hello", "C"))
names(md)[2:3] <- c("B", "hello")
expect_named(md, c("A", "B", "hello"))
})
##----------------------------------------------------------------------------##
## Show
test_that("TxpModel show method displays correct information", {
mdl <- TxpModel(txpSlices = TxpSliceList(S1 = TxpSlice("inpt1"),
S2 = TxpSlice("input2")),
txpWeights = 1:2,
txpTransFuncs = list(f1 = function(x) x, NULL))
expect_output(print(mdl), "txpSlices\\(2\\)")
expect_output(print(mdl), "S1 S2")
expect_output(print(mdl), "txpWeights\\(2\\)")
expect_output(print(mdl), "1 2")
expect_output(print(mdl), "txpTransFuncs\\(2\\)")
expect_output(print(mdl), "f1 NULL")
})
##----------------------------------------------------------------------------##
## Merge
test_that("We can merge two TxpModel objects", {
expect_silent({
m1 <- TxpModel(txpSlices = c(S1 = TxpSlice("inpt1"),
S2 = TxpSlice("inpt2")),
txpWeights = 1:2,
txpTransFuncs = list(NULL, linear = function(x) x))
m2 <- TxpModel(txpSlices = c(S3 = TxpSlice("inpt3"),
S4 = TxpSlice("inpt4")),
txpWeights = 2:1,
txpTransFuncs = list(linear = function(x) x,
sqrt = function(x) sqrt(x)))
m3 <- TxpModel(c(S1 = TxpSlice("inpt4")))
m4 <- TxpModel(c(S4 = TxpSlice("inpt1")), txpWeights = 3)
})
expect_s4_class(mrg1 <- merge(m1, m2), "TxpModel")
expect_length(mrg1, 4)
expect_named(mrg1, c("S1", "S2", "S3", "S4"))
expect_equal(names(txpTransFuncs(mrg1)), c("", "linear", "linear", "sqrt"))
expect_equal(txpTransFuncs(mrg1)[[4]](100), 10)
expect_equal(txpTransFuncs(mrg1)[[2]](100), 100)
expect_error(txpTransFuncs(mrg1)[[1]](100))
expect_error(merge(m1, m3))
expect_warning(merge(m1, m4))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.