
Index mutation mutators
index_mutations.RdReturns a ready-made list of index_increment() and index_decrement()
mutators that shift every simple subscript index by 1.
Details
Use on any file that extracts elements from vectors or lists by position. Surviving mutants reveal off-by-one errors where tests only verify that something was extracted, not which element — asserting the exact value of the extracted element kills them.
See also
vignette("mutators", package = "muttest") for the full mutator table.
vignette("interpreting-results", package = "muttest") for how to
diagnose survivors and fix the underlying test weakness.
Examples
index_mutations()
#> [[1]]
#> Mutator: x[<i>] → x[<i> + 1L]
#> Query: [(subset arguments: (arguments (argument value: [(identifier) (float) (integer)] @index))) (subset2 arguments: (arguments (argument value: [(identifier) (float) (integer)] @index)))]
#>
#> [[2]]
#> Mutator: x[<i>] → x[<i> - 1L]
#> Query: [(subset arguments: (arguments (argument value: [(identifier) (float) (integer)] @index))) (subset2 arguments: (arguments (argument value: [(identifier) (float) (integer)] @index)))]
#>
if (FALSE) { # \dontrun{
plan <- muttest_plan(
source_files = "R/selectors.R",
mutators = index_mutations()
)
muttest(plan, "tests/testthat")
} # }