tests/testthat/test-generic-spec.R

test_that("can standardise generics", {
  foo_S7 <- new_generic("foo", "x")
  methods::setGeneric("foo_S4", function(x) {})

  expect_equal(as_generic(foo_S7), foo_S7)
  expect_equal(as_generic(foo_S4), foo_S4)

  expect_equal(as_generic(sum), S3_generic(sum, "sum"))
  expect_equal(as_generic(mean), S3_generic(mean, "mean"))

  expect_snapshot(as_generic(function() {}), error = TRUE)
  expect_snapshot(as_generic(1), error = TRUE)
})

test_that("base ops use S7 shim", {
  expect_equal(as_generic(`+`), base_ops[["+"]])
  if(getRversion() >= "4.3.0")
    expect_equal(as_generic(`%*%`), base_matrix_ops[["%*%"]])
})

Try the S7 package in your browser

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

S7 documentation built on April 3, 2025, 10:50 p.m.