|
1 | 1 | # Tests of assigning multiple fields of an nClass from a list or environment |
2 | 2 |
|
3 | | -library(nCompiler) |
4 | | -library(testthat) |
| 3 | +# library(nCompiler) |
| 4 | +# library(testthat) |
5 | 5 |
|
6 | 6 | test_that("assigning multiple fields of an nClass from a list works", { |
7 | 7 |
|
@@ -48,65 +48,67 @@ test_that("assigning multiple fields of an nClass from a list works", { |
48 | 48 |
|
49 | 49 | obj1a <- comp$nc1() |
50 | 50 | value(obj1a, "x") <- 1:3 |
51 | | - value(obj1a, "x") |
52 | | - value(obj1a) <- list(x = 1:3, y = TRUE) |
53 | | - value(obj1a, "x") |
54 | | - value(obj1a, "y") |
| 51 | + expect_equal(value(obj1a, "x"), 1:3) |
| 52 | + expect_equal(value(obj1a, "y"), logical()) |
| 53 | + value(obj1a) <- list(x = 2:4, y = TRUE) |
| 54 | + expect_equal(value(obj1a, "x"), 2:4) |
| 55 | + expect_equal(value(obj1a, "y"), TRUE) |
55 | 56 | value(obj1a) <- list(x = 4:6) |
56 | | - value(obj1a, "x") |
57 | | - value(obj1a, "y") |
| 57 | + expect_equal(value(obj1a, "x"), 4:6) |
| 58 | + expect_equal(value(obj1a, "y"), TRUE) |
58 | 59 | value(obj1a) <- list(y = c(1, 0, 1)) |
59 | | - value(obj1a, "x") |
60 | | - value(obj1a, "y") |
| 60 | + expect_equal(value(obj1a, "x"), 4:6) |
| 61 | + expect_equal(value(obj1a, "y"), as.logical(c(1,0,1))) |
61 | 62 | value(obj1a) <- list(not_there = 100) |
62 | | - value(obj1a, "x") |
63 | | - value(obj1a, "y") |
64 | | - |
| 63 | + expect_equal(value(obj1a, "x"), 4:6) |
| 64 | + expect_equal(value(obj1a, "y"), as.logical(c(1,0,1))) |
65 | 65 |
|
66 | 66 | value(obj1a) <- as.environment(list(x = 7:9, y = c(0, 1))) |
67 | | - value(obj1a, "x") |
68 | | - value(obj1a, "y") |
| 67 | + expect_equal(value(obj1a, "x"), 7:9) |
| 68 | + expect_equal(value(obj1a, "y"), as.logical(c(0,1))) |
69 | 69 | value(obj1a) <- as.environment(list(y = FALSE)) |
70 | | - value(obj1a, "x") |
71 | | - value(obj1a, "y") |
| 70 | + expect_equal(value(obj1a, "x"), 7:9) |
| 71 | + expect_equal(value(obj1a, "y"), FALSE) |
72 | 72 | value(obj1a) <- as.environment(list(not_there = 100)) |
73 | | - value(obj1a, "x") |
74 | | - value(obj1a, "y") |
| 73 | + expect_equal(value(obj1a, "x"), 7:9) |
| 74 | + expect_equal(value(obj1a, "y"), FALSE) |
75 | 75 |
|
76 | 76 | obj2a <- comp$nc2() |
77 | | - value(obj2a, "my_nc1") |> value("x") |
| 77 | + expect_identical(value(obj2a, "my_nc1") |> value("x"), numeric()) |
78 | 78 | value(obj2a) <- list(z = 42, my_nc1 = obj1a) |
79 | | - value(obj2a, "z") |
80 | | - value(obj2a, "my_nc1") |> value("x") |
81 | | - value(obj2a, "my_nc1") |> value("y") |
| 79 | + expect_equal(value(obj2a, "z"), 42) |
| 80 | + expect_equal(value(obj2a, "my_nc1") |> value("x"), 7:9) |
| 81 | + expect_equal(value(obj2a, "my_nc1") |> value("y"), FALSE) |
82 | 82 |
|
83 | 83 | value( value(obj2a, "my_nc1"), "x") <- 101:103 |
84 | | - value(obj1a, "x") |
| 84 | + expect_equal(value(obj1a, "x"), 101:103) |
85 | 85 |
|
86 | 86 | value( value(obj2a, "my_nc1") ) <- list(x = 104:106, y = c(1,1,1)) |
87 | | - value(obj1a, "x") |
88 | | - value(obj1a, "y") |
89 | | - |
90 | | - value(obj2a, "my_nc1") <- list(x = 201:203, y = c(0,0,0)) # makes new object |
91 | | - expect_equal(value(obj1a, "x"), 104:106) # old values, because obj2a$my_nc1 is new |
92 | | - expect_equal(value(obj1a, "y"), c(T, T, T)) |
93 | | - obj1b <- value(obj2a, "my_nc1") # new object |
94 | | - expect_equal(value(obj1b, "x"), 201:203) # new values |
95 | | - expect_equal(value(obj1b, "y"), c(F, F, F)) |
| 87 | + expect_equal(value(obj1a, "x"), 104:106) |
| 88 | + expect_equal(value(obj1a, "y"), as.logical(c(1,1,1))) |
96 | 89 |
|
97 | | - value(obj2a, "my_nc1") <- as.environment(list(x = 301:303)) # makes new object |
| 90 | + value(obj2a, "my_nc1") <- list(x = 201:203, y = c(0,0,0)) |
| 91 | + expect_equal(value(obj1a, "x"), 201:203) |
| 92 | + expect_equal(value(obj1a, "y"), as.logical(c(0,0,0))) |
| 93 | + obj1b <- value(obj2a, "my_nc1") |
98 | 94 | expect_equal(value(obj1b, "x"), 201:203) |
99 | 95 | expect_equal(value(obj1b, "y"), c(F, F, F)) |
| 96 | + |
| 97 | + value(obj2a, "my_nc1") <- as.environment(list(x = 301:303)) |
| 98 | + expect_equal(value(obj1b, "x"), 301:303) |
| 99 | + expect_equal(value(obj1b, "y"), c(F, F, F)) |
100 | 100 | obj1c <- value(obj2a, "my_nc1") |
101 | 101 | expect_equal(value(obj1c, "x"), 301:303) |
102 | | - expect_equal(value(obj1c, "y"), logical()) |
| 102 | + expect_equal(value(obj1c, "y"), c(F,F,F)) |
103 | 103 |
|
104 | | - value(obj2a, "my_null_nc1") <- list(x = 1:3, y = TRUE) |
105 | | - value(obj2a, "my_null_nc1") |> value("x") |
| 104 | + value(obj2a, "my_null_nc1") <- list(x = 1:3, y = TRUE) # makes new object |
| 105 | + expect_equal(value(obj2a, "my_null_nc1") |> value("x"), 1:3) |
106 | 106 | value(obj2a, "my_null_nc1") <- as.environment(list(x = 4:6, y = TRUE)) |
107 | | - value(obj2a, "my_null_nc1") |> value("x") |
| 107 | + expect_equal(value(obj2a, "my_null_nc1") |> value("x"), 4:6) |
| 108 | + expect_equal(value(obj2a, "my_null_nc1") |> value("y"), TRUE) |
108 | 109 |
|
109 | 110 | expect_error(value(obj2a, "my_nc0") <- list(w = 1:3)) |
| 111 | + rm(obj1a, obj1b, obj2a); gc() |
110 | 112 | }) |
111 | 113 |
|
112 | 114 |
|
@@ -151,90 +153,100 @@ test_that("assigning multiple fields of an nClass from a list works", { |
151 | 153 |
|
152 | 154 | comp <- nCompile(nc0, nc1, nc2, interfaces = "full") |
153 | 155 |
|
| 156 | + # Use the tests above because generic interface |
| 157 | + # should also work with full interface objects |
154 | 158 | obj1a <- comp$nc1$new() |
155 | 159 | value(obj1a, "x") <- 1:3 |
156 | | - value(obj1a, "x") |
157 | | - value(obj1a) <- list(x = 1:3, y = TRUE) |
158 | | - value(obj1a, "x") |
159 | | - value(obj1a, "y") |
| 160 | + expect_equal(value(obj1a, "x"), 1:3) |
| 161 | + expect_equal(value(obj1a, "y"), logical()) |
| 162 | + value(obj1a) <- list(x = 2:4, y = TRUE) |
| 163 | + expect_equal(value(obj1a, "x"), 2:4) |
| 164 | + expect_equal(value(obj1a, "y"), TRUE) |
160 | 165 | value(obj1a) <- list(x = 4:6) |
161 | | - value(obj1a, "x") |
162 | | - value(obj1a, "y") |
| 166 | + expect_equal(value(obj1a, "x"), 4:6) |
| 167 | + expect_equal(value(obj1a, "y"), TRUE) |
163 | 168 | value(obj1a) <- list(y = c(1, 0, 1)) |
164 | | - value(obj1a, "x") |
165 | | - value(obj1a, "y") |
| 169 | + expect_equal(value(obj1a, "x"), 4:6) |
| 170 | + expect_equal(value(obj1a, "y"), as.logical(c(1,0,1))) |
166 | 171 | value(obj1a) <- list(not_there = 100) |
167 | | - value(obj1a, "x") |
168 | | - value(obj1a, "y") |
169 | | - |
| 172 | + expect_equal(value(obj1a, "x"), 4:6) |
| 173 | + expect_equal(value(obj1a, "y"), as.logical(c(1,0,1))) |
170 | 174 |
|
171 | 175 | value(obj1a) <- as.environment(list(x = 7:9, y = c(0, 1))) |
172 | | - value(obj1a, "x") |
173 | | - value(obj1a, "y") |
| 176 | + expect_equal(value(obj1a, "x"), 7:9) |
| 177 | + expect_equal(value(obj1a, "y"), as.logical(c(0,1))) |
174 | 178 | value(obj1a) <- as.environment(list(y = FALSE)) |
175 | | - value(obj1a, "x") |
176 | | - value(obj1a, "y") |
| 179 | + expect_equal(value(obj1a, "x"), 7:9) |
| 180 | + expect_equal(value(obj1a, "y"), FALSE) |
177 | 181 | value(obj1a) <- as.environment(list(not_there = 100)) |
178 | | - value(obj1a, "x") |
179 | | - value(obj1a, "y") |
| 182 | + expect_equal(value(obj1a, "x"), 7:9) |
| 183 | + expect_equal(value(obj1a, "y"), FALSE) |
180 | 184 |
|
181 | 185 | obj2a <- comp$nc2$new() |
182 | | - value(obj2a, "my_nc1") |> value("x") |
| 186 | + expect_identical(value(obj2a, "my_nc1") |> value("x"), numeric()) |
183 | 187 | value(obj2a) <- list(z = 42, my_nc1 = obj1a) |
184 | | - value(obj2a, "z") |
185 | | - value(obj2a, "my_nc1") |> value("x") |
186 | | - value(obj2a, "my_nc1") |> value("y") |
| 188 | + expect_equal(value(obj2a, "z"), 42) |
| 189 | + expect_equal(value(obj2a, "my_nc1") |> value("x"), 7:9) |
| 190 | + expect_equal(value(obj2a, "my_nc1") |> value("y"), FALSE) |
187 | 191 |
|
188 | 192 | value( value(obj2a, "my_nc1"), "x") <- 101:103 |
189 | | - value(obj1a, "x") |
| 193 | + expect_equal(value(obj1a, "x"), 101:103) |
190 | 194 |
|
191 | 195 | value( value(obj2a, "my_nc1") ) <- list(x = 104:106, y = c(1,1,1)) |
192 | | - value(obj1a, "x") |
193 | | - value(obj1a, "y") |
194 | | - |
195 | | - value(obj2a, "my_nc1") <- list(x = 201:203, y = c(0,0,0)) # makes new object |
196 | | - expect_equal(value(obj1a, "x"), 104:106) # old values, because obj2a$my_nc1 is new |
197 | | - expect_equal(value(obj1a, "y"), c(T, T, T)) |
198 | | - obj1b <- value(obj2a, "my_nc1") # new object |
199 | | - expect_equal(value(obj1b, "x"), 201:203) # new values |
200 | | - expect_equal(value(obj1b, "y"), c(F, F, F)) |
| 196 | + expect_equal(value(obj1a, "x"), 104:106) |
| 197 | + expect_equal(value(obj1a, "y"), as.logical(c(1,1,1))) |
201 | 198 |
|
202 | | - value(obj2a, "my_nc1") <- as.environment(list(x = 301:303)) # makes new object |
| 199 | + value(obj2a, "my_nc1") <- list(x = 201:203, y = c(0,0,0)) |
| 200 | + expect_equal(value(obj1a, "x"), 201:203) |
| 201 | + expect_equal(value(obj1a, "y"), as.logical(c(0,0,0))) |
| 202 | + obj1b <- value(obj2a, "my_nc1") |
203 | 203 | expect_equal(value(obj1b, "x"), 201:203) |
204 | 204 | expect_equal(value(obj1b, "y"), c(F, F, F)) |
| 205 | + |
| 206 | + value(obj2a, "my_nc1") <- as.environment(list(x = 301:303)) |
| 207 | + expect_equal(value(obj1b, "x"), 301:303) |
| 208 | + expect_equal(value(obj1b, "y"), c(F, F, F)) |
205 | 209 | obj1c <- value(obj2a, "my_nc1") |
206 | 210 | expect_equal(value(obj1c, "x"), 301:303) |
207 | | - expect_equal(value(obj1c, "y"), logical()) |
| 211 | + expect_equal(value(obj1c, "y"), c(F,F,F)) |
208 | 212 |
|
209 | | - value(obj2a, "my_null_nc1") <- list(x = 1:3, y = TRUE) |
210 | | - value(obj2a, "my_null_nc1") |> value("x") |
| 213 | + value(obj2a, "my_null_nc1") <- list(x = 1:3, y = TRUE) # makes new object |
| 214 | + expect_equal(value(obj2a, "my_null_nc1") |> value("x"), 1:3) |
211 | 215 | value(obj2a, "my_null_nc1") <- as.environment(list(x = 4:6, y = TRUE)) |
212 | | - value(obj2a, "my_null_nc1") |> value("x") |
| 216 | + expect_equal(value(obj2a, "my_null_nc1") |> value("x"), 4:6) |
| 217 | + expect_equal(value(obj2a, "my_null_nc1") |> value("y"), TRUE) |
213 | 218 |
|
214 | 219 | expect_error(value(obj2a, "my_nc0") <- list(w = 1:3)) |
| 220 | + rm(obj1a, obj1b, obj2a); gc() |
215 | 221 |
|
216 | | - ##### |
| 222 | + ### |
| 223 | + ## Add some tests using the actual full interface |
217 | 224 |
|
218 | 225 | obj2a <- comp$nc2$new() |
219 | | - obj2a$my_nc1$x |
| 226 | + expect_equal(obj2a$my_nc1$x, numeric()) |
220 | 227 | obj2a$my_nc1$x <- 101:103 |
221 | | - obj2a$my_nc1$x |
| 228 | + expect_equal(obj2a$my_nc1$x, 101:103) |
222 | 229 | obj2a$my_nc1 <- list(x = 104:106, y = c(1,1,1)) |
223 | | - obj2a$my_nc1$x |
| 230 | + expect_equal(obj2a$my_nc1$x, 104:106) |
224 | 231 | obj1a <- obj2a$my_nc1 |
225 | | - obj1a$x |
226 | | - obj1a$y |
| 232 | + expect_equal(obj1a$x, 104:106) |
| 233 | + expect_equal(obj1a$y, as.logical(c(1,1,1))) |
227 | 234 |
|
228 | 235 | obj2a$my_nc1 <- as.environment(list(x = 201:203, y = c(0,0,0))) |
229 | | - obj1a$x |
230 | | - obj1a$y |
| 236 | + expect_equal(obj1a$x, 201:203) |
| 237 | + expect_equal(obj1a$y, as.logical(c(0,0,0))) |
231 | 238 |
|
232 | 239 | obj2a$my_null_nc1 <- list(x = 1:3, y = TRUE) |
233 | | - obj2a$my_null_nc1$x |
234 | | - obj2a$my_null_nc1$y |
| 240 | + expect_equal(obj2a$my_null_nc1$x, 1:3) |
| 241 | + expect_equal(obj2a$my_null_nc1$y, TRUE) |
235 | 242 | obj2a$my_null_nc1 <- as.environment(list(x = 4:6, y = FALSE)) |
236 | | - obj2a$my_null_nc1$x |
237 | | - obj2a$my_null_nc1$y |
238 | | - |
239 | | - obj2a$my_nc0 <- list(w = 1:3) |
| 243 | + expect_equal(obj2a$my_null_nc1$x, 4:6) |
| 244 | + expect_equal(obj2a$my_null_nc1$y, FALSE) |
| 245 | + |
| 246 | + # Could add more but stopping. I'm not sure there's a purpose |
| 247 | + # in further exercising the full interface. At this point I have |
| 248 | + # ended up testing that the generic interface for a full object |
| 249 | + # does the same thing internally and there is no further point |
| 250 | + # to pursue here. |
| 251 | + rm(obj2a, obj1a); gc() |
240 | 252 | }) |
0 commit comments