tests/test-set_diff.R

library(qwraps2)

set_a <- c("A", "a", "E",      "I", "i", "O", "o", "U", "u", "E", "I")
set_b <- c("A", "a", "E", "e",      "i",      "o", "U", "u", "u", "a", "e")
set_c <- c("A", "e")
sd_ab <- set_diff(set_a, set_b)
sd_ba <- set_diff(set_b, set_a)

stopifnot(!is.null(attr(sd_ab, "class")))
stopifnot(!is.null(attr(sd_ba, "class")))
stopifnot(!is.null(attr(sd_ab, "yname")))
stopifnot(!is.null(attr(sd_ba, "yname")))
stopifnot(!is.null(attr(sd_ab, "xname")))
stopifnot(!is.null(attr(sd_ba, "xname")))

stopifnot(attr(sd_ab, "class") == "qwraps2_set_diff")
stopifnot(attr(sd_ba, "class") == "qwraps2_set_diff")

stopifnot(attr(sd_ab, "xname") == "set_a")
stopifnot(attr(sd_ba, "xname") == "set_b")

stopifnot(attr(sd_ab, "yname") == "set_b")
stopifnot(attr(sd_ba, "yname") == "set_a")

stopifnot(names(sd_ab) == c("all_values", "x_only", "y_only", "both", "equal"))
stopifnot(names(sd_ba) == c("all_values", "x_only", "y_only", "both", "equal"))

stopifnot(sort(sd_ab$all_values) == sort(sd_ba$all_values))
stopifnot(sd_ab$x_only == sd_ba$y_only)
stopifnot(sd_ab$y_only == sd_ba$x_only)
stopifnot(sd_ab$both == sd_ba$both)
stopifnot(sd_ab$equal == sd_ba$equal)
stopifnot(set_diff(set_b, set_b)$equal)

stopifnot(sd_ab$all_values == base::union(set_a, set_b))
stopifnot(sd_ab$x_only     == setdiff(set_a, set_b))
stopifnot(sd_ab$y_only     == setdiff(set_b, set_a))
stopifnot(sd_ab$both       == intersect(set_a, set_b))
stopifnot(sd_ab$both       == intersect(set_b, set_a))
stopifnot(sd_ab$equal      == setequal(set_a, set_b))
stopifnot(sd_ab$equal      == setequal(set_b, set_a))


# verify the print method returns the original object
sd_ab_printed <- print(sd_ab)
stopifnot(!is.null(sd_ab_printed))
stopifnot(identical(sd_ab_printed, sd_ab))
dewittpe/qwraps2 documentation built on Jan. 4, 2024, 1:59 p.m.