blob: 4e27f2752b9f28905c19e53d9c901f8c60e5d1ac [file] [log] [blame]
setClass("maybe")
setClass("A", representation(x = "numeric"))
setIs("A", "maybe",
test = function(object)length(object@x) >= 1 && object@x[[1]] > 0,
coerce = function(from)from,
replace = function(from, value)
stop("meaningless to replace the \"maybe\" part of an object"))
aa <- new("A", x=1)
setGeneric("ff", function(x)"default ff")
## test that the setGeneric() call created the generic & default
stopifnot(is(ff, "standardGeneric"),
identical(body(getMethod("ff","ANY")), "default ff"))
ffMaybe <- function(x) "ff maybe method"
setMethod("ff", "maybe", ffMaybe)
aa2 <- new("A", x = -1) # condition not TRUE
stopifnot(identical(ff(aa), "default ff"),
identical(ff(aa2), "default ff"))# failed in R 2.11.0
## a method to test the condition
setMethod("ff", "A",
function(x) {
if(is(x, "maybe"))
ffMaybe(x)
else
callNextMethod()
})
stopifnot(identical(ff(aa), "ff maybe method"),
identical(ff(aa2), "default ff"))
removeClass("A")
removeClass("maybe")
removeGeneric("ff")