85 lines
3.6 KiB
R
85 lines
3.6 KiB
R
test_AtomicList_constructors <- function() {
|
|
subclasses <- c(logical="LogicalList",
|
|
integer="IntegerList",
|
|
#double="NumericList",
|
|
numeric="NumericList",
|
|
complex="ComplexList",
|
|
character="CharacterList",
|
|
raw="RawList",
|
|
Rle="RleList")
|
|
for (elt_type in names(subclasses)) {
|
|
subclass <- subclasses[[elt_type]]
|
|
constructor <- get(subclass)
|
|
vec1 <- get(elt_type)(6)
|
|
vec2 <- get(elt_type)(8)
|
|
target <- list(A=vec1, B=vec2)
|
|
for (compress in c(TRUE, FALSE)) {
|
|
current <- constructor(A=vec1, B=vec2, compress=compress)
|
|
checkTrue(is(current, subclass))
|
|
checkIdentical(compress, is(current, "CompressedList"))
|
|
checkIdentical(elt_type, elementType(current))
|
|
checkIdentical(target, as.list(current))
|
|
checkIdentical(unname(target), as.list(current, use.names=FALSE))
|
|
}
|
|
}
|
|
}
|
|
|
|
test_AtomicList_general <- function() {
|
|
vec1 <- c(1L,2L,NA,3L,NA,5L,2L,8L)
|
|
vec2 <- c(NA,15L,45L,20L,NA,1L,15L,100L,80L,5L,NA)
|
|
for (compress in c(TRUE, FALSE)) {
|
|
for (type in c("IntegerList", "RleList")) {
|
|
list1 <- do.call(type, list(one = vec1, vec2, compress = compress))
|
|
checkIdentical(as.list(list1 %in% c(1L, 5L)),
|
|
lapply(list1, "%in%", c(1L, 5L)))
|
|
checkIdentical(lapply(list1 %in%
|
|
IntegerList(one = vec1, vec2,
|
|
compress = compress),
|
|
as.vector),
|
|
mapply("%in%", lapply(list1, as.vector),
|
|
list(one = vec1, vec2)))
|
|
checkIdentical(as.list(is.na(list1)), lapply(list1, is.na))
|
|
checkIdentical(as.list(match(list1, c(1L, 5L))),
|
|
lapply(list1, match, c(1L, 5L)))
|
|
checkIdentical(lapply(match(list1,
|
|
IntegerList(one = vec1, vec2,
|
|
compress = compress)),
|
|
as.vector),
|
|
mapply(match, lapply(list1, as.vector),
|
|
list(one = vec1, vec2)))
|
|
checkIdentical(as.list(sort(list1)), lapply(list1, sort))
|
|
checkIdentical(as.list(unique(list1)), lapply(list1, unique))
|
|
}
|
|
}
|
|
}
|
|
|
|
test_RleList_methods <- function() {
|
|
x1 <- RleList(11:15, 15L, integer(0), 15:16, compress=FALSE)
|
|
x2 <- RleList(11:15, 15L, integer(0), 15:16, compress=TRUE)
|
|
checkIdentical(as(runValue(x1), "CompressedIntegerList"), runValue(x2))
|
|
checkIdentical(as(runLength(x1), "CompressedIntegerList"), runLength(x2))
|
|
checkIdentical(as(ranges(x1), "CompressedIRangesList"), ranges(x2))
|
|
|
|
a1 <- Rle(1, 999722111)
|
|
a2 <- 20 * a1
|
|
a <- RleList(a1, a2, compress=TRUE)
|
|
b1 <- c(a1, a1)
|
|
b2 <- 20 * b1
|
|
b <- RleList(b1, b2, compress=FALSE)
|
|
## FIXME: 'a1 <= 19:21' is taking forever and eats up all the memory in
|
|
## BioC <= 2.12! Seems like 'a1' is expanded to integer vector first, which
|
|
## is not good :-/
|
|
#for (y in list(8L, 8, 19:21)) {
|
|
for (y in list(8L, 8)) {
|
|
## With a CompressedRleList
|
|
target <- RleList(a1 <= y, a2 <= y, compress=TRUE)
|
|
current <- a <= y
|
|
checkIdentical(target, current)
|
|
## With a SimpleRleList
|
|
target <- RleList(b1 <= y, b2 <= y, compress=FALSE)
|
|
current <- b <= y
|
|
checkIdentical(target, current)
|
|
}
|
|
}
|
|
|