Rev 70613 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
## test (non-conditional) explicit inheritancesetClass("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 * 1istopifnot(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 methodstopifnot(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 complexstopifnot(identical(size(xyc), length(x1)))removeClass("xy")removeGeneric("size")### Related to numeric <-> double <-> integer proposals, end of 2015, on R-develmyN <- 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 versionsnn <- myN(2*pi)## # current R | (not existing)## # -----------|----------class(getDataPart(m1)) # integer | numericclass(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")))