Nothing
NAME <- "diffPrint"
source(file.path('_helper', 'init.R'))
# Note, atomic prints happen in different test file
# - Matrices -------------------------------------------------------------------
mx.2 <- matrix(1:100, ncol=2)
mx.4 <- mx.3 <- mx.2
mx.3[31, 2] <- 111L
mx.3a <- mx.3[-31, ]
set.seed(2)
mx.4[cbind(sample(1:50, 6), sample(1:2, 6, replace=TRUE))] <-
sample(-(1:50), 6)
mx.5 <- matrix(1:9, 3)
mx.6 <- matrix(12:1, 4)
mx.6[4,] <- c(3L, 6L, 9L)
# single value difference
all.equal(as.character(diffPrint(mx.2, mx.3)), rdsf(100))
# single value unified
all.equal(as.character(diffPrint(mx.2, mx.3, mode="unified")), rdsf(150))
# single value context
all.equal(as.character(diffPrint(mx.2, mx.3, mode="context")), rdsf(175))
# missing row
all.equal(as.character(diffPrint(mx.2, mx.3a)), rdsf(200))
all.equal(as.character(diffPrint(mx.2, mx.3a, mode="unified")), rdsf(300))
# More differences
all.equal(as.character(diffPrint(mx.2, mx.4)), rdsf(400))
all.equal(as.character(diffPrint(mx.2, mx.4, mode="unified")), rdsf(500))
# Testing alignments
all.equal(as.character(diffPrint(mx.5, mx.6)), rdsf(600))
all.equal(as.character(diffPrint(mx.5, mx.6, mode="unified")), rdsf(700))
all.equal(as.character(diffPrint(mx.5, mx.6, mode="context")), rdsf(800))
# More complex matrix
set.seed(2)
A <- B <- matrix(sample(1:80), nrow=16)
B[cbind(sample(5:16, 4), sample(1:5, 4))] <- sample(30:80, 4)
all.equal(as.character(diffPrint(A, B)), rdsf(900))
all.equal(as.character(diffPrint(A, B, mode="unified")), rdsf(1000))
all.equal(as.character(diffPrint(A, B, mode="context")), rdsf(1100))
# Style matrices
all.equal(as.character(diffPrint(diffobj:::.mx1, diffobj:::.mx2)), rdsf(1200))
# - Lists ----------------------------------------------------------------------
all.equal(as.character(diffPrint(lst.1, lst.3)), rdsf(1300))
all.equal(as.character(diffPrint(lst.1, lst.3, mode="unified")), rdsf(1400))
all.equal(as.character(diffPrint(lst.4, lst.5)), rdsf(1500))
all.equal(as.character(diffPrint(lst.4, lst.5, mode="context")), rdsf(1600))
# Nested first element (https://github.com/brodieG/diffobj/issues/46)
all.equal(
as.character(diffPrint(list(1, list(2, list(1:3))), list(list(list(1:3))))),
rdsf(1650)
)
# Interesting but relatively slow example so we don't actually run it in
# tests
# diffPrint(unclass(mdl1), unclass(mdl2))
# diffPrint(unclass(mdl1), unclass(mdl2), mode="unified")
# - Data Frames ----------------------------------------------------------------
all.equal(as.character(diffPrint(iris.s, iris.2)), rdsf(1700))
all.equal(
as.character(diffPrint(iris.s, iris.2, mode="sidebyside")), rdsf(1800)
)
all.equal(as.character(diffPrint(iris.s, iris.c)), rdsf(1900))
all.equal(as.character(diffPrint(iris.s, iris.3)), rdsf(2000))
all.equal(
as.character(diffPrint(iris.s, iris.3, mode="sidebyside")), rdsf(2100)
)
all.equal(as.character(diffPrint(iris.s, iris.4, mode="unified")), rdsf(2150))
all.equal(
as.character(diffPrint(iris.s, iris.4, mode="sidebyside")), rdsf(2200)
)
all.equal(
as.character(diffPrint(iris.5, iris.4, mode="sidebyside")), rdsf(2250)
)
all.equal(as.character(diffPrint(iris.3a, iris.4a)), rdsf(2300))
all.equal(
as.character(diffPrint(iris.s, iris.3, mode="sidebyside")), rdsf(2350)
)
all.equal(as.character(diffPrint(iris.s, iris.s[-2])), rdsf(2370))
# This one is interesting because the input is pathological because there
# is one line that matches exactly between the two and as such creates a
# matching hunk, but it really is matching by coincidence.
all.equal(
as.character(diffPrint(iris.s, iris.s[-2], mode="sidebyside")), rdsf(2383)
)
# Possible example where we may not want to trim the row headers (Issue #39)
all.equal(
as.character(diffPrint(cars[1:5,], mtcars[1:5,], mode="sidebyside")),
rdsf(2380)
)
# - Guides ---------------------------------------------------------------------
# Most guides tests are in the guides file, but this confirms interface works
# when starting at `diffPrint` instead of internally
all.equal(
as.character(
diffPrint(
iris.s, iris.4, mode="sidebyside", guides=function(x, y) integer()
) ),
rdsf(2400)
)
all.equal(
as.character(diffPrint(iris.s, iris.4, mode="sidebyside", guides=FALSE)),
rdsf(2500)
)
# - Arrays
arr.1 <- arr.2 <- array(1:24, c(4, 2, 3))
arr.2[c(3, 20)] <- 99L
all.equal(as.character(diffPrint(arr.1, arr.2)), rdsf(2600))
# - Mixed
all.equal(
as.character(diffPrint(list(1, 2, 3), matrix(1:9, 3))),
rdsf(2700)
)
all.equal(
as.character(diffPrint(list(25, 2, 3), matrix(1:9, 3))),
rdsf(2800)
)
all.equal(
as.character(
diffPrint(list(c(1, 4, 7), c(2, 5, 8), c(3, 6, 9)), matrix(1:9, 3))
),
rdsf(2900)
)
# - `unitizer` corner case -----------------------------------------------------
res1 <- structure(
c(-1717, 101, 0.938678984853783),
.Names = c("intercept", "slope", "rsq"), class = "fastlm"
)
res2 <- structure(
c(-3.541306e+13, 701248600000, 0.938679),
.Names = c("intercept", "slope", "rsq"), class = "fastlm"
)
all.equal(as.character(diffPrint(res1, res2)), rdsf(3000))
all.equal(
as.character(diffPrint(unname(res1), unname(res2))), rdsf(3100)
)
# - factors and other meta -----------------------------------------------------
# Thanks Frank
all.equal(
as.character(diffPrint(factor(1:100), factor(c(1:99, 101)))), rdsf(3200)
)
f1 <- factor(1:100)
f2 <- factor(c(1:20, 22:99, 101))
all.equal(capture.output(diffPrint(f1, f2)), txtf(100))
f3 <- factor(letters[1:10])
f4 <- factor(letters[1:10], levels=letters[1:11])
all.equal(capture.output(diffPrint(f3, f4)), txtf(150))
# time series
nhtemp2 <- nhtemp
nhtemp2[c(5, 30)] <- -999
all.equal(capture.output(diffPrint(nhtemp, nhtemp2)), txtf(175))
# Meta on both sides
print.diffobj_test_c1 <- function(x, ...) {
writeLines(c("Header row 1", "header row 2"))
print(c(x))
writeLines(c("", "Footer row 1", "", "footer row2"))
}
m1 <- structure(1:30, class='diffobj_test_c1')
m2 <- structure(2:51, class='diffobj_test_c1')
all.equal(capture.output(diffPrint(m1, m2)), txtf(200), print=TRUE)
# - Raw output -----------------------------------------------------------------
all.equal(
as.character(diffPrint(letters, LETTERS, format="raw", pager="off")),
rdsf(3300)
)
# - Varying Widths -------------------------------------------------------------
all.equal(
as.character(diffPrint(letters, LETTERS, format="raw", disp.width=40)),
rdsf(3400)
)
try(diffPrint(letters, LETTERS, disp.width=5))
# - covr workaround ------------------------------------------------------------
# Needed so that the function definition stuff is marked as covered; really
# it shouldn't even be eligible for coverage, need to discuss further with
# jhester
invisible(diffobj:::make_diff_fun())
# - Encoding Issues ------------------------------------------------------------
# issue81, mixed UTF-8 ASCII, encoding a-acute in hex to avoid cross platform
# issues
a <- "G\xc3\xa1bor Cs\xc3\xa1rdi"
b <- sprintf("%s wow", a)
Encoding(a) <- 'UTF-8'
Encoding(b) <- 'UTF-8'
# No error
new <- (as.character(diffPrint(list(hell=a, b=NULL), list(hell=b, b=list()))))
# can't store this in RDS b/c otherwise won't run properly on oses with
# different encoding (e.g. windows)
ref <- structure(
c("\033[33m<\033[39m \033[33mlist(hell = a, b = N..\033[39m \033[34m>\033[39m \033[34mlist(hell = b, b = l..\033[39m",
"\033[36m@@ 1,6 @@ \033[39m \033[36m@@ 1,6 @@ \033[39m",
" \033[90m\033[39m$hell\033[90m\033[39m \033[90m\033[39m$hell\033[90m\033[39m ",
"\033[33m<\033[39m \033[90m[1] \033[39m\033[33m\"G\xc3\xa1bor Cs\xc3\xa1rdi\"\033[39m\033[90m\033[39m \033[34m>\033[39m \033[90m[1] \033[39m\033[34m\"G\xc3\xa1bor Cs\xc3\xa1rdi wow\"\033[39m\033[90m\033[39m",
" ", " \033[90m\033[39m$b\033[90m\033[39m \033[90m\033[39m$b\033[90m\033[39m ",
"\033[33m<\033[39m \033[90m\033[39m\033[33mNULL\033[39m\033[90m\033[39m \033[34m>\033[39m \033[90m\033[39m\033[34mlist\033[39m\033[34m()\033[39m\033[90m\033[39m ",
" "
),
len = 8L
)
Encoding(ref) <- 'UTF-8'
all.equal(new, ref)
# issue 106, this used to fail when trying to check for an RDS with a bytes
# encoded file name
bytes <- "\x81"
Encoding(bytes) <- "bytes"
isTRUE(!any(diffPrint(bytes, bytes)))
# - Quoted Objects -------------------------------------------------------------
all.equal(
as.character(diffPrint(quote(zz + 1), quote(zz + 3))),
structure(
c("\033[33m<\033[39m \033[33mquote(..\033[39m \033[34m>\033[39m \033[34mquote(..\033[39m", "\033[36m@@ 1 @@ \033[39m \033[36m@@ 1 @@ \033[39m", "\033[33m<\033[39m \033[90m\033[39mzz + \033[33m1\033[39m\033[90m\033[39m \033[34m>\033[39m \033[90m\033[39mzz + \033[34m3\033[39m\033[90m\033[39m "
), len = 3L
)
)
all.equal(
as.character(diffPrint(quote(x), quote(y))),
structure(
c("\033[33m<\033[39m \033[33mquote(x)\033[39m \033[34m>\033[39m \033[34mquote(y)\033[39m", "\033[36m@@ 1 @@ \033[39m \033[36m@@ 1 @@ \033[39m", "\033[33m<\033[39m \033[90m\033[39m\033[33mx\033[39m\033[90m\033[39m \033[34m>\033[39m \033[90m\033[39m\033[34my\033[39m\033[90m\033[39m "),
len = 3L
)
)
# - par_frame ------------------------------------------------------------------
# check that par_frame is retrieved correctly
env <- new.env()
env$print <- function(x, ...) stop('boom')
try(evalq(diffPrint(1:3, 1:4), env)) # "Failed attempting .*: boom"
f <- function(a, b, ...) {
print <- function(x, ...) stop('boom2')
diffPrint(a, b, ...)
}
try(f(1:3, 1:4, format='raw')) # "Failed attempting .*: boom2"
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.