Creates an interactive exercise object that can be used in tests without having to create a learnr tutorial.
Usage
mock_exercise(
user_code = "1 + 1",
label = "ex",
chunks = list(),
engine = "r",
global_setup = NULL,
setup_label = NULL,
solution_code = NULL,
code_check = NULL,
error_check = NULL,
check = NULL,
tests = NULL,
exercise.checker = NULL,
exercise.error.check.code = NULL,
exercise.df_print = "default",
exercise.warn_invisible = TRUE,
exercise.timelimit = 10,
fig.height = 4,
fig.width = 6.5,
fig.retina = 2,
version = current_exercise_version,
...
)
mock_chunk(label, code, exercise = FALSE, engine = "r", ...)
Arguments
- user_code, solution_code, global_setup
The user, solution, and global setup code, as strings.
- label
The label of the exercise.
- chunks
A list of chunks to use for the exercise. Use
mock_chunk()
to create chunks.- engine
The knitr language engine used by the exercise, equivalent to the engine used for the chunk with
exercise = TRUE
in a tutorial.- setup_label
The label of the chunk that contains the setup code. The chunk itself should be among the list of chunks provided to the
chunks
argument and the label of the setup chunk needs to match the label provided tosetup_label
.- check, code_check, error_check
The checking code, as a string, that would typically be provided in the
-check
,-code-check
and-error-check
chunks in a learnr tutorial.- tests
The a string with the exercise testing code that would be provided in the
-tests
chunk.- exercise.checker
The exercise checker function, as a string. By default, a debug exercise checker is set but will only be used if any of
check
,code_check
orerror_check
are provided.- exercise.error.check.code
The default code used for
error_check
and applied only whencheck
orcode_check
are provided and the user's code throws an error.- exercise.df_print, exercise.warn_invisible, exercise.timelimit, fig.height, fig.width, fig.retina
Common exercise chunk options.
- version
The exercise version to emulate, by default
mock_exercise()
will return an exercise that matches the current exercise version.- ...
Additional chunk options as if there were included in the exercise chunk.
- code
In
mock_chunk()
, the code in the mocked chunk.- exercise
In
mock_chunk()
, is this chunk the exercise chunk? If so,mock_exercise()
will not create the exercise chunk for you.
Functions
mock_exercise
: Create a learnr exercise objectmock_chunk
: Create a mock exercise-supporting chunk
Examples
mock_exercise(
user_code = "1 + 1",
solution_code = "2 + 2",
label = "two-plus-two"
)
#> ```{r "two-plus-two", exercise=TRUE}
#> 1 + 1
#> ```
# Global Setup
mock_exercise(
user_code = 'storms %>% filter(name = "Roxanne")',
solution_code = 'storms %>% filter(name == "Roxanne")',
global_setup = 'library(learnr)\nlibrary(dplyr)',
label = "filter-storms"
)
#> ```{r "filter-storms", exercise=TRUE}
#> storms %>% filter(name = "Roxanne")
#> ```
# Chained setup chunks
mock_exercise(
user_code = "roxanne",
solution_code = "roxanne %>%
group_by(year, month, day) %>%
summarize(wind = mean(wind))",
chunks = list(
mock_chunk(
label = "prep-roxanne",
code = 'roxanne <- storms %>% filter(name == "Roxanne")'
)
),
setup_label = "prep-roxanne",
global_setup = "library(learnr)\nlibrary(dplyr)"
)
#> ```{r "prep-roxanne"}
#> roxanne <- storms %>% filter(name == "Roxanne")
#> ```
#>
#> ```{r "ex", exercise.setup="prep-roxanne", exercise=TRUE}
#> roxanne
#> ```