Nothing
library(testthat)
library(ggplot2)
library(geneticae)
# --- FUNCIÓN AUXILIAR ESTABLE ---
generar_modelo_test <- function() {
# Datos con estructura aditiva clara para facilitar convergencia
set.seed(123)
df <- expand.grid(Genotype = paste0("G", 1:6),
Locality = paste0("L", 1:4)) %>%
mutate(Yield = 10 +
as.numeric(as.factor(Genotype)) * 0.5 +
as.numeric(as.factor(Locality)) * 1.5 +
rnorm(n(), sd = 0.1))
# Usamos AMMI para los tests de interfaz (es el más rápido y estable)
return(rAMMIModel(df, "Genotype", "Locality", "Yield", type = "AMMI"))
}
# --- TESTS ---
test_that("rAMMIPlot genera un objeto ggplot válido", {
modelo <- generar_modelo_test()
p <- rAMMIPlot(modelo)
expect_s3_class(p, "ggplot")
})
test_that("rAMMIPlot respeta los argumentos de personalización", {
modelo <- generar_modelo_test()
p_custom <- rAMMIPlot(modelo, titles = FALSE, axislabels = FALSE, footnote = FALSE)
expect_null(p_custom$labels$title)
expect_null(p_custom$labels$caption)
# Verificamos que no haya porcentajes si axislabels = FALSE
label_x <- p_custom$labels$x
if (!is.null(label_x)) expect_false(grepl("%", label_x))
})
test_that("rAMMIPlot muestra porcentajes cuando axislabels es TRUE", {
modelo <- generar_modelo_test()
p <- rAMMIPlot(modelo, axislabels = TRUE)
expect_true(grepl("%", p$labels$x))
expect_true(grepl("%", p$labels$y))
})
test_that("rAMMIPlot contiene las capas esenciales", {
modelo <- generar_modelo_test()
p <- rAMMIPlot(modelo)
capas <- sapply(p$layers, function(x) class(x$geom)[1])
expect_true(any(capas == "GeomSegment"))
expect_true(any(capas == "GeomText"))
})
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.