tests/test-diffStr.R

NAME <- "diffStr"
source(file.path('_helper', 'init.R'))

# - lm models ------------------------------------------------------------------

# formula display changed
if(
  R.Version()$major >= 3 && R.Version()$minor >= "3.1" || R.Version()$major > 3
)
  all.equal(as.character(diffStr(mdl1, mdl2)), rdsf(100))

# Too strict a line limit, can't get under
all.equal(
  as.character(diffStr(mdl1[7], mdl2[7], line.limit=10)), rdsf(200)
)
# Now we can get under
all.equal(
  as.character(diffStr(mdl1[7], mdl2[7], line.limit=15)), rdsf(300)
)

# - Simple structure -----------------------------------------------------------
#
# Character types

all.equal(as.character(diffStr(iris.c, iris.s)), rdsf(400))

# - Strict width ---------------------------------------------------------------
# formula display changed
if(
  R.Version()$major >= 3 && R.Version()$minor >= "3.1" || R.Version()$major > 3
) {
  c(
    all.equal(
      as.character(
        diffStr(mdl1, mdl2, extra=list(strict.width="wrap"), line.limit=30)
      ),
      rdsf(500)
    ),
    all.equal(
      as.character(
        diffStr(mdl1, mdl2, extra=list(strict.width="cut"), line.limit=30)
      ),
      rdsf(550)
  ) )
}
# - max.diffs ------------------------------------------------------------------

invisible(diffStr(iris, mtcars, max.diffs=2)) # warn: "Exceeded diff limit"

# - max.level ------------------------------------------------------------------

all.equal(
  as.character(diffStr(mdl1[7], mdl2[7], extra=list(max.level="auto"))),
  rdsf(600)
)
all.equal(
  as.character(diffStr(mdl1[7], mdl2[7], extra=list(max.level=2))),
  rdsf(700)
)
# Has a difference, but can't get under; the second is just for reference

lst.1 <- lst.2 <- lst.3 <- list(a=list(b=list(c=list(d=list(e=list(25))))))
names(lst.2) <- "A"

all.equal(
  as.character(diffStr(lst.1, lst.2, line.limit=2)), rdsf(800)
)
all.equal(
  as.character(diffStr(lst.1, lst.2, line.limit=2)), rdsf(900)
)
# Test that initial run shows difference, but too big, but next one down
# doesn't so have to increase level

names(lst.3$a$b$c$d) <- "E"
all.equal(
  as.character(diffStr(lst.1, lst.3, line.limit=6)), rdsf(1000)
)

# - No visible differences -----------------------------------------------------

all.equal(
  as.character(diffStr(1:100, c(1:99, 101L))), rdsf(1100)
)

# - Quoted Objects -------------------------------------------------------------

all.equal(
  as.character(diffStr(quote(zz + 1), quote(zz + 3))),
  structure(
    c("\033[33m<\033[39m \033[33mstr(quote(zz +..\033[39m  \033[34m>\033[39m \033[34mstr(quote(zz +..\033[39m", "\033[36m@@ 1 @@           \033[39m  \033[36m@@ 1 @@           \033[39m", "\033[33m<\033[39m \033[90m\033[39m language zz + \033[33m1\033[39m\033[90m\033[39m  \033[34m>\033[39m \033[90m\033[39m language zz + \033[34m3\033[39m\033[90m\033[39m"
    ), len = 3L
) )

all.equal(
  as.character(diffStr(quote(x), quote(y))),
  structure(c("\033[33m<\033[39m \033[33mstr(quo..\033[39m  \033[34m>\033[39m \033[34mstr(quo..\033[39m", "\033[36m@@ 1 @@    \033[39m  \033[36m@@ 1 @@    \033[39m", "\033[33m<\033[39m \033[90m\033[39m symbol \033[33mx\033[39m\033[90m\033[39m  \033[34m>\033[39m \033[90m\033[39m symbol \033[34my\033[39m\033[90m\033[39m"), len = 3L)
)

# - Spaces with punctuation ----------------------------------------------------

all.equal(
  capture.output(show(diffStr(list(a=1), list(a=1, cabera=3), format='raw'))),
  txtf(100)
)

Try the diffobj package in your browser

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

diffobj documentation built on Oct. 5, 2021, 9:07 a.m.