Nothing
#plot_freq_001
test_that("plot_freq runs without errors", {
x <- c(1, 1, 2, 2, 2, 5, 5)
# Should not throw errors (single variable uses x ~ 1)
expect_error(plot_freq(x ~ 1), NA)
# Should return invisible data frame
result <- plot_freq(x ~ 1)
expect_true(is.data.frame(result))
expect_true("value" %in% names(result) || "x" %in% names(result))
})
#plot_freq_002
test_that("plot_freq handles data frame input", {
df <- data.frame(value = c(1, 1, 2, 2, 2, 5, 5))
# Use formula syntax
expect_error(plot_freq(value ~ 1, data = df), NA)
result <- plot_freq(value ~ 1, data = df)
expect_true(is.data.frame(result))
})
#plot_freq_003
test_that("plot_freq handles grouping", {
x <- c(1, 1, 2, 2, 2, 5, 5)
group <- c("A", "A", "A", "B", "B", "A", "B")
expect_error(plot_freq(x ~ group), NA)
result <- plot_freq(x ~ group)
expect_true(is.data.frame(result))
})
#plot_freq_004
test_that("plot_freq handles group with data frame", {
df <- data.frame(
value = c(1, 1, 2, 2, 2, 5, 5),
group = c("A", "A", "A", "B", "B", "A", "B")
)
# Use formula syntax
expect_error(plot_freq(value ~ group, data = df), NA)
result <- plot_freq(value ~ group, data = df)
expect_true(is.data.frame(result))
})
#plot_freq_005
test_that("plot_freq accepts df$col ~ df$col2 without bare column names in env", {
df1 <- data.frame(
value = c(1, 1, 2, 2, 2, 5, 5),
grp = c("A", "A", "A", "B", "B", "A", "B")
)
expect_error(plot_freq(df1$value ~ df1$grp), NA)
result <- plot_freq(df1$value ~ df1$grp)
expect_true(is.data.frame(result))
})
#plot_freq_006
test_that("plot_freq handles freq parameter", {
x <- c(1, 1, 2, 2, 2)
# Frequency plot
expect_error(plot_freq(x ~ 1, freq = TRUE), NA)
# Proportion plot
expect_error(plot_freq(x ~ 1, freq = FALSE), NA)
})
#plot_freq_007
test_that("plot_freq handles custom parameters", {
x <- c(1, 1, 2, 2, 2)
# Custom color
expect_error(plot_freq(x ~ 1, col = "red"), NA)
# Custom line width
expect_error(plot_freq(x ~ 1, lwd = 5), NA)
# Custom width
expect_error(plot_freq(x ~ 1, width = 0.5), NA)
})
#plot_freq_008
test_that("plot_freq handles value.labels parameter", {
x <- c(1, 1, 2, 2, 2)
# With labels
expect_error(plot_freq(x ~ 1, value.labels = TRUE), NA)
# Without labels
expect_error(plot_freq(x ~ 1, value.labels = FALSE), NA)
# Character options
expect_error(plot_freq(x ~ 1, value.labels = "all"), NA)
expect_error(plot_freq(x ~ 1, value.labels = "auto"), NA)
# Top-N labels
expect_error(plot_freq(x ~ 1, value.labels = 5), NA)
# None / all
expect_error(plot_freq(x ~ 1, value.labels = 0), NA)
expect_error(plot_freq(x ~ 1, value.labels = -1), NA)
# Grouped path also accepts numeric / logical
df <- data.frame(value = x, group = c("A", "A", "B", "B", "A"))
expect_error(plot_freq(value ~ group, data = df, value.labels = 2), NA)
expect_error(plot_freq(value ~ group, data = df, value.labels = TRUE), NA)
expect_error(plot_freq(value ~ group, data = df, value.labels = FALSE), NA)
expect_error(plot_freq(value ~ group, data = df, value.labels = "all"), NA)
expect_error(plot_freq(value ~ group, data = df, value.labels = "auto"), NA)
# In grouped plots, numeric value.labels applies per group (still should not error)
df2 <- data.frame(value = c(1, 1, 1, 2, 2, 3, 3, 4),
group = c("A", "A", "A", "A", "B", "B", "B", "B"))
expect_error(plot_freq(value ~ group, data = df2, value.labels = 1), NA)
# Labeling does not affect returned data
r1 <- plot_freq(value ~ group, data = df2, value.labels = 1)
r0 <- plot_freq(value ~ group, data = df2, value.labels = 0)
expect_equal(r1, r0)
# Invalid inputs
expect_error(plot_freq(x ~ 1, value.labels = -2))
expect_error(plot_freq(x ~ 1, value.labels = NA))
expect_error(plot_freq(x ~ 1, value.labels = c(1, 2)))
expect_error(plot_freq(x ~ 1, value.labels = "nope"))
})
#plot_freq_009
test_that("plot_freq handles show.x.value parameter", {
x <- c(1, 1, 2, 2, 2, 3, 3)
df <- data.frame(value = x, group = rep(c("A", "B"), length.out = length(x)))
# Non-grouped: x= only where frequency labels are drawn
expect_error(plot_freq(x ~ 1, value.labels = 2, show.x.value = "auto"), NA)
expect_error(plot_freq(x ~ 1, value.labels = 0, show.x.value = "auto"), NA)
# Grouped
expect_error(plot_freq(value ~ group, data = df, value.labels = 2, show.x.value = "auto"), NA)
# Explicit TRUE/FALSE still accepted
expect_error(plot_freq(x ~ 1, show.x.value = TRUE), NA)
expect_error(plot_freq(x ~ 1, show.x.value = FALSE), NA)
})
#plot_freq_010
test_that("plot_freq handles ticks.max parameter", {
x <- 1:50
expect_error(plot_freq(x ~ 1, ticks.max = 5), NA)
})
#plot_freq_011
test_that("plot_freq handles show.legend parameter", {
x <- c(1, 1, 2, 2, 2)
group <- c("A", "A", "B", "B", "A")
# With legend
expect_error(plot_freq(x ~ group, show.legend = TRUE), NA)
# Without legend
expect_error(plot_freq(x ~ group, show.legend = FALSE), NA)
})
#plot_freq_012
test_that("plot_freq returns correct structure", {
x <- c(1, 1, 2, 2, 2, 5, 5)
result <- plot_freq(x ~ 1)
# Check structure
expect_true(is.data.frame(result))
# Should have at least value and frequency columns
expect_true(ncol(result) >= 2)
expect_true(nrow(result) > 0)
})
#plot_freq_013
test_that("plot_freq handles missing values", {
x <- c(1, 1, 2, NA, 2, 5, 5)
# Should handle NAs gracefully
expect_error(plot_freq(x ~ 1), NA)
result <- plot_freq(x ~ 1)
expect_true(is.data.frame(result))
})
#plot_freq_014
test_that("plot_freq error message shows correct dataset name", {
# Create a dataset with a specific name
IV5 <- data.frame(value = c(1, 1, 2, 2, 2, 5, 5))
# Try to access a variable that doesn't exist - should show "IV5" not "data"
expect_error(
plot_freq(nonexistent ~ 1, data = IV5),
'Variable "nonexistent" not found in dataset "IV5"',
fixed = TRUE
)
})
#plot_freq_015
test_that("plot_freq handles order parameter for groups", {
df <- data.frame(
value = c(1, 1, 2, 2, 2, 5, 5, 1, 5),
group = c("A", "A", "A", "B", "B", "A", "B", "B", "A")
)
# Custom group order
expect_error(plot_freq(value ~ group, data = df, order = c("B", "A")), NA)
result <- plot_freq(value ~ group, data = df, order = c("B", "A"))
expect_true(is.data.frame(result))
# Check that columns are in specified order
expect_equal(names(result), c("value", "B", "A"))
})
#plot_freq_016
test_that("plot_freq respects factor levels for groups when order is NULL", {
# Create factor with specific level order
df <- data.frame(
value = c(1, 1, 2, 2, 2, 5, 5, 1, 5),
group = factor(c("A", "A", "A", "B", "B", "A", "B", "B", "A"),
levels = c("B", "A"))
)
expect_error(plot_freq(value ~ group, data = df), NA)
result <- plot_freq(value ~ group, data = df)
expect_true(is.data.frame(result))
# Check that factor levels are respected (B before A)
expect_equal(names(result), c("value", "B", "A"))
})
#plot_freq_017
test_that("plot_freq order parameter validates group names", {
df <- data.frame(
value = c(1, 1, 2, 2, 2, 5, 5),
group = c("A", "A", "A", "B", "B", "A", "B")
)
# Missing a group in order
expect_error(
plot_freq(value ~ group, data = df, order = c("A")),
"order.*missing group"
)
# Extra group in order (should warn, not error)
expect_warning(
plot_freq(value ~ group, data = df, order = c("A", "B", "C")),
"order.*contains group.*not in data"
)
})
#plot_freq_018
test_that("plot_freq order works with 3 groups", {
df <- data.frame(
value = rep(c(1, 2, 5), 6),
group = rep(c("A", "B", "C"), each = 6)
)
# Custom order for 3 groups
expect_error(plot_freq(value ~ group, data = df, order = c("C", "A", "B")), NA)
result <- plot_freq(value ~ group, data = df, order = c("C", "A", "B"))
expect_true(is.data.frame(result))
# Check column order
expect_equal(names(result), c("value", "C", "A", "B"))
})
#plot_freq_019
test_that("plot_freq default group order is sorted", {
df <- data.frame(
value = c(1, 1, 2, 2, 2, 5, 5, 1, 5),
group = c("C", "C", "C", "A", "A", "C", "A", "A", "C")
)
# Without order parameter, groups should be sorted (A before C)
result <- plot_freq(value ~ group, data = df)
expect_true(is.data.frame(result))
expect_equal(names(result), c("value", "A", "C"))
})
#plot_freq_020
test_that("plot_freq order = -1 reverses default order", {
df <- data.frame(
value = c(1, 1, 2, 2, 2, 5, 5, 1, 5),
group = c("A", "A", "A", "B", "B", "A", "B", "B", "A")
)
# Default order is A, B (sorted)
result_default <- plot_freq(value ~ group, data = df)
expect_equal(names(result_default), c("value", "A", "B"))
# order = -1 should reverse to B, A
result_reversed <- plot_freq(value ~ group, data = df, order = -1)
expect_true(is.data.frame(result_reversed))
expect_equal(names(result_reversed), c("value", "B", "A"))
})
#plot_freq_021
test_that("plot_freq order = -1 reverses factor levels", {
df <- data.frame(
value = c(1, 1, 2, 2, 2, 5, 5, 1, 5),
group = factor(c("A", "A", "A", "B", "B", "A", "B", "B", "A"),
levels = c("A", "B"))
)
# Default respects factor levels: A, B
result_default <- plot_freq(value ~ group, data = df)
expect_equal(names(result_default), c("value", "A", "B"))
# order = -1 should reverse factor levels to B, A
result_reversed <- plot_freq(value ~ group, data = df, order = -1)
expect_true(is.data.frame(result_reversed))
expect_equal(names(result_reversed), c("value", "B", "A"))
})
#plot_freq_022
test_that("plot_freq order = -1 works with 3 groups", {
df <- data.frame(
value = rep(c(1, 2, 5), 6),
group = rep(c("A", "B", "C"), each = 6)
)
# Default order is A, B, C (sorted)
result_default <- plot_freq(value ~ group, data = df)
expect_equal(names(result_default), c("value", "A", "B", "C"))
# order = -1 should reverse to C, B, A
result_reversed <- plot_freq(value ~ group, data = df, order = -1)
expect_true(is.data.frame(result_reversed))
expect_equal(names(result_reversed), c("value", "C", "B", "A"))
})
#plot_freq_023
test_that("plot_freq handles two-vector comparison", {
y1 <- c(1, 1, 2, 2, 2, 5, 5)
y2 <- c(1, 2, 2, 3, 3, 3)
# Should not throw errors
expect_error(plot_freq(y1, y2), NA)
result <- plot_freq(y1, y2)
expect_true(is.data.frame(result))
# Should have columns for value and both vector names
expect_equal(ncol(result), 3)
expect_true("value" %in% names(result))
})
#plot_freq_024
test_that("plot_freq two-vector comparison returns correct structure", {
y1 <- c(1, 1, 2, 2, 2)
y2 <- c(2, 3, 3, 3)
result <- plot_freq(y1, y2)
# Check structure
expect_true(is.data.frame(result))
expect_equal(ncol(result), 3)
expect_true("value" %in% names(result))
expect_true("y1" %in% names(result))
expect_true("y2" %in% names(result))
})
#plot_freq_025
test_that("plot_freq two-vector comparison with custom parameters", {
y1 <- c(1, 1, 2, 2, 2)
y2 <- c(2, 3, 3, 3)
# Custom colors
expect_error(plot_freq(y1, y2, col = c("red", "blue")), NA)
# Percentages
expect_error(plot_freq(y1, y2, freq = FALSE), NA)
# Without legend
expect_error(plot_freq(y1, y2, show.legend = FALSE), NA)
})
#plot_freq_026
test_that("plot_freq two-vector comparison handles order parameter", {
y1 <- c(1, 1, 2, 2, 2)
y2 <- c(2, 3, 3, 3)
# Default order (alphabetical)
result_default <- plot_freq(y1, y2)
expect_equal(names(result_default), c("value", "y1", "y2"))
# Reverse order
result_reversed <- plot_freq(y1, y2, order = -1)
expect_equal(names(result_reversed), c("value", "y2", "y1"))
# Custom order
result_custom <- plot_freq(y1, y2, order = c("y2", "y1"))
expect_equal(names(result_custom), c("value", "y2", "y1"))
})
#plot_freq_027
test_that("plot_freq two-vector comparison handles missing values", {
y1 <- c(1, 1, 2, NA, 2)
y2 <- c(2, NA, 3, 3)
# Should handle NAs gracefully
expect_error(plot_freq(y1, y2), NA)
result <- plot_freq(y1, y2)
expect_true(is.data.frame(result))
})
#plot_freq_028
test_that("plot_freq two-vector comparison validates inputs", {
y1 <- c(1, 1, 2, 2, 2)
# Non-existent variable name as second argument
expect_error(
plot_freq(y1, "not_a_vector"),
"Could not find variable"
)
# Non-existent variable name as first argument
expect_error(
plot_freq("not_a_vector", y1),
"Could not find variable"
)
})
#plot_freq_029
test_that("plot_freq two-vector uses deduced variable names", {
y1 <- c(1, 1, 2, 2, 2)
y2 <- c(2, 3, 3, 3)
result <- plot_freq(y1, y2)
expect_true(is.data.frame(result))
expect_true("y1" %in% names(result))
expect_true("y2" %in% names(result))
})
#plot_freq_030
test_that("plot_freq two-vector can resolve columns from data", {
set.seed(1)
y1 <- sample(100, replace = TRUE)
y2 <- sample(100, replace = TRUE)
df1 <- data.frame(a = y1, b = y2)
expect_error(plot_freq(a, b, data = df1), NA)
})
#plot_freq_031
test_that("plot_freq two-vector order parameter works", {
y1 <- c(1, 1, 2, 2, 2)
y2 <- c(2, 3, 3, 3)
# Reversed order
result <- plot_freq(y1, y2, order = -1)
expect_equal(names(result), c("value", "y2", "y1"))
# Explicit order
result2 <- plot_freq(y1, y2, order = c("y2", "y1"))
expect_equal(names(result2), c("value", "y2", "y1"))
})
#plot_freq_032
test_that("plot_freq two-vector handles continuous data", {
# Test with continuous data (runif, rnorm) which have floating point values
set.seed(123)
y1 <- runif(50)
y2 <- rnorm(50)
# Should not throw errors with continuous data
expect_error(plot_freq(y1, y2), NA)
result <- plot_freq(y1, y2)
expect_true(is.data.frame(result))
})
#plot_freq_033
test_that("plot_freq xlim includes all bars", {
# Test that bars at edges are not clipped
y1 <- c(1, 1, 2, 2, 3)
y2 <- c(1, 4, 4, 4)
# Should include padding so bars at min (1) and max (4) are visible
expect_error(plot_freq(y1, y2), NA)
# Test with single variable at edges
x <- c(1, 1, 5, 5)
expect_error(plot_freq(x), NA)
})
#plot_freq_034
test_that("plot_freq uses pretty x-ticks for many unique values", {
# With >30 unique values, plot_freq should still run (and not attempt to label every x)
x <- 1:40
expect_error(plot_freq(x, ylim = c(0, 10)), NA)
# Grouped path also should run
df <- data.frame(value = 1:40, group = rep(c("A", "B"), each = 20))
expect_error(plot_freq(value ~ group, data = df, ylim = c(0, 10)), NA)
})
#plot_freq_035
test_that("plot_freq reserves space for legend", {
y1 <- c(1, 1, 2, 2, 3)
y2 <- c(1, 4, 4, 4)
# With legend (default)
expect_error(plot_freq(y1, y2, show.legend = TRUE), NA)
# Without legend
expect_error(plot_freq(y1, y2, show.legend = FALSE), NA)
})
#plot_freq_036
test_that("plot_freq two-vector supports col and freq args", {
y1 <- c(1, 1, 2, 2, 2)
y2 <- c(2, 3, 3, 3)
# col argument works
expect_error(plot_freq(y1, y2, col = c("blue", "pink")), NA)
# Percentages work
result_pct <- plot_freq(y1, y2, freq = FALSE)
expect_true(is.data.frame(result_pct))
})
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.