tests/testthat/test-setInteraction.R

local_edition(3)
test_that("setInteraction works", {
    params <- NS_params
    no_sp <- nrow(params@species_params)
    
    expect_unchanged(setInteraction(params, interaction = params@interaction),
                     params)
    inter <- matrix(1/2, nrow = no_sp, ncol = no_sp)
    p2 <- setInteraction(params, inter)
    expect_equal(p2@interaction, inter, ignore_attr = TRUE)
    expect_error(setInteraction(params, inter[1:(no_sp - 1), ]),
                 "interaction matrix is not of the right dimensions")
    
    intera <- inter
    intera[1, 1] <- "a"
    expect_error(setInteraction(params, intera),
                 "The entries of the interaction matrix should be numeric.")
    intera <- inter
    intera[1, 1] <- -1
    expect_error(setInteraction(params, intera),
                 "All entries in the interaction matrix must be non-negative.")
    
    dimnames(inter) <- list(sp = params@species_params$species,
                            sp = params@species_params$species)
    expect_message(setInteraction(params, inter),
                   "Your interaction matrix has dimensions called: `sp, sp`. I expected 'predator, prey'")
    dimnames(inter) <- list(predator = rev(params@species_params$species),
                            prey = params@species_params$species)
    expect_message(setInteraction(params, inter),
                   "Dimnames of interaction matrix do not match")
    
    # If user only specifies column names, these are also used as rownames
    rownames(inter) <- as.character(1:no_sp)
    p2 <- setInteraction(params, inter)
    expect_identical(colnames(params@interaction), rownames(params@interaction))
    
    params@species_params$interaction_resource <- -1
    expect_error(setInteraction(params),
                 "Values in the resource interaction vector must be non-negative.")
    
})


test_that("getInteraction works", {
    params <- NS_params
    p <- setInteraction(params, interaction = params@interaction)
    expect_unchanged(params, p)
})

Try the mizer package in your browser

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

mizer documentation built on April 26, 2023, 5:12 p.m.