• expect_setequal(x, y) tests that every element of x occurs in y, and that every element of y occurs in x.

• expect_contains(x, y) tests that x contains every element of y (i.e. y is a subset of x).

• expect_in(x, y) tests every element of x is in y (i.e. x is a subset of y).

• expect_mapequal(x, y) tests that x and y have the same names, and that x[names(y)] equals y.

## Usage

expect_setequal(object, expected)

expect_mapequal(object, expected)

expect_contains(object, expected)

expect_in(object, expected)

## Arguments

object, expected

Computation and value to compare it to.

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

## Details

Note that expect_setequal() ignores names, and you will be warned if both object and expected have them.

## Examples

expect_setequal(letters, rev(letters))
show_failure(expect_setequal(letters[-1], rev(letters)))
#> Failed expectation:
#> letters[-1] (actual) and rev(letters) (expected) don't have the same values.
#> * Only in actual: "a"
#>

x <- list(b = 2, a = 1)
expect_mapequal(x, list(a = 1, b = 2))
show_failure(expect_mapequal(x, list(a = 1)))
#> Failed expectation:
#> Names absent from expected: "b",
show_failure(expect_mapequal(x, list(a = 1, b = "x")))
#> Failed expectation:
#> act$val[exp_nms] (actual) not equal to exp$val (expected).
#>
#> actual$b is a double vector (2) #> expected$b is a character vector ('x')
show_failure(expect_mapequal(x, list(a = 1, b = 2, c = 3)))
#> Failed expectation:
#> Names absent from object: "c",