R: Provide human-readable comparison of two objects

compare {testthat} | R Documentation

## Provide human-readable comparison of two objects

### Description

`compare` is similar to `base::all.equal()`, but somewhat buggy in its use of `tolerance`. Please use waldo instead.

### Usage

    compare(x, y, ...)

    ## Default S3 method:
    compare(x, y, ..., max_diffs = 9)

    ## S3 method for class 'character'
    compare(
      x,
      y,
      check.attributes = TRUE,
      ...,
      max_diffs = 5,
      max_lines = 5,
      width = cli::console_width()
    )

    ## S3 method for class 'numeric'
    compare(
      x,
      y,
      tolerance = testthat_tolerance(),
      check.attributes = TRUE,
      ...,
      max_diffs = 9
    )

    testthat_tolerance(x)

    ## S3 method for class 'POSIXt'
    compare(x, y, tolerance = 0.001, ..., max_diffs = 9)

### Arguments

`x, y` | Objects to compare
`...` | Additional arguments used to control specifics of comparison
`max_diffs` | Maximum number of differences to show
`check.attributes` | If `TRUE`, also checks values of attributes.
`max_lines` | Maximum number of lines to show from each difference
`width` | Width of output device
`tolerance` | Numerical tolerance: any differences (in the sense of `base::all.equal()`) smaller than this value will be ignored. The default tolerance is `sqrt(.Machine$double.eps)`, unless long doubles are not available, in which case the test is skipped.

### Examples

    # Character -----------------------------------------------------------------
    x <- c("abc", "def", "jih")
    compare(x, x)

    y <- paste0(x, "y")
    compare(x, y)

    compare(letters, paste0(letters, "-"))

    x <- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis cursus
     tincidunt auctor. Vestibulum ac metus bibendum, facilisis nisi non, pulvinar
     dolor. Donec pretium iaculis nulla, ut interdum sapien ultricies a. "
    y <- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis cursus
     tincidunt auctor. Vestibulum ac metus1 bibendum, facilisis nisi non, pulvinar
     dolor. Donec pretium iaculis nulla, ut interdum sapien ultricies a. "
    compare(x, y)
    compare(c(x, x), c(y, y))

    # Numeric -------------------------------------------------------------------

    x <- y <- runif(100)
    y[sample(100, 10)] <- 5
    compare(x, y)

    x <- y <- 1:10
    x[5] <- NA
    x[6] <- 6.5
    compare(x, y)

    # Compare ignores minor numeric differences in the same way
    # as all.equal.
    compare(x, x + 1e-9)

[Package testthat version 3.0.3 Index]