testthat (version 2.2.1)

inheritance-expectations: Expectation: does the object inherit from a S3 or S4 class, or is it a base type?

Description

See https://adv-r.hadley.nz/oo.html for an overview of R's OO systems, and the vocabulary used here.

  • expect_type(x, type) checks that typeof(x) is type.

  • expect_s3_class(x, class) checks that x is an S3 object that inherits() from class

  • expect_s4_class(x, class) checks that x is an S4 object that is() class.

Usage

expect_type(object, type)

expect_s3_class(object, class, exact = FALSE)

expect_s4_class(object, class)

Arguments

object

Object to test.

Supports limited unquoting to make it easier to generate readable failures within a function or for loop. See quasi_label for more details.

type

String giving base type (as returned by typeof()).

class

character vector of class names

exact

If FALSE, the default, checks that object inherits from class. If TRUE, checks that object has a class that's identical to class.

See Also

Other expectations: comparison-expectations, equality-expectations, expect_length, expect_match, expect_named, expect_null, logical-expectations, output-expectations

Examples

Run this code
# NOT RUN {
x <- data.frame(x = 1:10, y = "x")
# A data frame is an S3 object with class data.frame
expect_s3_class(x, "data.frame")
show_failure(expect_s4_class(x, "data.frame"))
# A data frame is built from a list:
expect_type(x, "list")

# An integer vector is an atomic vector of type "integer"
expect_type(x$x, "integer")
# It is not an S3 object
show_failure(expect_s3_class(x$x, "integer"))

# By default data.frame() converts characters to factors:
show_failure(expect_type(x$y, "character"))
expect_s3_class(x$y, "factor")
expect_type(x$y, "integer")
# }

Run the code above in your browser using DataCamp Workspace