Nothing
params <- NS_params
# validGearParams ----
test_that("validGearParams works", {
sp <- validSpeciesParams(
data.frame(species = c("species1", "species2"),
w_max = c(100, 1000),
stringsAsFactors = FALSE))
# gear_params is allowed to have zero rows
gp <- validGearParams(data.frame(), sp)
expect_identical(gp, data.frame(species = list(), gear = list()))
# There must be columns `species` and `gear`
gp <- data.frame(species = 1)
expect_error(validGearParams(gp, sp),
"`gear_params` must have columns 'species' and 'gear'.")
# Any species-gear pair is allowed to appear at most once
gp <- data.frame(species = c("species1", "species1"), gear = c("g", "g"),
stringsAsFactors = FALSE)
expect_error(validGearParams(gp, sp),
"Some species - gear pairs appear more than once.")
# Any species that appears must also appear in the `species_params` data frame.
gp <- data.frame(species = c("species1", "species3"), gear = c("g", "g"),
stringsAsFactors = FALSE)
expect_error(validGearParams(gp, sp),
"The gear_params dataframe contains species that do not exist in the model.")
# There must be a `sel_fun` column
gp <- validGearParams(
data.frame(species = c("species1", "species2"), gear = c("g", "g"),
stringsAsFactors = FALSE),
sp)
expect_identical(gp$sel_func, c("knife_edge", "knife_edge"))
expect_identical(gp$knife_edge_size, c(25, 250))
# There must be a catchability column
expect_identical(gp$catchability, c(1, 1))
# Defaults for NAs
gp$gear[[1]] <- NA
expect_identical(validGearParams(gp, sp)$gear[[1]], "species1")
gp$sel_func[[1]] <- NA
expect_identical(validGearParams(gp, sp)$sel_func[[1]], "knife_edge")
gp$catchability[[2]] <- NA
expect_identical(validGearParams(gp, sp)$catchability[[2]], 1)
gp$knife_edge_size[[2]] <- NA
expect_identical(validGearParams(gp, sp)$knife_edge_size[[2]], 250)
# The rownames must be of the form "species, gear"
gp$species <- c("species1", "species1")
gp$gear <- c("g1", "g2")
expect_identical(rownames(validGearParams(gp, sp)),
c("species1, g1", "species1, g2"))
})
# validEffortVector ----
test_that("validEffort works", {
params <- NS_params
ie <- params@initial_effort
# an already valid vector is not changed
expect_identical(validEffortVector(ie, params), ie)
# A scrambled vector is put in the right order
ies <- ie[c(2,3,1,4)]
expect_identical(validEffortVector(ies, params), ie)
# NA's are replaced by default
ie[2] <- 0
iesn <- ie
iesn[2] <- NA
expect_identical(validEffortVector(iesn, params), ie)
# A single number is converted into a constant vector
ie[] <- 2
expect_identical(validEffortVector(2, params), ie)
# A shortened vector is expanded with zeros
expect_identical(validEffortVector(ie[c(1,2,4)], params)[[3]], 0)
# The names are checked
names(ie)[[1]] <- "test"
expect_error(validEffortVector(ie, params),
"it has names that are not among the gear names")
})
test_that("validEffortParams works when no gears are set up", {
params <- newMultispeciesParams(NS_species_params,
gear_params = data.frame())
expect_length(validEffortVector(1, params), 0)
expect_length(validEffortVector(NULL, params), 0)
})
# setFishing and gear_params ----
test_that("Set Fishing works", {
params1 <- params
expect_identical(gear_params(params), params@gear_params)
expect_unchanged(params, setFishing(params))
gear_params(params) <- params@gear_params
expect_unchanged(params, params1)
})
test_that("Setting selectivity works", {
selectivity <- getSelectivity(params)
expect_identical(selectivity, params@selectivity)
selectivity[1, 1, 1] <- 111
comment(selectivity) <- "selectivity"
params <- setFishing(params, selectivity = selectivity)
expect_identical(params@selectivity[1, 1, 1], 111)
expect_identical(comment(getSelectivity(params)), "selectivity")
})
test_that("Setting catchability works", {
catchability <- getCatchability(params)
expect_identical(catchability, params@catchability)
catchability[2, 2] <- 22
comment(catchability) <- "catchability"
params <- setFishing(params, catchability = catchability)
expect_identical(params@catchability[2, 2], 22)
expect_identical(comment(getCatchability(params)), "catchability")
})
test_that("Comment works on selectivity", {
params <- NS_params
# if no comment, it is set automatically
selectivity <- params@selectivity
params <- setFishing(params, selectivity = selectivity)
expect_identical(comment(params@selectivity), "set manually")
# comment is stored
comment(selectivity) <- "test"
params <- setFishing(params, selectivity = selectivity)
expect_identical(comment(params@selectivity), "test")
# if no comment, previous comment is kept
comment(selectivity) <- NULL
params <- setFishing(params, selectivity = selectivity)
expect_identical(comment(params@selectivity), "test")
# no message when nothing changes
expect_message(setFishing(params), NA)
# but message when a change is not stored due to comment
params@gear_params$knife_edge_size <- 0
expect_message(setFishing(params), "has been commented")
# Can reset
p <- setFishing(params, reset = TRUE)
expect_equal(p@selectivity[1, 1, 1], 1,
check.attributes = FALSE)
expect_warning(setFishing(params, selectivity = selectivity,
reset = TRUE),
"Because you set `reset = TRUE`, the")
})
test_that("Comment works on catchability", {
params <- NS_params
# if no comment, it is set automatically
catchability <- params@catchability
params <- setFishing(params, catchability = catchability)
expect_identical(comment(params@catchability), "set manually")
# comment is stored
comment(catchability) <- "test"
params <- setFishing(params, catchability = catchability)
expect_identical(comment(params@catchability), "test")
# if no comment, previous comment is kept
comment(catchability) <- NULL
params <- setFishing(params, catchability = catchability)
expect_identical(comment(params@catchability), "test")
# no message when nothing changes
expect_message(setFishing(params), NA)
# but message when a change is not stored due to comment
params@gear_params$catchability <- 2
expect_message(setFishing(params), "has been commented")
# Can reset
p <- setFishing(params, reset = TRUE)
expect_equal(p@catchability[1, 1], 2,
check.attributes = FALSE)
expect_warning(setFishing(params, catchability = catchability,
reset = TRUE),
"Because you set `reset = TRUE`, the")
})
test_that("We can change gears via catchability and selectivity arrays", {
catchability <- getCatchability(params)
sel <- c(1, 2, 4)
expect_error(setFishing(params, catchability = catchability[sel, ]),
"you also need to supply a selectivity array")
selectivity <- getSelectivity(params)
p2 <- setFishing(params, catchability = catchability[sel, ],
selectivity = selectivity[sel, , ])
comment(p2@selectivity) <- NULL
expect_identical(p2@selectivity, selectivity[sel, , ])
comment(p2@catchability) <- NULL
expect_identical(p2@catchability, catchability[sel, ])
expect_identical(p2@initial_effort, params@initial_effort[sel])
expect_error(setFishing(params, catchability = catchability[sel, ],
selectivity = selectivity),
"not equal to no_gears")
})
test_that("Arguments of wrong dimension throw errors", {
catchability <- getCatchability(params)
expect_error(setFishing(params, catchability = catchability[, 1:3]),
"not equal to no_sp")
selectivity <- getSelectivity(params)
expect_error(setFishing(params, selectivity = selectivity[1:3, ]),
"incorrect number of dimensions")
expect_error(setFishing(params, selectivity = selectivity[1:3, , ]),
"not equal to no_gears")
})
test_that("Wrong dimnames throw errors or get fixed", {
catchability <- getCatchability(params)
cw <- catchability
dimnames(cw)[[1]][1] <- "wrong"
expect_error(setFishing(params, catchability = cw),
"The gear dimnames in the catchability array do not match the gear names.")
cw <- catchability
dimnames(cw)[[2]][1] <- "wrong"
expect_error(setFishing(params, catchability = cw),
"The species dimnames in the catchability array do not match the species names.")
selectivity <- getSelectivity(params)
sw <- selectivity
dimnames(sw)[[1]][1] <- "wrong"
expect_error(setFishing(params, selectivity = sw),
"The gear dimnames in the selectivity array do not match the gear names.")
sw <- selectivity
dimnames(sw)[[2]][1] <- "wrong"
expect_error(setFishing(params, selectivity = sw),
"The species dimnames in the selectivity array do not match the species names.")
sw <- selectivity
dimnames(sw)[[3]][1] <- "wrong"
expect_warning(setFishing(params, selectivity = sw),
"I have changed the size dimnames in the selectivity array to agree with mizer conventions.")
})
test_that("Dimensions after number of gears has increased", {
params <- NS_params
gear_params(params)$gear <- params@species_params$species
no_gears <- nrow(params@species_params)
expect_identical(dim(params@catchability)[[1]], no_gears)
expect_identical(dim(params@selectivity)[[1]], no_gears)
expect_identical(dimnames(params@catchability)[[1]],
params@species_params$species)
expect_identical(dimnames(params@selectivity)[[1]],
params@species_params$species)
# The initial effort has also changed
effort <- rep(0, no_gears)
names(effort) <- params@species_params$species
expect_identical(params@initial_effort, effort)
})
test_that("Duplicate gear-species pairs give error", {
gp <- rbind(NS_params@gear_params, NS_params@gear_params[1, ])
expect_error(gear_params(params) <- gp,
"Some species - gear pairs appear more than once")
})
test_that("Non-existing species give error", {
gp <- NS_params@gear_params
gp$species <- as.character(gp$species)
gp$species[[1]] <- "test"
expect_error(gear_params(params) <- gp,
"The gear_params dataframe contains species that do not exist in the model.")
})
test_that("Can get and set selectivity slot", {
params <- NS_params
new <- 2 * selectivity(params)
comment(new) <- "test"
selectivity(params) <- new
expect_identical(selectivity(params), new)
})
test_that("Can get and set catchability slot", {
params <- NS_params
new <- 2 * catchability(params)
comment(new) <- "test"
catchability(params) <- new
expect_identical(catchability(params), new)
})
test_that("Can get and set initial_effort slot", {
params <- NS_params
new <- 2 * initial_effort(params)
initial_effort(params) <- new
expect_identical(initial_effort(params), new)
})
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.