tests/testthat/test-ichunk.R

test_that("i_chunk functions properly without using default value", {
  it <- iteror(letters[1:3])
  it_chunk <- i_chunk(it, size=3)
  expect_equal(nextOr(it_chunk, NULL), as.list(letters[1:3]))
})

test_that("i_chunk does not fill if fill value unspecified", {
  it <- iteror(letters[1:3])
  it_chunk <- i_chunk(it, size=2)
  expect_equal(nextOr(it_chunk, NULL), as.list(letters[1:2]))
  expect_equal(nextOr(it_chunk, NULL), list(letters[3]))
})

test_that("i_chunk functions properly when fill value is specified", {
  it <- iteror(letters[1:3])
  it_chunk <- i_chunk(it, size=2, fill='weeeeee')
  expect_equal(nextOr(it_chunk, NULL), as.list(letters[1:2]))
  expect_equal(nextOr(it_chunk, NULL), list(letters[3], 'weeeeee'))
})

test_that("i_chunk rejects non-positive or non-numeric n", {
  it <- iteror(letters)
  error_msg <- "size' must be a positive number of length 1"
  expect_error(i_chunk(it, size=-1), error_msg)
  expect_error(i_chunk(it, "1"), error_msg)
})

test_that("non-integer size", {
  it <- i_chunk(letters, 3.5, "character")
  pasta <- i_apply(it, paste0, collapse="")
  expect_equal(as.character(pasta),
               c("abcd", "efg", "hijk", "lmn", "opqr", "stu", "vwxy", "z"))
})

test_that("test01", {
    x <- 1:10
    actual <- as.list(i_chunk(x, 3))
    expected <- list(as.list(1:3), as.list(4:6), as.list(7:9),
        as.list(10))
    expect_equal(expected, actual)
})

test_that("test02", {
    n <- 13
    chunkSize <- 7
    x <- rnorm(n * chunkSize)
    actual <- as.list(i_chunk(x, chunkSize))
    expect_true(length(actual) == n)
    for (chunk in actual) {
        expect_true(length(chunk) == chunkSize)
    }
    y <- unlist(actual)
    expect_equal(y, x)
})

Try the iterors package in your browser

Any scripts or data that you put into this service are public.

iterors documentation built on May 31, 2023, 5:36 p.m.