test_that("[.tbl_df supports subsetting with a logical matrix (#649)", {
  foo <- tibble(x = 1:10, y = 1:10, z = letters[1:10])

  m <- matrix(c(rep(FALSE, 8), rep(TRUE, 3), rep(FALSE, 19)), ncol = 3)
  expect_equal(foo[m], c(9, 10, 1))

  m <- matrix(c(rep(FALSE, 18), rep(TRUE, 3), rep(FALSE, 9)), ncol = 3)
  expect_error(foo[m], class = "vctrs_error_incompatible_type")
})

test_that("[<-.tbl_df supports subsetting with a logical matrix (#649)", {
  foo <- tibble(x = 1:10, y = 1:10, z = letters[1:10])

  m <- matrix(c(rep(FALSE, 8), rep(TRUE, 3), rep(FALSE, 19)), ncol = 3)
  foo[m] <- 1
  expect_equal(foo[m], c(1, 1, 1))

  expect_error(foo[m] <- 1:3)

  m <- matrix(c(rep(FALSE, 18), rep(TRUE, 3), rep(FALSE, 9)), ncol = 3)
  expect_snapshot(error = TRUE, {
    foo[m] <- 1
  })
})
