context("unique concatenation of lists of SPCs (lunique)")
data(sp5)
# TODO: rebuild SPC datasets
metadata(sp5)$aqp_df_class <- "data.frame"
test_that("basic functionality", {
# ensure that first 9 profiles, in order, are returned
input <- lapply(list(c(1, 2, 3),
c(2, 3, 4),
c(5, 6, 7),
c(8, 9, 1)),
function(idx) {
sp5[idx, ]
})
output <- lunique(input)
expect_equal(do.call('c', lapply(output, function(x) {
match(profile_id(x), profile_id(sp5))
})), 1:9)
expect_equal(match(profile_id(pbindlist(output)), profile_id(sp5)), 1:9)
})
test_that("NAs and error handling", {
# check NA handling
input <- lapply(list(c(1, NA, 3), c(2, 3, 4), NA, c(8, 9, 1)),
function(idx) {
if (all(is.na(idx)))
return(NA)
sp5[idx[which(!is.na(idx))], ]
})
output <- lunique(input)
# profiles 1 and 3 from first set
expect_true(all(c("soil1", "soil100") %in% profile_id(output[[1]])))
# profiles 2 and 4 from second set
expect_true(all(c("soil10", "soil101") %in% profile_id(output[[2]])))
# profiles 8 and 9 from fourth set
expect_true(all(c("soil105", "soil106") %in% profile_id(output[[4]])))
# total of four sets
expect_equal(length(output), 4)
# of which the third contains NA
expect_equal(which(is.na(output)), 3)
# we get a warning when combining, but it is successful
expect_message(res <- length(profile_id(pbindlist(output))),
regexp = "pbindlist: one or more input list elements is NA")
# the resulting SoilProfileCollection has 6 profiles
expect_equal(res, 6)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.