Nothing
context("testing expandGridIter")
test_that("expandGridIter produces correct results", {
CartesianClassTest <- function(lst) {
myResults <- vector(mode = "logical")
myRows <- expandGridCount(lst)
a <- expandGridIter(lst)
b <- expandGrid(lst)
# .method("summary", &CartesianClass::summary)
myResults <- c(myResults, isTRUE(
all.equal(a@summary()$totalResults, myRows)
))
# .method("sourceVector", &CartesianClass::sourceVector)
myResults <- c(
myResults,
isTRUE(all.equal(unname(lst), unname(a@sourceVector())))
)
# .method("front", &CartesianClass::front)
# .method("currIter", &CartesianClass::currIter)
# .method("back", &CartesianClass::back)
# .method("currIter", &CartesianClass::currIter)
myResults <- c(myResults, isTRUE(all.equal(a@front(), b[1, ])))
myResults <- c(myResults, isTRUE(all.equal(a@currIter(), b[1, ])))
temp <- b[myRows, ]
rownames(temp) <- NULL
myResults <- c(myResults, isTRUE(all.equal(a@back(), temp)))
myResults <- c(myResults, isTRUE(all.equal(a@currIter(), temp)))
# .method("startOver", &CartesianClass::startOver)
a@startOver()
a@back()
msg <- capture.output(noMore <- a@nextNIter(1))
myResults <- c(myResults, is.null(noMore))
myResults <- c(myResults, grepl("No more results. To see the last ", msg[1]))
msg <- capture.output(noMore <- a@currIter())
myResults <- c(myResults, grepl("No more results. To see the last ", msg[1]))
a@startOver()
a@back()
msg <- capture.output(noMore <- a@nextRemaining())
myResults <- c(myResults, is.null(noMore))
myResults <- c(myResults, grepl("No more results. To see the last ", msg[1]))
a@startOver()
a1 <- b
for (i in 1:myRows) {
a1[i, ] <- a@nextIter()
}
# .method("nextIter", &CartesianClass::nextIter)
myResults <- c(myResults, isTRUE(all.equal(a1, b)))
# .method("startOver", &CartesianClass::startOver)
a@startOver()
numTest <- as.integer(myRows / 3);
s <- 1L
e <- numTest
# .method("nextNIter", &CartesianClass::nextNumIters)
for (i in 1:3) {
temp <- b[s:e, ]
rownames(temp) <- NULL
iter_df <- a@nextNIter(numTest)
myResults <- c(
myResults, isTRUE(all.equal(iter_df, temp))
)
s <- e + 1L
e <- e + numTest
}
# .method("nextRemaining", &CartesianClass::nextGather)
a@startOver()
myResults <- c(myResults, isTRUE(all.equal(a@nextRemaining(), b)))
# .method("[[", &CartesianClass::randomAccess)
samp <- sample(myRows, numTest)
temp <- b[samp, ]
rownames(temp) <- NULL
myResults <- c(myResults, isTRUE(all.equal(a[[samp]], temp)))
rm(a, a1, b, temp, iter_df)
gc()
all(myResults)
}
## INTEGERS
myList <- list(1:5, 2:6, 3:7)
expect_true(CartesianClassTest(myList))
expect_true(CartesianClassTest(lapply(myList, sample)))
## RAW
myList <- list(as.raw(1:5), as.raw(2:6), as.raw(3:7))
expect_true(CartesianClassTest(myList))
expect_true(CartesianClassTest(lapply(myList, sample)))
## CHARACTER
myList <- list(letters[1:5], letters[2:6], letters[3:7])
expect_true(CartesianClassTest(myList))
expect_true(CartesianClassTest(lapply(myList, sample)))
## COMPLEX
myList <- list(as.complex(1:5 + 1i), as.complex(2:6 + 1i),
as.complex(3:7 + 1i))
expect_true(CartesianClassTest(myList))
expect_true(CartesianClassTest(lapply(myList, sample)))
## DOUBLE
myList <- list(1:5 + 0.1, 2:6 + 0.1)
expect_true(CartesianClassTest(myList))
expect_true(CartesianClassTest(lapply(myList, sample)))
## BOOLEAN
myList <- rep(list(c(TRUE, FALSE)), 10)
expect_true(CartesianClassTest(myList))
expect_true(CartesianClassTest(lapply(myList, sample)))
## DATA.FRAME
myList <- list(1:5, as.complex(2:6 + 1i), letters[1:4], letters[2:4])
expect_true(CartesianClassTest(myList))
expect_true(CartesianClassTest(lapply(myList, sample)))
## DATA.FRAME w/ doubles and factors
myList <- list(1:5 + 0.1, factor(2:6 + 0.1))
expect_true(CartesianClassTest(myList))
expect_true(CartesianClassTest(lapply(myList, sample)))
## DATA.FRAME w/ integers and factors
myList <- list(1:5, factor(2:6), as.raw(sample(10, 4)), c(TRUE, FALSE))
expect_true(CartesianClassTest(myList))
expect_true(CartesianClassTest(lapply(myList, sample)))
## FACTORS with same levels. Should return a matrix.
myList <- list("v1" = factor(1:5, levels = 1:10),
"v2" = factor(2:6, levels = 1:10))
expect_true(CartesianClassTest(myList))
expect_true(CartesianClassTest(lapply(myList, sample)))
## FACTORS with different levels. Should return a data.frame.
myList <- list("v1" = factor(1:5), "v2" = factor(2:6))
expect_true(CartesianClassTest(myList))
expect_true(CartesianClassTest(lapply(myList, sample)))
## INTEGERS w/ custom names
myList <- list("name1" = 1:5, 2:6)
expect_true(CartesianClassTest(myList))
expect_true(CartesianClassTest(lapply(myList, sample)))
##******** BIG TESTS *********##
CartesianClassBigZTest <- function(lst, lenCheck = 500) {
myResults <- vector(mode = "logical")
myRows <- expandGridCount(lst)
a <- expandGridIter(lst)
b1 <- expandGrid(lst, upper = lenCheck)
b2 <- expandGrid(lst, lower = gmp::sub.bigz(myRows, lenCheck - 1))
# .method("summary", &CartesianClass::summary)
myResults <- c(myResults, isTRUE(
all.equal(a@summary()$totalResults, myRows)
))
# .method("sourceVector", &CartesianClass::sourceVector)
myResults <- c(
myResults,
isTRUE(all.equal(unname(lst), unname(a@sourceVector())))
)
# .method("front", &CartesianClass::front)
# .method("currIter", &CartesianClass::currIter)
# .method("back", &CartesianClass::back)
# .method("currIter", &CartesianClass::currIter)
myResults <- c(myResults, isTRUE(all.equal(a@front(), b1[1, ])))
myResults <- c(myResults, isTRUE(all.equal(a@currIter(), b1[1, ])))
temp <- b2[lenCheck, ]
rownames(temp) <- NULL
myResults <- c(myResults, isTRUE(all.equal(a@back(), temp)))
myResults <- c(myResults, isTRUE(all.equal(a@currIter(), temp)))
# .method("startOver", &CartesianClass::startOver)
a@startOver()
a@back()
msg <- capture.output(noMore <- a@nextNIter(1))
myResults <- c(myResults, is.null(noMore))
myResults <- c(myResults, grepl("No more results. To see the last ", msg[1]))
msg <- capture.output(noMore <- a@currIter())
myResults <- c(myResults, grepl("No more results. To see the last ", msg[1]))
a@startOver()
a@back()
msg <- capture.output(noMore <- a@nextRemaining())
myResults <- c(myResults, is.null(noMore))
myResults <- c(myResults, grepl("No more results. To see the last ", msg[1]))
a@startOver()
a1 <- b1
for (i in 1:lenCheck) {
a1[i, ] <- a@nextIter()
}
# .method("nextIter", &CartesianClass::nextIter)
myResults <- c(myResults, isTRUE(all.equal(a1, b1)))
# .method("startOver", &CartesianClass::startOver)
a@startOver()
numTest <- as.integer(lenCheck / 3);
s <- 1L
e <- numTest
# .method("nextNIter", &CartesianClass::nextNumIters)
for (i in 1:3) {
temp <- b1[s:e, ]
rownames(temp) <- NULL
iter_df <- a@nextNIter(numTest)
myResults <- c(
myResults, isTRUE(all.equal(iter_df, temp))
)
s <- e + 1L
e <- e + numTest
}
# .method("nextRemaining", &CartesianClass::nextGather)
a@startOver()
a[[gmp::sub.bigz(myRows, lenCheck)]]
myResults <- c(myResults, isTRUE(all.equal(a@nextRemaining(), b2)))
# .method("[[", &CartesianClass::randomAccess)
samp1 <- sample(lenCheck, 5)
samp2 <- gmp::sub.bigz(myRows, lenCheck) + gmp::as.bigz(samp1)
temp <- b1[samp1, ]
rownames(temp) <- NULL
myResults <- c(myResults, isTRUE(all.equal(a[[samp1]], temp)))
temp <- b2[samp1, ]
rownames(temp) <- NULL
myResults <- c(myResults, isTRUE(all.equal(a[[samp2]], temp)))
rm(a, a1, b1, b2, temp, iter_df)
gc()
all(myResults)
}
set.seed(8675309)
## INTEGERS
myList <- Map(\(x, y) x:y, 10:30, 30:50)
expect_true(CartesianClassBigZTest(myList))
expect_true(CartesianClassBigZTest(lapply(myList, sample)))
## DOUBLES
myList <- Map(\(x, y) x:y + rnorm(1), 10:30, 30:50)
expect_true(CartesianClassBigZTest(myList))
expect_true(CartesianClassBigZTest(lapply(myList, sample)))
## Non-GMP
myList <- Map(\(x, y) x:y + rnorm(1), 10:15, 16:21)
expect_true(CartesianClassBigZTest(myList))
expect_true(CartesianClassBigZTest(lapply(myList, sample)))
## BOOLEANS
myList <- rep(list(c(TRUE, FALSE)), 60)
expect_true(CartesianClassBigZTest(myList))
expect_true(CartesianClassBigZTest(lapply(myList, sample)))
## CHARACTERS
myList <- rep(list(letters, LETTERS, state.abb), 4)
expect_true(CartesianClassBigZTest(myList))
expect_true(CartesianClassBigZTest(lapply(myList, sample)))
## DATA.FRAME
myList <- rep(
list(LETTERS, unique(state.region), c(TRUE, FALSE),
as.raw(1:10), as.complex(10:1 + 1i), 1:100), 4
)
expect_true(CartesianClassBigZTest(myList))
expect_true(CartesianClassBigZTest(lapply(myList, sample)))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.