blob: 6e648a8f741549c98e89ae118d66a92c808d81ec [file] [log] [blame]
## test (non-conditional) explicit inheritance
setClass("xy", representation(x="numeric", y="numeric"))
setIs("xy", "complex",
coerce = function(from) complex(real = from@x, imaginary = from@y),
replace = function(from, value) {
from@x <- Re(value)
from@y <- Im(value)
from
})
set.seed(124)
x1 <- rnorm(10)
y1 <- rnorm(10)
cc <- complex(real = x1, imaginary=y1)
xyc <- new("xy", x = x1, y = y1)
stopifnot(identical(cc, as(xyc, "complex")))
as(xyc, "complex") <- cc * 1i
stopifnot(identical(xyc, new("xy", x = -y1, y = x1)))
setGeneric("size", function(x)standardGeneric("size"))
## check that generic for size() was created w/o a default method
stopifnot(is(size, "standardGeneric"),
is.null(selectMethod("size", "ANY",optional=TRUE)))
setMethod("size", "vector", function(x)length(x))
## class "xy" should inherit the vector method through complex
stopifnot(identical(size(xyc), length(x1)))
removeClass("xy")
removeGeneric("size")
### Related to numeric <-> double <-> integer proposals, end of 2015, on R-devel
myN <- setClass("myN", contains="numeric")
myNid <- setClass("myNid", contains="numeric", representation(id="character"))
NN <- setClass("NN", representation(x="numeric"))
(m1 <- myN (1:3))
(m2 <- myNid(1:3, id = "i3"))
tools::assertError(NN (1:3))# in all R versions
nn <- myN(2*pi)
## # current R | (not existing)
## # -----------|----------
class(getDataPart(m1)) # integer | numeric
class(getDataPart(m2)) # integer | numeric
## check for now [[conceivably, these *could* change !]] :
stopifnot(identical(getDataPart(m1), 1:3),
identical(getDataPart(m2), 1:3),
identical(S3Part(m1, strict=TRUE), 1:3),
identical(S3Part(m2, strict=TRUE), 1:3),
identical(2*pi, S3Part(nn, strict = TRUE)))
if(FALSE) ## --- all these fail still:
stopifnot(
identical(as(1L, "numeric"), as.numeric(1L))
,
identical(as(1L, "numeric"), 1.0)
,
is.double(as(1L, "double"))
)