1library(recipes)
2library(testthat)
3
4# ------------------------------------------------------------------------------
5
6n <- 200
7
8set.seed(8575)
9ex_dat <- data.frame(
10  w = sample(letters[1:3], size = n, replace = TRUE),
11  x = rnorm(n),
12  z = rep(1:10, each = 20)
13)
14
15rec <- recipe(~ ., data = ex_dat)
16
17test_that('basic functionality', {
18  ex_1 <- rec %>%
19    step_num2factor(z, levels = rev(LETTERS[1:10])) %>%
20    prep(ex_dat) %>%
21    juice()
22  expect_true(inherits(ex_1$w, "factor"))
23  expect_true(inherits(ex_1$x, "numeric"))
24  expect_true(inherits(ex_1$z, "factor"))
25  expect_equal(levels(ex_1$z), rev(LETTERS[1:10]))
26
27  ex_2 <- rec %>%
28    step_num2factor(z, ordered = TRUE, levels = rev(LETTERS[1:10])) %>%
29    prep(ex_dat) %>%
30    juice
31  expect_true(inherits(ex_2$w, "factor"))
32  expect_true(inherits(ex_2$x, "numeric"))
33  expect_true(inherits(ex_2$z, "ordered"))
34  expect_equal(levels(ex_1$z), rev(LETTERS[1:10]))
35})
36
37test_that('bad args', {
38  expect_error(
39    rec %>%
40      step_num2factor(w, x, levels = c("one", "two")) %>%
41      prep(ex_dat),
42    "All columns selected for the step should be numeric"
43  )
44  expect_error(
45    rec %>%
46      step_num2factor(w, x) %>%
47      prep(ex_dat),
48    "Please provide a character vector of"
49  )
50})
51
52
53test_that('printing', {
54  ex_3 <- rec %>%
55    step_num2factor(z, levels = letters) %>%
56    prep(ex_dat, strings_as_factors = FALSE)
57  expect_output(print(ex_3))
58  expect_output(prep(ex_3, training = ex_dat, verbose = TRUE))
59})
60
61
62