Nothing
# Tests for R/render-nodes.R
# Coverage for render_nodes_grid and render_node_labels_grid functions
# Tests for node rendering, shape handling, and styling
# ============================================
# Helper Functions for Mock Objects
# ============================================
#' Create a mock CographNetwork R6 object for testing
#' @param n Number of nodes
#' @param include_layout Include layout coordinates?
#' @param custom_aes Custom node aesthetics (list)
#' @param custom_theme Custom theme object or NULL
skip_on_cran()
create_mock_network <- function(n = 3, include_layout = TRUE,
custom_aes = list(), custom_theme = NULL) {
# Create nodes data frame
nodes <- data.frame(
id = seq_len(n),
label = LETTERS[seq_len(n)],
stringsAsFactors = FALSE
)
if (include_layout && n > 0) {
# Circle layout
if (n == 1) {
nodes$x <- 0.5
nodes$y <- 0.5
} else {
angles <- seq(0, 2 * pi * (1 - 1/n), length.out = n)
nodes$x <- 0.5 + 0.3 * cos(angles)
nodes$y <- 0.5 + 0.3 * sin(angles)
}
}
# Create edges data frame
edges <- data.frame(
from = integer(0),
to = integer(0),
weight = numeric(0)
)
if (n >= 2) {
edges <- data.frame(
from = seq_len(n - 1),
to = seq(2, n),
weight = rep(1, n - 1)
)
}
# Build default aesthetics
default_aes <- list(
size = 0.05,
shape = "circle",
fill = "#4A90D9",
border_color = "#2C5AA0",
border_width = 1,
alpha = 1,
label_size = 10,
label_color = "black",
label_position = "center"
)
# Merge custom aesthetics
node_aes <- utils::modifyList(default_aes, custom_aes)
# Default theme
if (is.null(custom_theme)) {
custom_theme <- CographTheme$new()
}
# Create mock R6 object
mock_network <- list(
get_nodes = function() nodes,
get_node_aes = function() node_aes,
get_theme = function() custom_theme
)
class(mock_network) <- "CographNetwork"
mock_network
}
#' Create a mock network with donut values
create_mock_donut_network <- function(n = 3, donut_values = NULL, donut_colors = NULL) {
aes <- list()
if (!is.null(donut_values)) {
aes$donut_values <- donut_values
}
if (!is.null(donut_colors)) {
aes$donut_colors <- donut_colors
}
create_mock_network(n, custom_aes = aes)
}
#' Create a mock network with pie values
create_mock_pie_network <- function(n = 3, pie_values = NULL, pie_colors = NULL) {
aes <- list(shape = "pie")
if (!is.null(pie_values)) {
aes$pie_values <- pie_values
}
if (!is.null(pie_colors)) {
aes$pie_colors <- pie_colors
}
create_mock_network(n, custom_aes = aes)
}
# Make internal functions available
render_nodes_grid <- cograph:::render_nodes_grid
render_node_labels_grid <- cograph:::render_node_labels_grid
expand_param <- cograph:::expand_param
# ============================================
# Basic render_nodes_grid Tests
# ============================================
test_that("render_nodes_grid returns gList for basic network", {
net <- create_mock_network(n = 3)
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid returns empty gList for zero nodes", {
net <- create_mock_network(n = 0)
result <- render_nodes_grid(net)
expect_true(inherits(result, "gList"))
expect_equal(length(result), 0)
})
test_that("render_nodes_grid handles single node network", {
net <- create_mock_network(n = 1)
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
expect_equal(length(result), 1)
})
test_that("render_nodes_grid handles 5 nodes", {
net <- create_mock_network(n = 5)
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
expect_equal(length(result), 5)
})
test_that("render_nodes_grid handles 10 nodes", {
net <- create_mock_network(n = 10)
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
expect_equal(length(result), 10)
})
# ============================================
# Shape Tests
# ============================================
test_that("render_nodes_grid works with circle shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "circle"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with square shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "square"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with triangle shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "triangle"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with diamond shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "diamond"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with hexagon shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "hexagon"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with ellipse shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "ellipse"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with star shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "star"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with heart shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "heart"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid falls back to circle for unknown shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "nonexistent_shape_xyz"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with mixed shapes (vectorized)", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = c("circle", "square", "triangle")
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
expect_equal(length(result), 3)
})
# ============================================
# Pie Shape Tests
# ============================================
test_that("render_nodes_grid works with pie shape and list values", {
net <- create_mock_pie_network(
n = 3,
pie_values = list(c(1, 2), c(3, 1), c(1, 1, 1))
)
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with pie shape and matrix values", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "pie",
pie_values = matrix(c(1, 2, 3, 2, 1, 2), nrow = 3, ncol = 2)
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with pie shape and custom colors", {
net <- create_mock_pie_network(
n = 3,
pie_values = list(c(1, 2), c(3, 1), c(1, 1, 1)),
pie_colors = c("red", "blue", "green")
)
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with pie_border_width parameter", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "pie",
pie_values = list(c(1, 2), c(3, 1), c(1, 1)),
pie_border_width = 2
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
# ============================================
# Donut Shape Tests
# ============================================
test_that("render_nodes_grid works with donut shape", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut",
donut_values = list(0.5, 0.75, 1.0)
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid converts regular shape to donut when donut_values provided", {
net <- create_mock_donut_network(
n = 3,
donut_values = list(0.3, 0.6, 0.9)
)
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles donut_inner_ratio parameter", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut",
donut_values = list(0.5, 0.75, 1.0),
donut_inner_ratio = 0.6
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles donut_bg_color parameter", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut",
donut_values = list(0.5, 0.75, 1.0),
donut_bg_color = "lightblue"
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles donut with show_value", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut",
donut_values = list(0.5, 0.75, 1.0),
donut_show_value = TRUE
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles donut_value_prefix and suffix", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut",
donut_values = list(0.5, 0.75, 1.0),
donut_show_value = TRUE,
donut_value_prefix = "$",
donut_value_suffix = "%"
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles donut_border_width parameter", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut",
donut_values = list(0.5, 0.75, 1.0),
donut_border_width = 3
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
# ============================================
# Polygon Donut Tests
# ============================================
test_that("render_nodes_grid handles polygon_donut shape", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "polygon_donut",
donut_values = list(0.5, 0.75, 1.0),
donut_shape = "hexagon"
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid uses polygon_donut for non-circle donut_shape", {
net <- create_mock_network(n = 3, custom_aes = list(
donut_values = list(0.5, 0.75, 1.0),
donut_shape = "square"
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
# ============================================
# Donut-Pie Combined Tests
# ============================================
test_that("render_nodes_grid handles donut_pie shape", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut_pie",
donut_values = c(0.5, 0.75, 1.0),
pie_values = list(c(1, 2), c(3, 1), c(1, 1))
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles double_donut_pie shape", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "double_donut_pie",
donut_values = list(0.5, 0.75, 1.0),
donut2_values = list(0.3, 0.5, 0.8),
pie_values = list(c(1, 2), c(3, 1), c(1, 1))
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
# ============================================
# Styling Tests
# ============================================
test_that("render_nodes_grid handles per-node sizes", {
net <- create_mock_network(n = 3, custom_aes = list(
size = c(0.03, 0.05, 0.07)
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles per-node fills", {
net <- create_mock_network(n = 3, custom_aes = list(
fill = c("red", "green", "blue")
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles per-node border colors", {
net <- create_mock_network(n = 3, custom_aes = list(
border_color = c("darkred", "darkgreen", "darkblue")
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles per-node border widths", {
net <- create_mock_network(n = 3, custom_aes = list(
border_width = c(1, 2, 3)
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles per-node alpha", {
net <- create_mock_network(n = 3, custom_aes = list(
alpha = c(0.3, 0.6, 1.0)
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
# ============================================
# render_node_labels_grid Tests
# ============================================
test_that("render_node_labels_grid returns gList for basic network", {
net <- create_mock_network(n = 3)
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid returns empty gList for zero nodes", {
net <- create_mock_network(n = 0)
result <- render_node_labels_grid(net)
expect_true(inherits(result, "gList"))
expect_equal(length(result), 0)
})
test_that("render_node_labels_grid returns empty when show_labels is FALSE", {
net <- create_mock_network(n = 3, custom_aes = list(show_labels = FALSE))
result <- render_node_labels_grid(net)
expect_true(inherits(result, "gList"))
expect_equal(length(result), 0)
})
test_that("render_node_labels_grid handles label_position = above", {
net <- create_mock_network(n = 3, custom_aes = list(label_position = "above"))
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid handles label_position = below", {
net <- create_mock_network(n = 3, custom_aes = list(label_position = "below"))
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid handles label_position = left", {
net <- create_mock_network(n = 3, custom_aes = list(label_position = "left"))
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid handles label_position = right", {
net <- create_mock_network(n = 3, custom_aes = list(label_position = "right"))
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid handles per-node label positions", {
net <- create_mock_network(n = 3, custom_aes = list(
label_position = c("above", "center", "below")
))
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid handles label_fontface = bold", {
net <- create_mock_network(n = 3, custom_aes = list(label_fontface = "bold"))
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid handles label_fontface = italic", {
net <- create_mock_network(n = 3, custom_aes = list(label_fontface = "italic"))
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid handles label_fontface = bold.italic", {
net <- create_mock_network(n = 3, custom_aes = list(label_fontface = "bold.italic"))
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid handles label_angle", {
net <- create_mock_network(n = 3, custom_aes = list(label_angle = 45))
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid handles label_hjust and label_vjust", {
net <- create_mock_network(n = 3, custom_aes = list(
label_hjust = 0,
label_vjust = 1
))
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid handles per-node label colors", {
net <- create_mock_network(n = 3, custom_aes = list(
label_color = c("red", "green", "blue")
))
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid handles per-node label sizes", {
net <- create_mock_network(n = 3, custom_aes = list(
label_size = c(8, 10, 12)
))
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid handles label_fontfamily", {
net <- create_mock_network(n = 3, custom_aes = list(label_fontfamily = "serif"))
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid creates labels from node ids when no label column", {
net <- create_mock_network(n = 3)
# Remove label column
nodes <- net$get_nodes()
nodes$label <- NULL
net$get_nodes <- function() nodes
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
# ============================================
# expand_param Tests
# ============================================
test_that("expand_param expands single value to length n", {
result <- expand_param("circle", 5, "shape")
expect_equal(result, rep("circle", 5))
})
test_that("expand_param returns vector unchanged when length matches n", {
result <- expand_param(c(1, 2, 3), 3, "size")
expect_equal(result, c(1, 2, 3))
})
test_that("expand_param errors when length is not 1 or n", {
expect_error(
expand_param(c(1, 2), 5, "size"),
"size must be length 1 or 5"
)
})
# ============================================
# AI-Themed Shape Tests
# ============================================
test_that("render_nodes_grid works with neural shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "neural"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with chip shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "chip"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with robot shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "robot"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with brain shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "brain"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with network shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "network"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with database shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "database"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with cloud shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "cloud"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with gear shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "gear"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with cross shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "cross"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with pentagon shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "pentagon"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with none shape (invisible)", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "none"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid works with rectangle shape", {
net <- create_mock_network(n = 3, custom_aes = list(shape = "rectangle"))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
# ============================================
# Donut Colors Tests (List vs Vector)
# ============================================
test_that("render_nodes_grid handles donut_colors as list", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut",
donut_values = list(0.5, 0.75, 1.0),
donut_colors = list("red", "green", "blue")
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles donut_colors as vector", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut",
donut_values = list(0.5, 0.75, 1.0),
donut_colors = c("red", "green", "blue")
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
# ============================================
# Vectorized Donut Parameters Tests
# ============================================
test_that("render_nodes_grid handles vectorized donut_inner_ratio", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut",
donut_values = list(0.5, 0.75, 1.0),
donut_inner_ratio = c(0.3, 0.5, 0.7)
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles vectorized donut_bg_color", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut",
donut_values = list(0.5, 0.75, 1.0),
donut_bg_color = c("gray80", "gray85", "gray90")
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles vectorized donut_show_value", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut",
donut_values = list(0.5, 0.75, 1.0),
donut_show_value = c(TRUE, FALSE, TRUE)
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles vectorized donut_value_size", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut",
donut_values = list(0.5, 0.75, 1.0),
donut_show_value = TRUE,
donut_value_size = c(6, 8, 10)
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles donut_value_digits", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut",
donut_values = list(0.333, 0.666, 0.999),
donut_show_value = TRUE,
donut_value_digits = 1
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles donut_value_format function", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut",
donut_values = list(0.5, 0.75, 1.0),
donut_show_value = TRUE,
donut_value_format = function(x) paste0(round(x * 100), "%")
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles vectorized donut_shape", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "polygon_donut",
donut_values = list(0.5, 0.75, 1.0),
donut_shape = c("square", "hexagon", "triangle")
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
# ============================================
# Double Donut-Pie Complex Tests
# ============================================
test_that("render_nodes_grid handles double_donut_pie with all parameters", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "double_donut_pie",
donut_values = list(0.5, 0.75, 1.0),
donut_colors = list("red", "green", "blue"),
donut2_values = list(0.3, 0.5, 0.8),
donut2_colors = list("orange", "purple", "cyan"),
pie_values = list(c(1, 2), c(3, 1), c(1, 1)),
pie_colors = c("pink", "lightgreen"),
donut_inner_ratio = 0.7,
donut2_inner_ratio = 0.4,
donut_bg_color = "gray95"
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles donut_pie with custom border widths", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut_pie",
donut_values = c(0.5, 0.75, 1.0),
pie_values = list(c(1, 2), c(3, 1), c(1, 1)),
pie_border_width = 1,
donut_border_width = 2
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
# ============================================
# Theme Integration Tests
# ============================================
test_that("render_nodes_grid uses theme defaults for fill", {
custom_theme <- CographTheme$new(node_fill = "coral")
net <- create_mock_network(n = 3, custom_aes = list(fill = NULL), custom_theme = custom_theme)
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid uses theme defaults for border", {
custom_theme <- CographTheme$new(node_border = "navy")
net <- create_mock_network(n = 3, custom_aes = list(border_color = NULL), custom_theme = custom_theme)
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid uses theme defaults for label color", {
custom_theme <- CographTheme$new(label_color = "darkred")
net <- create_mock_network(n = 3, custom_aes = list(label_color = NULL), custom_theme = custom_theme)
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_node_labels_grid uses theme defaults for label size", {
custom_theme <- CographTheme$new(label_size = 14)
net <- create_mock_network(n = 3, custom_aes = list(label_size = NULL), custom_theme = custom_theme)
result <- with_temp_png({
render_node_labels_grid(net)
})
expect_true(inherits(result, "gList"))
})
# ============================================
# Edge Case Tests
# ============================================
test_that("render_nodes_grid handles NA in donut_values", {
net <- create_mock_network(n = 3, custom_aes = list(
donut_values = list(0.5, NA, 1.0)
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles NULL in donut_values list", {
net <- create_mock_network(n = 3, custom_aes = list(
donut_values = list(0.5, NULL, 1.0)
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles empty donut_values list", {
net <- create_mock_network(n = 3, custom_aes = list(
shape = "donut",
donut_values = list()
))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles zero alpha (invisible nodes)", {
net <- create_mock_network(n = 3, custom_aes = list(alpha = 0))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles very small node sizes", {
net <- create_mock_network(n = 3, custom_aes = list(size = 0.001))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
test_that("render_nodes_grid handles very large node sizes", {
net <- create_mock_network(n = 3, custom_aes = list(size = 0.5))
result <- with_temp_png({
render_nodes_grid(net)
})
expect_true(inherits(result, "gList"))
})
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.