context("Public interface")
test_that("Validity function for set", {
test <- suppressWarnings({
test <- defineClass("test", {
x <- public(5, function(x) inherits(x, what = "numeric"))
})
})
tmp <- test()
expect_equal(tmp$x(), 5)
expect_is(tmp$x(), "numeric")
expect_error(tmp$x("s"))
})
test_that("publicValue", {
x <- publicValue()
expect_is(x(), "NULL")
expect_equal(x(1), 1)
expect_equal(x(), 1)
expect_is(public(function() 1), "publicFunction")
expect_is(public(1), "publicValue")
})
test_that("Handling of reference classes as public member", {
refObj <- suppressWarnings({
defineClass("refObj", {
method <- public(function() cat("...\n"))
value <- public(1)
})
})
refObj2 <- suppressWarnings({
defineClass("refObj2", {
refObj <- public(refObj())
})
})
ro <- refObj2()
# ro$refObj$method()
ro$refObj$value()
ro$refObj$value(2)
ro$refObj$value()
is(ro$refObj, "refObj")
})
test_that("Access methods reference fields", {
suppressWarnings(
test <- defineClass("test", {
method <- public(function() {
"..."
})
})
)
suppressWarnings(
test1 <- defineClass("test1", {
refObj <- public(test())
method <- public(function() {
refObj$method()
})
})
)
suppressWarnings(
test2 <- defineClass("test2", {
refObj <- public(test1())
method <- public(function() {
refObj$method()
})
})
)
expect_equal(test()$method(), test1()$method())
instance <- test2()
expect_equal(instance$refObj$refObj$method(), test()$method())
expect_equal(instance$refObj$method(), test()$method())
expect_equal(instance$method(), test()$method())
})
test_that("Enforce privacy", {
test <- suppressWarnings({
test <- defineClass("test", {
x <- private(5)
})
})
tmp <- test()
expect_error(tmp$x)
})
test_that("Enforce public", {
test <- suppressWarnings({
test <- defineClass("testEnforcePublic", {
.x <- public(5)
})
})
tmp <- test()
expect_equal(tmp$.x(), 5)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.