R: создание тестовых случаев типа lapply()
Я работал над кодом для создания параллельной функции типа lapply (), которая использует механизм Amazon Elastic Map Reduce в качестве "сетки" для обработки (да, это картограф без редуктора). После того, как я получу стабильный код, я абстрагирую его как форек-сервер. Но сначала мне нужно построить тесты, чтобы проверить код, который у меня есть.
Каковы были бы некоторые хорошие тестовые случаи для этой функции?
Мой канонический тестовый случай прямо сейчас выглядит следующим образом:
myList <- NULL
set.seed(1)
for (i in 1:10){
a <- c(rnorm(999), NA)
myList[[i]] <- a
}
outputLocal <- lapply(myList, mean, na.rm=T)
outputEmr <- emrlapply(myList, mean, myCluster, na.rm=T)
all.equal(outputEmr, outputLocal)
Этот тестовый случай гарантирует, что необязательный аргумент na.rm=T
передается правильно на удаленные машины. Какие еще тестовые случаи я мог бы использовать? В настоящее время я не поддерживаю аргументы simplify
или USE.NAMES
, хотя буду поддерживать их в будущем.
1 ответ:
Что произойдет, если вы пройдете
emrlapply
- список векторов символов
- пустой список
- список, который пуст только после удаления всех значений
NA
NULL
- вектор (
lapply
работает с векторами)- матрица
- a данные.каркас
- список списков
Вам также нужен тест, чтобы увидеть, если ваша функция изящно обрабатывает EMR, не будучи доступной или не имея необходимых пакетов.