tests/testthat/test-iterator.R

test_that("can use reticulate iterators", {
  skip_if_not_installed("reticulate")
  skip_on_cran()
  skip_on_ci()

  reticulate::py_run_string("
def first_n(n):
    num = 1
    while num <= n:
        yield num
        num += 1
")

  expect_equal(
    collect(reticulate::py$first_n(3)),
    as.list(1:3)
  )

  out <- NULL
  loop(for (x in reticulate::py$first_n(3)) {
    out <- c(out, x)
  })
  expect_equal(out, 1:3)


})


test_that("can use reticulate iteratables", {
  skip_if_not_installed("reticulate")
  skip_on_cran()
  skip_on_ci()

  i <- 0L
  loop(for (el in reticulate::py_eval("range(3)")) {
    i <- i + el
  })
  expect_equal(i, 3L)
})
lionel-/flowery documentation built on March 12, 2024, 4:29 p.m.