test_that("empty input returns a list, but after the index size check", { expect_equal(phop_index(list(integer(), integer()), integer(), integer(), integer(), ~.x), list()) expect_equal(phop_index(list(integer(), 1), integer(), integer(), integer(), ~.x), list()) expect_equal(phop_index(list(1, integer()), integer(), integer(), integer(), ~.x), list()) expect_error(phop_index(list(integer(), integer()), 1, integer(), integer(), ~.x), class = "slider_error_index_incompatible_size") }) test_that("completely empty input returns a list", { expect_equal(phop_index(list(), integer(), integer(), integer(), ~.x), list()) }) test_that("empty `.l` and `.i`, but size `n > 0` `.starts` and `.stops` returns size `n` ptype", { expect_equal(phop_index(list(), integer(), 1:2, 2:3, ~2), list(2, 2)) }) test_that("can't access non-existant `.x` with empty `.l` and `.i`, but size `n > 0` `.starts` and `.stops`", { # Note: Error message seems platform dependent expect_error(phop_index(list(), integer(), 1:2, 2:3, ~.x)) }) test_that("empty `.l` and `.i`, but size `n > 0` `.starts` and `.stops`: sizes and types are checked first", { expect_snapshot({ (expect_error(phop_index(list(), integer(), 1:3, 1:2, ~.x), class = "vctrs_error_incompatible_size")) (expect_error(phop_index(list(), integer(), 1, "x", ~.x), class = "vctrs_error_incompatible_type")) }) })