1library(testthat)
2library(tibble)
3library(modeldata)
4data(biomass)
5
6biomass_tr <- biomass[biomass$dataset == "Training",]
7biomass_te <- biomass[biomass$dataset == "Testing",]
8
9test_that('basic steps', {
10  rec_1 <-
11    recipe(HHV ~ carbon + hydrogen + oxygen + nitrogen + sulfur,
12           data = biomass_tr) %>%
13    step_mutate(hydrogen = hydrogen/2) %>%
14    step_ratio(hydrogen, oxygen, nitrogen, denom = vars(carbon)) %>%
15    step_corr(all_predictors(), threshold = .6) %>%
16    prep()
17
18  cols_1 <- c("hydrogen", "nitrogen", "sulfur", "HHV", "oxygen_o_carbon")
19
20  expect_equal(
21    names(juice(rec_1)),
22    cols_1
23  )
24  expect_equal(
25    names(bake(rec_1, biomass_te)),
26    cols_1
27  )
28
29  expect_equal(
30    names(juice(rec_1, all_predictors())),
31    cols_1[cols_1 != "HHV"]
32  )
33  expect_equal(
34    names(bake(rec_1, biomass_te, all_predictors())),
35    cols_1[cols_1 != "HHV"]
36  )
37})
38
39
40test_that('skipped steps', {
41  rec_2 <-
42    recipe(HHV ~ carbon + hydrogen + oxygen + nitrogen + sulfur,
43           data = biomass_tr) %>%
44    step_mutate(hydrogen = hydrogen/2) %>%
45    step_ratio(hydrogen, oxygen, nitrogen, denom = vars(carbon)) %>%
46    step_corr(all_predictors(), threshold = .6, skip = TRUE) %>%
47    prep()
48
49  cols_1 <- c(
50    "hydrogen",
51    "nitrogen",
52    "sulfur",
53    "HHV",
54    "oxygen_o_carbon"
55  )
56
57  # Ordering relative to the original specification of the recipe is
58  # preserved (i.e. carbon was the first column specified, and since we
59  # skipped the step that would drop it, it appears first in the result)
60  cols_2 <- c(
61    "carbon",
62    "hydrogen",
63    "oxygen",
64    "nitrogen",
65    "sulfur",
66    "HHV",
67    "hydrogen_o_carbon",
68    "oxygen_o_carbon",
69    "nitrogen_o_carbon"
70  )
71
72  expect_equal(
73    names(juice(rec_2)),
74    cols_1
75  )
76  expect_equal(
77    names(bake(rec_2, biomass_te)),
78    cols_2
79  )
80
81  expect_equal(
82    names(juice(rec_2, all_predictors())),
83    cols_1[cols_1 != "HHV"]
84  )
85  expect_equal(
86    names(bake(rec_2, biomass_te, all_predictors())),
87    cols_2[cols_2 != "HHV"]
88  )
89})
90
91
92test_that('remove and add a column', {
93  rec_3 <-
94    recipe(HHV ~ carbon + hydrogen + oxygen + nitrogen + sulfur,
95           data = biomass_tr) %>%
96    step_rm(HHV) %>%
97    step_ratio(hydrogen, oxygen, nitrogen, denom = vars(carbon)) %>%
98    step_corr(all_predictors(), threshold = .6) %>%
99    step_mutate(HHV = 17) %>%
100    prep()
101
102  cols_3 <- c("hydrogen", "nitrogen", "sulfur", "oxygen_o_carbon", "HHV")
103
104  expect_equal(
105    names(juice(rec_3)),
106    cols_3
107  )
108  expect_equal(
109    names(bake(rec_3, biomass_te)),
110    cols_3
111  )
112
113  expect_equal(
114    names(juice(rec_3, all_predictors())),
115    cols_3[cols_3 != "HHV"]
116  )
117  expect_equal(
118    names(bake(rec_3, biomass_te, all_predictors())),
119    cols_3[cols_3 != "HHV"]
120  )
121})
122
123test_that('extra roles', {
124  rec_4 <-
125    recipe(HHV ~ carbon + hydrogen + oxygen + nitrogen + sulfur,
126           data = biomass_tr) %>%
127    add_role(nitrogen, new_role = "drummer") %>%
128    step_rm(HHV) %>%
129    step_ratio(hydrogen, oxygen, nitrogen, denom = vars(carbon)) %>%
130    step_corr(all_predictors(), threshold = .6) %>%
131    step_mutate(HHV = 17) %>%
132    prep()
133
134  cols_3 <- c("hydrogen", "nitrogen", "sulfur", "oxygen_o_carbon", "HHV")
135
136  expect_equal(
137    names(juice(rec_4)),
138    cols_3
139  )
140  expect_equal(
141    names(bake(rec_4, biomass_te)),
142    cols_3
143  )
144
145  expect_equal(
146    names(juice(rec_4, all_predictors())),
147    cols_3[cols_3 != "HHV"]
148  )
149  expect_equal(
150    names(bake(rec_4, biomass_te, all_predictors())),
151    cols_3[cols_3 != "HHV"]
152  )
153})
154
155
156
157
158
159
160
161