setClass("B", contains = "numeric")
xx <- new("B", 1)
stopifnot(is(tryCatch(names(xx) <- "A" , warning = function(e)e), "warning"))
names(xx) <- "A" # after this should not warn
stopifnot(is(tryCatch(names(xx) <- "B" , warning = function(e)e), "character"))
setClass("A", representation(xx = "numeric"))
a <- new("A", xx = 1)
stopifnot(is(tryCatch(names(a) <- "A" , error = function(e)e), "error"))
setClass("C", representation(xx = "numeric", names= "character"))
c <- new("C", xx = 1, names = "A")
c@names <- "B"
stopifnot(is(tryCatch(names(c) <- "A" , error = function(e)e), "error"))
setClass("D", contains = "numeric", representation(names = "character"))
d <- new("D", 1)
names(d) <- "A"
stopifnot(identical(d@names, "A"))
## test the checks on @<- primitive assignment
stopifnot(is(tryCatch(a@yy <- 1 , error = function(e)e), "error"))
stopifnot(is(tryCatch(a@xx <- "A" , error = function(e)e), "error"))
