# ------------------------------------------------------------------------------ # future_modify() furrr_test_that("future_modify() default method works", { expect_identical(future_modify(list(1, 2), ~3), list(3, 3)) expect_identical( future_modify(data.frame(x = 1, y = 2), ~3), data.frame(x = 3, y = 3) ) }) # TODO: Fix `NULL` behavior to match what is done here # https://github.com/tidyverse/purrr/pull/754 furrr_test_that("future_modify() is not stable when returning `NULL`", { expect_identical( future_modify( list(1, 2), ~ if (.x == 1) { NULL } else { .x } ), list(2, 2) ) }) furrr_test_that("future_modify() variants work", { expect_identical(future_modify(c(1L, 2L, 3L), ~2L), rep(2L, 3)) expect_identical(future_modify(c(1, 2, 3), ~2), rep(2, 3)) expect_identical(future_modify(c("a", "b", "c"), toupper), c("A", "B", "C")) expect_identical(future_modify(c(TRUE, FALSE, TRUE), ~TRUE), rep(TRUE, 3)) }) furrr_test_that("future_modify() works", { x <- as.pairlist(list(1, 2)) expect_identical(class(future_modify(x, ~.x)), "pairlist") }) # ------------------------------------------------------------------------------ # future_modify_at() furrr_test_that("future_modify_at() default works", { expect_identical(future_modify_at(list(1, 2, 3), c(1, 3), ~5), list(5, 2, 5)) expect_identical( future_modify_at(data.frame(x = 1, y = 2), 2, ~3), data.frame(x = 1, y = 3) ) }) furrr_test_that("future_modify_at() variants works", { expect_identical(future_modify_at(c(1L, 2L, 3L), c(1, 3), ~5L), c(5L, 2L, 5L)) expect_identical(future_modify_at(c(1, 2, 3), c(1, 3), ~5), c(5, 2, 5)) expect_identical( future_modify_at(c("a", "b", "c"), c(1, 3), toupper), c("A", "b", "C") ) expect_identical( future_modify_at(c(TRUE, FALSE, TRUE), c(1, 3), ~NA), c(NA, FALSE, NA) ) }) # ------------------------------------------------------------------------------ # future_modify_if() furrr_test_that("future_modify_if() default works", { expect_identical(future_modify_if(list(1, 2), ~ .x == 1, ~3), list(3, 2)) expect_identical( future_modify_if(data.frame(x = 1, y = 2), ~ .x == 1, ~3), data.frame(x = 3, y = 2) ) }) furrr_test_that("future_modify_if() `.else` works for default", { expect_identical( future_modify_if(list(1, 2, 1, 4), ~ .x == 1, ~3, .else = ~4), list(3, 4, 3, 4) ) }) furrr_test_that("future_modify_if() variants works", { expect_identical( future_modify_if(c(1L, 2L, 3L), ~ .x == 1L, ~2L, .else = ~3L), c(2L, 3L, 3L) ) expect_identical( future_modify_if(c(1, 2, 3), ~ .x == 1, ~2, .else = ~3), c(2, 3, 3) ) expect_identical( future_modify_if(c("a", "b", "c"), ~ .x == "a", toupper, .else = ~"d"), c("A", "d", "d") ) expect_identical( future_modify_if(c(TRUE, FALSE, TRUE), ~ .x == TRUE, ~TRUE, .else = ~NA), c(TRUE, NA, TRUE) ) })