155 lines
5.8 KiB
R
155 lines
5.8 KiB
R
|
###
|
||
|
|
||
|
test_PartitioningByEnd <- function()
|
||
|
{
|
||
|
## on a numeric vector, NG not supplied
|
||
|
current0 <- PartitioningByEnd()
|
||
|
checkTrue(validObject(current0))
|
||
|
|
||
|
target <- new("PartitioningByEnd")
|
||
|
checkIdentical(target, current0)
|
||
|
|
||
|
breakpoints <- c(0, 5, 5, 8)
|
||
|
current1 <- PartitioningByEnd(breakpoints)
|
||
|
checkTrue(validObject(current1))
|
||
|
checkIdentical(4L, length(current1))
|
||
|
checkIdentical(as.integer(breakpoints), end(current1))
|
||
|
checkIdentical(end(current1), cumsum(width(current1)))
|
||
|
checkIdentical(NULL, names(current1))
|
||
|
|
||
|
checkException(PartitioningByEnd(breakpoints, names=letters), silent=TRUE)
|
||
|
|
||
|
current2 <- PartitioningByEnd(breakpoints, names=letters[1:4])
|
||
|
checkTrue(validObject(current2))
|
||
|
checkIdentical(letters[1:4], names(current2))
|
||
|
|
||
|
names(breakpoints) <- names(current2)
|
||
|
current3 <- PartitioningByEnd(breakpoints)
|
||
|
checkIdentical(current2, current3)
|
||
|
|
||
|
current4 <- PartitioningByEnd(breakpoints, names=LETTERS[4:1])
|
||
|
checkIdentical(LETTERS[4:1], names(current4))
|
||
|
|
||
|
breakpoints <- rep.int(0, 1000)
|
||
|
current5 <- PartitioningByEnd(breakpoints)
|
||
|
checkTrue(validObject(current5))
|
||
|
checkIdentical(as.integer(breakpoints), end(current5))
|
||
|
checkIdentical(end(current5), cumsum(width(current5)))
|
||
|
|
||
|
## on a PartitioningByEnd object
|
||
|
checkIdentical(current1, PartitioningByEnd(current1)) # no-op
|
||
|
checkIdentical(current2, PartitioningByEnd(current2)) # no-op
|
||
|
checkException(PartitioningByEnd(current2, names=LETTERS), silent=TRUE)
|
||
|
current6 <- PartitioningByEnd(current2, names=names(current4))
|
||
|
checkTrue(validObject(current6))
|
||
|
checkIdentical(names(current4), names(current6))
|
||
|
|
||
|
## on CompressedList, SimpleList, IRanges, and list objects
|
||
|
do_checks <- function(x) {
|
||
|
checkIdentical(current1, PartitioningByEnd(x))
|
||
|
checkException(PartitioningByEnd(x, names=letters), silent=TRUE)
|
||
|
checkIdentical(current2, PartitioningByEnd(x, names=names(current2)))
|
||
|
names(x) <- names(current2)
|
||
|
checkIdentical(current2, PartitioningByEnd(x))
|
||
|
checkIdentical(current4, PartitioningByEnd(x, names=names(current4)))
|
||
|
}
|
||
|
x <- RleList(Rle(), Rle(-3, 5), Rle(), Rle(1:0, c(2,1)), compress=TRUE)
|
||
|
do_checks(x)
|
||
|
do_checks(as(x, "SimpleList"))
|
||
|
do_checks(as.list(x))
|
||
|
x <- IRanges(seq(148, by=-50, length.out=4), width=width(current1))
|
||
|
do_checks(x)
|
||
|
## TODO: Uncomment this when as.list() works again on IRanges objects
|
||
|
#do_checks(as.list(x))
|
||
|
do_checks(list(NULL, integer(5), complex(0), raw(3)))
|
||
|
}
|
||
|
|
||
|
test_PartitioningByWidth <- function()
|
||
|
{
|
||
|
## on a numeric vector, NG not supplied
|
||
|
current0 <- PartitioningByWidth()
|
||
|
checkTrue(validObject(current0))
|
||
|
|
||
|
target <- new("PartitioningByWidth")
|
||
|
checkIdentical(target, current0)
|
||
|
|
||
|
widths <- c(0, 5, 0, 3)
|
||
|
current1 <- PartitioningByWidth(widths)
|
||
|
checkTrue(validObject(current1))
|
||
|
checkIdentical(4L, length(current1))
|
||
|
checkIdentical(as.integer(widths), width(current1))
|
||
|
checkIdentical(end(current1), cumsum(width(current1)))
|
||
|
checkIdentical(NULL, names(current1))
|
||
|
|
||
|
checkException(PartitioningByWidth(widths, names=letters), silent=TRUE)
|
||
|
|
||
|
current2 <- PartitioningByWidth(widths, names=letters[1:4])
|
||
|
checkTrue(validObject(current2))
|
||
|
checkIdentical(letters[1:4], names(current2))
|
||
|
|
||
|
names(widths) <- names(current2)
|
||
|
current3 <- PartitioningByWidth(widths)
|
||
|
checkIdentical(current2, current3)
|
||
|
|
||
|
current4 <- PartitioningByWidth(widths, names=LETTERS[4:1])
|
||
|
checkIdentical(LETTERS[4:1], names(current4))
|
||
|
|
||
|
widths <- rep.int(0, 1000)
|
||
|
current5 <- PartitioningByWidth(widths)
|
||
|
checkTrue(validObject(current5))
|
||
|
checkIdentical(as.integer(widths), width(current5))
|
||
|
checkIdentical(end(current5), cumsum(width(current5)))
|
||
|
|
||
|
## on a PartitioningByWidth object
|
||
|
checkIdentical(current1, PartitioningByWidth(current1)) # no-op
|
||
|
checkIdentical(current2, PartitioningByWidth(current2)) # no-op
|
||
|
checkException(PartitioningByWidth(current2, names=LETTERS), silent=TRUE)
|
||
|
current6 <- PartitioningByWidth(current2, names=names(current4))
|
||
|
checkTrue(validObject(current6))
|
||
|
checkIdentical(names(current4), names(current6))
|
||
|
|
||
|
## on CompressedList, SimpleList, IRanges, and list objects
|
||
|
do_checks <- function(x) {
|
||
|
checkIdentical(current1, PartitioningByWidth(x))
|
||
|
checkException(PartitioningByWidth(x, names=letters), silent=TRUE)
|
||
|
checkIdentical(current2, PartitioningByWidth(x, names=names(current2)))
|
||
|
names(x) <- names(current2)
|
||
|
checkIdentical(current2, PartitioningByWidth(x))
|
||
|
checkIdentical(current4, PartitioningByWidth(x, names=names(current4)))
|
||
|
}
|
||
|
x <- RleList(Rle(), Rle(-3, 5), Rle(), Rle(1:0, c(2,1)), compress=TRUE)
|
||
|
do_checks(x)
|
||
|
do_checks(as(x, "SimpleList"))
|
||
|
do_checks(as.list(x))
|
||
|
x <- IRanges(seq(148, by=-50, length.out=4), width=width(current1))
|
||
|
do_checks(x)
|
||
|
## TODO: Uncomment this when as.list() works again on IRanges objects
|
||
|
#do_checks(as.list(x))
|
||
|
do_checks(list(NULL, integer(5), complex(0), raw(3)))
|
||
|
}
|
||
|
|
||
|
test_PartitioningByEndOrWidth_NG_supplied <- function()
|
||
|
{
|
||
|
for (class in c("PartitioningByEnd", "PartitioningByWidth")) {
|
||
|
CONSTRUCTOR <- get(class)
|
||
|
x <- c(3, 3, 4, 6)
|
||
|
NG <- 8
|
||
|
current1 <- CONSTRUCTOR(x, NG)
|
||
|
checkTrue(is(current1, class))
|
||
|
checkTrue(validObject(current1))
|
||
|
checkIdentical(8L, length(current1))
|
||
|
checkIdentical(tabulate(x, nbins=NG), width(current1))
|
||
|
|
||
|
checkException(CONSTRUCTOR(x, NG, names=letters[1:4]), silent=TRUE)
|
||
|
|
||
|
current2 <- CONSTRUCTOR(x, NG, names=letters[1:8])
|
||
|
checkTrue(validObject(current2))
|
||
|
checkIdentical(letters[1:8], names(current2))
|
||
|
|
||
|
names(x) <- letters[1:4]
|
||
|
current3 <- CONSTRUCTOR(x, NG)
|
||
|
checkIdentical(current1, current3)
|
||
|
}
|
||
|
}
|
||
|
|