52 lines
1.2 KiB
R
52 lines
1.2 KiB
R
|
|
reset <- function() {
|
|
testRcppInterfaceUser::reset_flags()
|
|
testRcppInterfaceExporter::reset_flags()
|
|
}
|
|
|
|
|
|
# This tests errors converted to exceptions by Rcpp_eval()
|
|
x <- tryCatch(
|
|
error = identity,
|
|
testRcppInterfaceUser::use_cpp_interface(quote(stop("jump!")))
|
|
)
|
|
|
|
stopifnot(
|
|
grepl("jump!", x$message),
|
|
testRcppInterfaceUser::peek_flag("cpp_interface_downstream"),
|
|
testRcppInterfaceExporter::peek_flag("cpp_interface_upstream")
|
|
)
|
|
|
|
|
|
reset()
|
|
|
|
# This tests errors converted to resumable longjumps by Rcpp_fast_eval()
|
|
x <- tryCatch(
|
|
error = identity,
|
|
testRcppInterfaceUser::use_cpp_interface(quote(stop("jump!")), fast = TRUE)
|
|
)
|
|
|
|
stopifnot(
|
|
grepl("jump!", x$message),
|
|
testRcppInterfaceUser::peek_flag("cpp_interface_downstream"),
|
|
testRcppInterfaceExporter::peek_flag("cpp_interface_upstream")
|
|
)
|
|
|
|
|
|
reset()
|
|
|
|
# This tests longjumps not caught by Rcpp_eval()
|
|
x <- withRestarts(
|
|
here = identity,
|
|
testRcppInterfaceUser::use_cpp_interface(quote(invokeRestart("here", "value")))
|
|
)
|
|
|
|
stopifnot(identical(x, "value"))
|
|
|
|
if (getRversion() >= "3.5.0") {
|
|
stopifnot(
|
|
testRcppInterfaceUser::peek_flag("cpp_interface_downstream"),
|
|
testRcppInterfaceExporter::peek_flag("cpp_interface_upstream")
|
|
)
|
|
}
|