tests/testthat/test-setMaxIntakeRate.R

# setMaxIntakeRate ----
test_that("setMaxIntakeRate works", {
    params <- NS_params_small
    params@species_params$h <- 2 * params@species_params$h
    p2 <- setMaxIntakeRate(params)
    expect_identical(2 * params@intake_max, p2@intake_max)
    # only intake max changed
    p2@intake_max <- params@intake_max
    expect_unchanged(p2, params)
})

test_that("Comment works on intake_max", {
    params <- NS_params_small
    # if no comment, it is set automatically
    intake_max <- params@intake_max
    params <- setMaxIntakeRate(params, intake_max = intake_max)
    expect_identical(comment(params@intake_max), "set manually")
    
    # comment is stored
    comment(intake_max) <- "test"
    params <- setMaxIntakeRate(params, intake_max = intake_max)
    expect_identical(comment(params@intake_max), "test")
    
    # if no comment, previous comment is kept
    comment(intake_max) <- NULL
    params <- setMaxIntakeRate(params, intake_max = intake_max)
    expect_identical(comment(params@intake_max), "test")
    
    # no message when nothing changes
    expect_message(setMaxIntakeRate(params), NA)
    # but message when a change is not stored due to comment
    params@species_params$h <- 1
    expect_message(setMaxIntakeRate(params),  "has been set manually")
    # Can reset
    p <- setMaxIntakeRate(params, reset = TRUE)
    expect_equal(p@intake_max[, 1], params@w[1]^params@species_params[["n"]],
                 ignore_attr = TRUE)
    expect_warning(setMaxIntakeRate(params, intake_max = intake_max,
                                    reset = TRUE),
                   "Because you set `reset = TRUE`, the")
})

# intake_max ----
test_that("intake_max works", {
    expect_true(is.ArraySpeciesBySize(intake_max(NS_params_small)))
    expect_equal(intake_max(NS_params_small), NS_params_small@intake_max,
                 ignore_attr = TRUE)
})

test_that("Can get and set slot", {
    params <- NS_params_small
    intake_max <- intake_max(params)
    expect_identical(intake_max(params), intake_max)
    new <- 2 * intake_max
    comment(new) <- "test"
    intake_max(params) <- new
    expect_equal(intake_max(params), new, ignore_attr = TRUE)
    expect_identical(comment(params@intake_max), "test")
})

test_that("setMaxIntakeRate validates manual arrays", {
    params <- NS_params_small
    new <- intake_max(params)

    bad_names <- new
    dimnames(bad_names)[[1]] <- rev(dimnames(bad_names)[[1]])
    expect_error(setMaxIntakeRate(params, intake_max = bad_names),
                 "same ordering of species")

    bad_values <- new
    bad_values[1, 1] <- -1
    expect_error(setMaxIntakeRate(params, intake_max = bad_values))
})

Try the mizer package in your browser

Any scripts or data that you put into this service are public.

mizer documentation built on Aug. 31, 2026, 5:08 p.m.