Nothing
# test-remaining-coverage.R
# Targeted tests for remaining coverage gaps.
with_null_device <- function(expr) {
grDevices::pdf(NULL)
on.exit(grDevices::dev.off(), add = TRUE)
force(expr)
}
# ---- PCM model path (hits PCM-specific code in pathway map, CCC, etc.) ----
test_that("PCM model path exercises PCM-specific plotting", {
d <- mfrmr:::sample_mfrm_data(seed = 42)
fit <- suppressWarnings(
fit_mfrm(d, "Person", c("Rater", "Task", "Criterion"), "Score",
model = "PCM", method = "JML", step_facet = "Criterion", maxit = 20)
)
expect_s3_class(fit, "mfrm_fit")
expect_equal(fit$summary$Model[[1]], "PCM")
# PCM plot paths
with_null_device(plot(fit, type = "wright", draw = TRUE))
with_null_device(plot(fit, type = "pathway", draw = TRUE))
with_null_device(plot(fit, type = "ccc", draw = TRUE))
with_null_device(plot(fit, type = "person", draw = TRUE))
with_null_device(plot(fit, type = "step", draw = TRUE))
})
test_that("PCM diagnostics and reports work", {
d <- mfrmr:::sample_mfrm_data(seed = 42)
fit <- suppressWarnings(
fit_mfrm(d, "Person", c("Rater", "Task", "Criterion"), "Score",
model = "PCM", method = "JML", step_facet = "Criterion", maxit = 20)
)
diag <- diagnose_mfrm(fit)
expect_s3_class(diag, "mfrm_diagnostics")
rs <- rating_scale_table(fit, diagnostics = diag)
expect_s3_class(rs, "mfrm_rating_scale")
with_null_device(plot(rs, draw = TRUE))
cs <- category_structure_report(fit, diagnostics = diag)
expect_s3_class(cs, "mfrm_bundle")
with_null_device(plot(cs, draw = TRUE))
})
# ---- Interrater agreement drawing sub-types ----
test_that("interrater agreement draws all plot types", {
d <- mfrmr:::sample_mfrm_data(seed = 42)
fit <- suppressWarnings(
fit_mfrm(d, "Person", c("Rater", "Task", "Criterion"), "Score",
method = "JML", maxit = 20)
)
diag <- diagnose_mfrm(fit)
ia <- interrater_agreement_table(fit, diagnostics = diag)
with_null_device(plot(ia, plot = "exact", draw = TRUE))
with_null_device(plot(ia, plot = "corr", draw = TRUE))
with_null_device(plot(ia, plot = "difference", draw = TRUE))
})
# ---- Unexpected response - severity bar plot ----
test_that("unexpected response draws severity type", {
d <- mfrmr:::sample_mfrm_data(seed = 42)
fit <- suppressWarnings(
fit_mfrm(d, "Person", c("Rater", "Task", "Criterion"), "Score",
method = "JML", maxit = 20)
)
diag <- diagnose_mfrm(fit)
ut <- unexpected_response_table(fit, diagnostics = diag)
with_null_device(plot(ut, plot = "severity", draw = TRUE))
})
# ---- Fair average - multiple facets ----
test_that("fair_average_table exercises per-facet paths", {
d <- mfrmr:::sample_mfrm_data(seed = 42)
fit <- suppressWarnings(
fit_mfrm(d, "Person", c("Rater", "Task", "Criterion"), "Score",
method = "JML", maxit = 20)
)
diag <- diagnose_mfrm(fit)
fa <- fair_average_table(fit, diagnostics = diag)
# Plot for each facet
for (facet_name in names(fa$by_facet)) {
with_null_device(plot(fa, facet = facet_name, draw = TRUE))
}
})
# ---- Displacement drawing ----
test_that("displacement table draws severity and histogram", {
d <- mfrmr:::sample_mfrm_data(seed = 42)
fit <- suppressWarnings(
fit_mfrm(d, "Person", c("Rater", "Task", "Criterion"), "Score",
method = "JML", maxit = 20)
)
diag <- diagnose_mfrm(fit)
dt <- displacement_table(fit, diagnostics = diag)
with_null_device(plot(dt, plot = "lollipop", draw = TRUE))
with_null_device(plot(dt, plot = "hist", draw = TRUE))
})
# ---- Chi-square drawing sub-types ----
test_that("facets_chisq draws scatter and bar plots", {
d <- mfrmr:::sample_mfrm_data(seed = 42)
fit <- suppressWarnings(
fit_mfrm(d, "Person", c("Rater", "Task", "Criterion"), "Score",
method = "JML", maxit = 20)
)
diag <- diagnose_mfrm(fit)
fc <- facets_chisq_table(fit, diagnostics = diag)
with_null_device(plot(fc, plot = "fixed", draw = TRUE))
with_null_device(plot(fc, plot = "random", draw = TRUE))
})
# ---- Output bundle (graphfile/scorefile) plot sub-types ----
test_that("output bundle draws all graph types", {
d <- mfrmr:::sample_mfrm_data(seed = 42)
fit <- suppressWarnings(
fit_mfrm(d, "Person", c("Rater", "Task", "Criterion"), "Score",
method = "JML", maxit = 20)
)
diag <- diagnose_mfrm(fit)
# facets_output_file_bundle if it exists
bundle <- tryCatch(
mfrmr:::facets_output_file_bundle(fit, diagnostics = diag),
error = function(e) NULL
)
if (!is.null(bundle)) {
with_null_device(plot(bundle, type = "graph_expected", draw = TRUE))
with_null_device(plot(bundle, type = "score_residuals", draw = TRUE))
with_null_device(plot(bundle, type = "obs_probability", draw = TRUE))
}
})
# ---- Anchor audit with actual anchors ----
test_that("audit_mfrm_anchors with anchors exercises more branches", {
d <- mfrmr:::sample_mfrm_data(seed = 1)
anchors <- data.frame(
Facet = c("Rater", "Rater", "Task"),
Level = c("R1", "R2", "T1"),
Anchor = c(0.5, -0.3, 0.1)
)
audit <- audit_mfrm_anchors(
d, "Person", c("Rater", "Task", "Criterion"), "Score",
anchors = anchors
)
expect_s3_class(audit, "mfrm_anchor_audit")
s <- summary(audit)
expect_s3_class(s, "summary.mfrm_anchor_audit")
out <- capture.output(print(s))
expect_true(length(out) > 0)
})
# ---- apa_table with which parameter ----
test_that("apa_table with different which values", {
d <- mfrmr:::sample_mfrm_data(seed = 42)
fit <- suppressWarnings(
fit_mfrm(d, "Person", c("Rater", "Task", "Criterion"), "Score",
method = "JML", maxit = 20)
)
diag <- diagnose_mfrm(fit)
at1 <- apa_table(fit, diagnostics = diag, which = "fit")
expect_s3_class(at1, "apa_table")
at2 <- apa_table(fit, diagnostics = diag, which = "reliability")
expect_s3_class(at2, "apa_table")
})
# ---- build_fixed_reports with both branches ----
test_that("build_fixed_reports works with original branch", {
d <- mfrmr:::sample_mfrm_data(seed = 42)
fit <- suppressWarnings(
fit_mfrm(d, "Person", c("Rater", "Task", "Criterion"), "Score",
method = "JML", maxit = 20)
)
diag <- diagnose_mfrm(fit)
bias <- estimate_bias(fit, diag, facet_a = "Rater", facet_b = "Task")
fr_orig <- build_fixed_reports(bias, branch = "original")
expect_true(is.list(fr_orig))
fr_facets <- build_fixed_reports(bias, branch = "facets")
expect_true(is.list(fr_facets))
})
# ---- MML model with all reports ----
test_that("MML path exercises different code branches", {
skip_on_cran()
d <- mfrmr:::sample_mfrm_data(seed = 42)
fit <- suppressWarnings(
fit_mfrm(d, "Person", c("Rater", "Task", "Criterion"), "Score",
method = "MML", maxit = 30, quad_points = 7)
)
expect_s3_class(fit, "mfrm_fit")
expect_equal(fit$summary$Method[[1]], "MML")
# Diagnostics
diag <- diagnose_mfrm(fit)
expect_s3_class(diag, "mfrm_diagnostics")
# APA outputs
apa <- build_apa_outputs(fit, diagnostics = diag)
expect_s3_class(apa, "mfrm_apa_outputs")
# Visual summaries
vs <- build_visual_summaries(fit, diagnostics = diag)
expect_true(is.list(vs))
# All table functions
ut <- unexpected_response_table(fit, diagnostics = diag)
expect_s3_class(ut, "mfrm_unexpected")
fa <- fair_average_table(fit, diagnostics = diag)
expect_s3_class(fa, "mfrm_fair_average")
dt <- displacement_table(fit, diagnostics = diag)
expect_s3_class(dt, "mfrm_displacement")
ms <- measurable_summary_table(fit, diagnostics = diag)
expect_s3_class(ms, "mfrm_bundle")
rs <- rating_scale_table(fit, diagnostics = diag)
expect_s3_class(rs, "mfrm_rating_scale")
})
# ---- facets_mode_methods.R coverage ----
test_that("summary.mfrm_facets_run and print work", {
d <- mfrmr:::sample_mfrm_data(seed = 42)
out <- suppressWarnings(
run_mfrm_facets(d, person = "Person",
facets = c("Rater", "Task", "Criterion"),
score = "Score", maxit = 15)
)
s <- summary(out)
expect_s3_class(s, "summary.mfrm_facets_run")
printed <- capture.output(print(s))
expect_true(any(grepl("Legacy-compatible", printed)))
# Direct print delegates to summary
printed2 <- capture.output(print(out))
expect_true(length(printed2) > 0)
})
# ---- Additional describe_mfrm_data coverage ----
test_that("describe_mfrm_data with multiple facets and context_facets", {
d <- mfrmr:::sample_mfrm_data(seed = 1)
ds <- describe_mfrm_data(d, "Person", c("Rater", "Task", "Criterion"), "Score",
context_facets = c("Rater", "Task"))
expect_s3_class(ds, "mfrm_data_description")
# context_facets parameter accepted without error
expect_true(is.list(ds))
})
# ---- positive_facets and noncenter_facet edge cases ----
test_that("fit_mfrm with positive_facets works", {
d <- mfrmr:::sample_mfrm_data(seed = 42)
fit <- suppressWarnings(
fit_mfrm(d, "Person", c("Rater", "Task", "Criterion"), "Score",
method = "JML", maxit = 20,
positive_facets = c("Task"))
)
expect_s3_class(fit, "mfrm_fit")
})
test_that("fit_mfrm with noncenter_facet works", {
d <- mfrmr:::sample_mfrm_data(seed = 42)
fit <- suppressWarnings(
fit_mfrm(d, "Person", c("Rater", "Task", "Criterion"), "Score",
method = "JML", maxit = 20,
noncenter_facet = "Rater")
)
expect_s3_class(fit, "mfrm_fit")
})
# ---- list_mfrmr_data ----
test_that("list_mfrmr_data returns available datasets", {
ds <- list_mfrmr_data()
expect_true(is.character(ds))
expect_true(length(ds) > 0)
expect_true("study1" %in% ds || "ej2021_study1" %in% ds)
})
# ---- load_mfrmr_data ----
test_that("load_mfrmr_data loads all available datasets", {
available <- list_mfrmr_data()
for (name in available[1:min(3, length(available))]) {
d <- load_mfrmr_data(name)
expect_true(is.data.frame(d))
expect_true(nrow(d) > 0)
}
})
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.