1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
context("utils")
test_that("merge_vectors behaves as expected", {
expect_identical(merge_vectors(c(a=1, b=2), c(c=3, d=4)), c(a=1, b=2, c=3, d=4))
# b appears twice; keep last version
expect_identical(merge_vectors(c(a=1, b=2), c(b=3, c=4)), c(a=1, b=3, c=4))
expect_identical(merge_vectors(c(a=1), c(b=2, b=3, c=4)), c(a=1, b=3, c=4))
# NULL value
expect_identical(merge_vectors(NULL, c(a=1, b=2)), c(a=1, b=2))
expect_identical(merge_vectors(c(a=1, b=2), NULL), c(a=1, b=2))
# Lists and empty lists
expect_identical(merge_vectors(list(a=1, b=2), list(b=3, c=4)),
list(a=1, b=3, c=4))
expect_identical(merge_vectors(list(a=1, b=2), list()),
list(a=1, b=2))
expect_identical(merge_vectors(list(), list(a=1, b=2)),
list(a=1, b=2))
expect_identical(merge_vectors(c(a=1, b=2), NULL), c(a=1, b=2))
expect_error(merge_vectors(c(1, 2), c(1, 2)))
expect_error(merge_vectors(c(1, 2), c(a=1, b=2)))
expect_error(merge_vectors(c(a=1, b=2), c(1, 2)))
})
test_that("all_same behaves as expected", {
expect_false(all_same(1:2))
expect_true(all_same(1))
expect_true(all_same(c(1, 1)))
expect_true(all_same(NA))
expect_true(all_same(c(NA, NA)))
expect_false(all_same(c(NA, 1)))
# Zero-length vector
expect_true(all_same(character()))
# List (instead of atomic vector)
expect_false(all_same(list()))
expect_false(all_same(list(numeric(0))))
})
test_that("empty behaves as expected", {
expect_true(empty(character(0)))
expect_true(empty(logical(0)))
expect_true(empty(list()))
expect_true(empty(new.env()))
# Named list with no elements
x <- list(a=1)
x$a <- NULL
expect_true(empty(x))
expect_false(empty(100))
expect_false(empty(list(40)))
e <- new.env()
e$x <- 10
expect_false(empty(e))
})
test_that("compact behaves as expected", {
# Compact drops empty vectors and lists, but keeps environments even if empty
e <- new.env()
e$x <- 10
ne <- new.env()
x <- list(a = 1, b = list(), c = character(0), e = e, ne = ne)
expect_identical(compact(x), list(a = 1, e = e, ne = ne))
})
|