R: Создание тестовых случаев типа lapply () - PullRequest
2 голосов
/ 21 июля 2010

Я работал над кодом для создания функции параллельного типа lapply (), которая использует движок Amazon Elastic Map Reduce в качестве «сетки» для обработки (да, это маппер без редуктора). После того, как я получу стабильный код, я абстрагирую его как бэкэнд foreach. Но сначала мне нужно создать тесты для проверки кода, который у меня есть.

Какие были бы хорошие тестовые случаи для этой функции?

Мой канонический тестовый пример сейчас выглядит следующим образом:

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 Ответ

1 голос
/ 05 января 2011

Что произойдет, если вы сдадите emrlapply

  • Список векторов символов
  • Пустой список
  • Список, который является пустым только после того, как все значения NA были удалены
  • NULL
  • Вектор (lapply работает с векторами)
  • Матрица
  • Data.frame
  • Список списков

Вам также необходим тест, чтобы проверить, правильно ли ваша функция обрабатывает EMR, если она недоступна или отсутствуют необходимые пакеты.

...