diff --git a/R/Export.R b/R/Export.R index e212c374..19be989c 100644 --- a/R/Export.R +++ b/R/Export.R @@ -239,7 +239,10 @@ enforceMinCellValue <- function(data, fieldName, minValues, silent = FALSE) { " because value below minimum" ) } - if (length(minValues) == 1) { + + if (all(is.na(toCensor))) { + data[, fieldName] <- NA + } else if (length(minValues) == 1) { data[toCensor, fieldName] <- -minValues } else { data[toCensor, fieldName] <- -minValues[toCensor] diff --git a/tests/testthat/test-enforceMinCellValue.R b/tests/testthat/test-enforceMinCellValue.R new file mode 100644 index 00000000..7fa47de6 --- /dev/null +++ b/tests/testthat/test-enforceMinCellValue.R @@ -0,0 +1,15 @@ +test_that("enforceMinCellValue works as expected", { + test_data <- data.frame( + A = c(1, 2, 3, NA, 0) + ) + result <- enforceMinCellValue(test_data, "A", 2) + expect_equal(result$A, c(-2, 2, 3, NA, 0)) +}) + + +test_that("minCellValue handles bad inputs", { + x <- data.frame(a = c(0.1, 0.002)) + res <- enforceMinCellValue(x, "a", NaN) + checkmate::expect_data_frame(res) + expect_true(all(is.na(res$a))) +}) \ No newline at end of file