Тестирование предупреждений в R путем сравнения строк (лучшая идея?)
Я работаю над пакетом R, и мне нужна помощь в написании тестовых функций R, которые предназначены для проверки того, правильно ли выдается предупреждение в коде на стороне C, а затем перехватывается на стороне R. Позвольте мне рассказать вам о том, над чем я работаю:
Большая часть того, что я пишу, сделана на стороне C. Кроме того, у меня есть макрос типа if-оператор в C, который позволяет кодеру передавать предупреждение R в виде строки. Основная предпосылка заключается в том, что if (Statement_true) pass_warning_to_R («Предупреждающая строка для передачи»). Что я хотел бы сделать, так это проверить, генерируются ли эти предупреждения, когда я ожидаю / нуждаюсь в них, написав R-файл, который использует блоки tryCatch.Пока что я написал что-то похожее на это:
counter <- 0
tryCatch({
function_im_testing()
}, warning = function(war) {
# Check if warning is as expected and if so increment counter
if(toString(war)=="The warning I'm expecting/testing for"){
print(toString(war))
counter <- counter + 1
}
}, error = function(err) {
print(toString(err))
}, finally = {
print("Leaving tryCatch")
})
# Stop if the 3 warnings we expected aren't present
stopifnot(counter == 3)
Это метод, который я использую, и до сих пор я даже не смог заставить выполнить оператор if, пытаясь получить одинаковые toString (war) и «Warning for ожидаю / for for». вещь. Это, в дополнение к тому факту, что этот метод довольно небрежный и ненадежный, заставляет меня поверить, что есть лучший способ. Итак, есть ли лучший подход к этому?