Skip to content

Commit 1e3d762

Browse files
local() testing
1 parent b411a7d commit 1e3d762

File tree

1 file changed

+175
-164
lines changed

1 file changed

+175
-164
lines changed

inst/tests/mergelist.Rraw

Lines changed: 175 additions & 164 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ if (exists("test.data.table", .GlobalEnv, inherits=FALSE)) {
1313
forderv = data.table:::forderv
1414
}
1515

16+
addresses = function(x) vapply(x, address, "")
1617
copied = function(ans, l) {
1718
all(!addresses(ans) %chin% unlist(recursive=FALSE, lapply(l, addresses)))
1819
}
@@ -36,8 +37,6 @@ test(2.02, fdistinct(data.table(x=c(1L, 1:2)), on="z", mult="last"), error="must
3637
test(2.03, fdistinct(data.table(x=c(1L, 1:2)), on="x", mult="last", cols=character()), error="must be non-zero length, non-NA, integer or character columns of")
3738
test(2.04, fdistinct(data.table(x=c(1L, 1:2, y=1:3)), on="x", mult="last", copy=NA), error="must be TRUE or FALSE")
3839
local({
39-
addresses = function(x) vapply(x, address, "")
40-
4140
d = data.table(x=1:2, y=1:2)
4241
test(2.05, ans <- fdistinct(d, on="x", mult="last"), d)
4342
test(2.06, intersect(addresses(ans), addresses(d)), character())
@@ -131,183 +130,195 @@ test(13.4, cbindlist(list(data.table(a=1:2), data.table(b=3:4, key="b"))), data.
131130
## test copy-ness argument in mergepair
132131

133132
### LHS equal to RHS: no copy in all cases
134-
num = 21.000
135-
l = list(
136-
lhs = data.table(id1=1:2, v1=1:2),
137-
rhs = data.table(id1=1:2, v2=1:2)
138-
)
139-
expected = data.table(id1=1:2, v1=1:2, v2=1:2)
140-
for (how in c("inner","left","right","full")) {
141-
num = trunc(num*10)/10 + 0.1
142-
for (mult in c("all","first","last","error")) {
143-
num = trunc(num*100)/100 + 0.01
144-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected) ## copy=TRUE: no shared columns
145-
test(num<-num+0.001, copied(ans, l))
146-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected) ## copy=FALSE: LHS shared but no RHS
147-
test(num<-num+0.001, notcopied(ans, l, how=how))
133+
local({
134+
l = list(
135+
lhs = data.table(id1=1:2, v1=1:2),
136+
rhs = data.table(id1=1:2, v2=1:2)
137+
)
138+
expected = data.table(id1=1:2, v1=1:2, v2=1:2)
139+
frac = 0.0
140+
for (how in c("inner", "left", "right", "full")) {
141+
frac = frac + 0.1
142+
for (mult in c("all", "first", "last", "error")) {
143+
frac = frac + 0.01
144+
test(21 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected) ## copy=TRUE: no shared columns
145+
test(21 + (frac <- frac + 0.001), copied(ans, l))
146+
test(21 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected) ## copy=FALSE: LHS shared but no RHS
147+
test(21 + (frac <- frac + 0.001), notcopied(ans, l, how=how))
148+
}
148149
}
149-
}
150+
})
151+
150152
### RHS includes LHS: no copy in inner, left, right
151-
num = 22.000
152-
unless = "full"
153-
l = list(
154-
lhs = data.table(id1=1:2, v1=1:2),
155-
rhs = data.table(id1=1:3, v2=1:3)
156-
)
157-
expected = list(
158-
inner = data.table(id1=1:2, v1=1:2, v2=1:2),
159-
left = data.table(id1=1:2, v1=1:2, v2=1:2),
160-
right = data.table(id1=1:3, v1=c(1:2,NA), v2=1:3),
161-
full = data.table(id1=1:3, v1=c(1:2,NA), v2=1:3)
162-
)
163-
for (how in c("inner","left","right","full")) {
164-
num = trunc(num*10)/10 + 0.1
165-
for (mult in c("all","first","last","error")) {
166-
num = trunc(num*100)/100 + 0.01
167-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected[[how]])
168-
test(num<-num+0.001, copied(ans, l))
169-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected[[how]])
170-
test(num<-num+0.001, notcopied(ans, l, how=how, unless=unless))
153+
local({
154+
l = list(
155+
lhs = data.table(id1=1:2, v1=1:2),
156+
rhs = data.table(id1=1:3, v2=1:3)
157+
)
158+
expected = list(
159+
inner = data.table(id1=1:2, v1=1:2, v2=1:2),
160+
left = data.table(id1=1:2, v1=1:2, v2=1:2),
161+
right = data.table(id1=1:3, v1=c(1:2,NA), v2=1:3),
162+
full = data.table(id1=1:3, v1=c(1:2,NA), v2=1:3)
163+
)
164+
frac = 0.0
165+
for (how in c("inner", "left", "right", "full")) {
166+
frac = frac + 0.1
167+
for (mult in c("all", "first", "last", "error")) {
168+
frac = frac + 0.01
169+
test(22 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected[[how]])
170+
test(22 + (frac <- frac + 0.001), copied(ans, l))
171+
test(22 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected[[how]])
172+
test(22 + (frac <- frac + 0.001), notcopied(ans, l, how=how, unless="full"))
173+
}
171174
}
172-
}
175+
})
176+
173177
### LHS includes RHS: no copy in left, right, full
174-
num = 23.000
175-
unless = "inner"
176-
l = list(
177-
lhs = data.table(id1=1:3, v1=1:3),
178-
rhs = data.table(id1=1:2, v2=1:2)
179-
)
180-
expected = list(
181-
inner = data.table(id1=1:2, v1=1:2, v2=1:2),
182-
left = data.table(id1=1:3, v1=1:3, v2=c(1:2,NA)),
183-
right = data.table(id1=1:2, v1=1:2, v2=1:2),
184-
full = data.table(id1=1:3, v1=1:3, v2=c(1:2,NA))
185-
)
186-
for (how in c("inner","left","right","full")) {
187-
num = trunc(num*10)/10 + 0.1
188-
for (mult in c("all","first","last","error")) {
189-
num = trunc(num*100)/100 + 0.01
190-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected[[how]])
191-
test(num<-num+0.001, copied(ans, l))
192-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected[[how]])
193-
test(num<-num+0.001, notcopied(ans, l, how=how, unless=unless))
178+
local({
179+
l = list(
180+
lhs = data.table(id1=1:3, v1=1:3),
181+
rhs = data.table(id1=1:2, v2=1:2)
182+
)
183+
expected = list(
184+
inner = data.table(id1=1:2, v1=1:2, v2=1:2),
185+
left = data.table(id1=1:3, v1=1:3, v2=c(1:2,NA)),
186+
right = data.table(id1=1:2, v1=1:2, v2=1:2),
187+
full = data.table(id1=1:3, v1=1:3, v2=c(1:2,NA))
188+
)
189+
frac = 0.0
190+
for (how in c("inner", "left", "right", "full")) {
191+
frac = frac + 0.1
192+
for (mult in c("all", "first", "last", "error")) {
193+
frac = frac + 0.01
194+
test(23 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected[[how]])
195+
test(23 + (frac <- frac + 0.001), copied(ans, l))
196+
test(23 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected[[how]])
197+
test(23 + (frac <- frac + 0.001), notcopied(ans, l, how=how, unless="inner"))
198+
}
194199
}
195-
}
200+
})
201+
196202
### LHS single nonmatch RHS on both sides: no copy in left, right
197-
num = 24.000
198-
unless = c("inner","full")
199-
l = list(
200-
lhs = data.table(id1=3:1, v1=1:3),
201-
rhs = data.table(id1=c(4L,2:1), v2=1:3)
202-
)
203-
expected = list(
204-
inner = data.table(id1=2:1, v1=2:3, v2=2:3),
205-
left = data.table(id1=3:1, v1=1:3, v2=c(NA,2:3)),
206-
right = data.table(id1=c(4L,2:1), v1=c(NA,2:3), v2=1:3),
207-
full = data.table(id1=c(3:1,4L), v1=c(1:3,NA), v2=c(NA,2:3,1L))
208-
)
209-
for (how in c("inner","left","right","full")) {
210-
num = trunc(num*10)/10 + 0.1
211-
for (mult in c("all","first","last","error")) {
212-
num = trunc(num*100)/100 + 0.01
213-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected[[how]])
214-
test(num<-num+0.001, copied(ans, l))
215-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected[[how]])
216-
test(num<-num+0.001, notcopied(ans, l, how=how, unless=unless))
203+
local({
204+
l = list(
205+
lhs = data.table(id1=3:1, v1=1:3),
206+
rhs = data.table(id1=c(4L,2:1), v2=1:3)
207+
)
208+
expected = list(
209+
inner = data.table(id1=2:1, v1=2:3, v2=2:3),
210+
left = data.table(id1=3:1, v1=1:3, v2=c(NA,2:3)),
211+
right = data.table(id1=c(4L,2:1), v1=c(NA,2:3), v2=1:3),
212+
full = data.table(id1=c(3:1,4L), v1=c(1:3,NA), v2=c(NA,2:3,1L))
213+
)
214+
frac = 0.0
215+
for (how in c("inner", "left", "right", "full")) {
216+
frac = frac + 0.1
217+
for (mult in c("all", "first", "last", "error")) {
218+
frac = frac + 0.01
219+
test(24 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected[[how]])
220+
test(24 + (frac <- frac + 0.001), copied(ans, l))
221+
test(24 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected[[how]])
222+
test(24 + (frac <- frac + 0.001), notcopied(ans, l, how=how, unless=c("inner", "full")))
223+
}
217224
}
218-
}
225+
})
226+
219227
### LHS zero match RHS: no copy in left, right
220-
num = 25.000
221-
unless = c("inner","full")
222-
l = list(
223-
lhs = data.table(id1=2:1, v1=1:2),
224-
rhs = data.table(id1=3:4, v2=1:2)
225-
)
226-
expected = list(
227-
inner = data.table(id1=integer(), v1=integer(), v2=integer()),
228-
left = data.table(id1=2:1, v1=1:2, v2=c(NA_integer_,NA)),
229-
right = data.table(id1=3:4, v1=c(NA_integer_,NA), v2=1:2),
230-
full = data.table(id1=c(2:1,3:4), v1=c(1:2,NA,NA), v2=c(NA,NA,1:2))
231-
)
232-
for (how in c("inner","left","right","full")) {
233-
num = trunc(num*10)/10 + 0.1
234-
for (mult in c("all","first","last","error")) {
235-
num = trunc(num*100)/100 + 0.01
236-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected[[how]])
237-
test(num<-num+0.001, copied(ans, l))
238-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected[[how]])
239-
test(num<-num+0.001, notcopied(ans, l, how=how, unless=unless))
228+
local({
229+
l = list(
230+
lhs = data.table(id1=2:1, v1=1:2),
231+
rhs = data.table(id1=3:4, v2=1:2)
232+
)
233+
expected = list(
234+
inner = data.table(id1=integer(), v1=integer(), v2=integer()),
235+
left = data.table(id1=2:1, v1=1:2, v2=c(NA_integer_,NA)),
236+
right = data.table(id1=3:4, v1=c(NA_integer_,NA), v2=1:2),
237+
full = data.table(id1=c(2:1,3:4), v1=c(1:2,NA,NA), v2=c(NA,NA,1:2))
238+
)
239+
for (how in c("inner", "left", "right", "full")) {
240+
frac = frac + 0.1
241+
for (mult in c("all", "first", "last", "error")) {
242+
frac = frac + 0.01
243+
test(25 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected[[how]])
244+
test(25 + (frac <- frac + 0.001), copied(ans, l))
245+
test(25 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected[[how]])
246+
test(25 + (frac <- frac + 0.001), notcopied(ans, l, how=how, unless=c("inner", "full")))
247+
}
240248
}
241-
}
249+
})
250+
242251
### LHS and RHS zero nrow: no copies
243-
num = 26.000
244-
unless = character()
245-
l = list(
246-
lhs = data.table(id1=integer(), v1=integer()),
247-
rhs = data.table(id1=integer(), v2=integer())
248-
)
249-
expected = list(
250-
inner = data.table(id1=integer(), v1=integer(), v2=integer()),
251-
left = data.table(id1=integer(), v1=integer(), v2=integer()),
252-
right = data.table(id1=integer(), v1=integer(), v2=integer()),
253-
full = data.table(id1=integer(), v1=integer(), v2=integer())
254-
)
255-
for (how in c("inner","left","right","full")) {
256-
num = trunc(num*10)/10 + 0.1
257-
for (mult in c("all","first","last","error")) {
258-
num = trunc(num*100)/100 + 0.01
259-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected[[how]])
260-
test(num<-num+0.001, copied(ans, l))
261-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected[[how]])
262-
test(num<-num+0.001, notcopied(ans, l, how=how, unless=unless))
252+
local({
253+
l = list(
254+
lhs = data.table(id1=integer(), v1=integer()),
255+
rhs = data.table(id1=integer(), v2=integer())
256+
)
257+
expected = list(
258+
inner = data.table(id1=integer(), v1=integer(), v2=integer()),
259+
left = data.table(id1=integer(), v1=integer(), v2=integer()),
260+
right = data.table(id1=integer(), v1=integer(), v2=integer()),
261+
full = data.table(id1=integer(), v1=integer(), v2=integer())
262+
)
263+
for (how in c("inner", "left", "right", "full")) {
264+
frac = frac + 0.1
265+
for (mult in c("all", "first", "last", "error")) {
266+
frac = frac + 0.01
267+
test(26 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected[[how]])
268+
test(26 + (frac <- frac + 0.001), copied(ans, l))
269+
test(26 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected[[how]])
270+
test(26 + (frac <- frac + 0.001), notcopied(ans, l, how=how))
271+
}
263272
}
264-
}
273+
})
274+
265275
### LHS has zero nrow: no copies
266-
num = 27.000
267-
unless = character()
268-
l = list(
269-
lhs = data.table(id1=integer(), v1=integer()),
270-
rhs = data.table(id1=2:1, v2=1:2)
271-
)
272-
expected = list(
273-
inner = data.table(id1=integer(), v1=integer(), v2=integer()),
274-
left = data.table(id1=integer(), v1=integer(), v2=integer()),
275-
right = data.table(id1=2:1, v1=c(NA_integer_,NA), v2=1:2),
276-
full = data.table(id1=2:1, v1=c(NA_integer_,NA), v2=1:2)
277-
)
278-
for (how in c("inner","left","right","full")) {
279-
num = trunc(num*10)/10 + 0.1
280-
for (mult in c("all","first","last","error")) {
281-
num = trunc(num*100)/100 + 0.01
282-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected[[how]])
283-
test(num<-num+0.001, copied(ans, l))
284-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected[[how]])
285-
test(num<-num+0.001, notcopied(ans, l, how=how, unless=unless))
276+
local({
277+
l = list(
278+
lhs = data.table(id1=integer(), v1=integer()),
279+
rhs = data.table(id1=2:1, v2=1:2)
280+
)
281+
expected = list(
282+
inner = data.table(id1=integer(), v1=integer(), v2=integer()),
283+
left = data.table(id1=integer(), v1=integer(), v2=integer()),
284+
right = data.table(id1=2:1, v1=c(NA_integer_,NA), v2=1:2),
285+
full = data.table(id1=2:1, v1=c(NA_integer_,NA), v2=1:2)
286+
)
287+
for (how in c("inner", "left", "right", "full")) {
288+
frac = frac + 0.1
289+
for (mult in c("all", "first", "last" ,"error")) {
290+
frac = frac + 0.01
291+
test(27 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected[[how]])
292+
test(27 + (frac <- frac + 0.001), copied(ans, l))
293+
test(27 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected[[how]])
294+
test(27 + (frac <- frac + 0.001), notcopied(ans, l, how=how))
295+
}
286296
}
287-
}
297+
})
298+
288299
### RHS has zero nrow
289-
num = 28.000
290-
unless = "inner"
291-
l = list(
292-
lhs = data.table(id1=2:1, v1=1:2),
293-
rhs = data.table(id1=integer(), v2=integer())
294-
)
295-
expected = list(
296-
inner = data.table(id1=integer(), v1=integer(), v2=integer()),
297-
left = data.table(id1=2:1, v1=1:2, v2=c(NA_integer_,NA)),
298-
right = data.table(id1=integer(), v1=integer(), v2=integer()),
299-
full = data.table(id1=2:1, v1=1:2, v2=c(NA_integer_,NA))
300-
)
301-
for (how in c("inner","left","right","full")) {
302-
num = trunc(num*10)/10 + 0.1
303-
for (mult in c("all","first","last","error")) {
304-
num = trunc(num*100)/100 + 0.01
305-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected[[how]])
306-
test(num<-num+0.001, copied(ans, l))
307-
test(num<-num+0.001, ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected[[how]])
308-
test(num<-num+0.001, notcopied(ans, l, how=how, unless=unless))
300+
local({
301+
l = list(
302+
lhs = data.table(id1=2:1, v1=1:2),
303+
rhs = data.table(id1=integer(), v2=integer())
304+
)
305+
expected = list(
306+
inner = data.table(id1=integer(), v1=integer(), v2=integer()),
307+
left = data.table(id1=2:1, v1=1:2, v2=c(NA_integer_,NA)),
308+
right = data.table(id1=integer(), v1=integer(), v2=integer()),
309+
full = data.table(id1=2:1, v1=1:2, v2=c(NA_integer_,NA))
310+
)
311+
for (how in c("inner", "left", "right", "full")) {
312+
frac = frac + 0.1
313+
for (mult in c("all", "first", "last", "error")) {
314+
frac = frac + 0.01
315+
test(28 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=TRUE), expected[[how]])
316+
test(28 + (frac <- frac + 0.001), copied(ans, l))
317+
test(28 + (frac <- frac + 0.001), ans <- mergepair(l$lhs, l$rhs, on="id1", how=how, mult=mult, copy=FALSE), expected[[how]])
318+
test(28 + (frac <- frac + 0.001), notcopied(ans, l, how=how, unless="inner"))
319+
}
309320
}
310-
}
321+
})
311322

312323
## fdistinct, another round
313324

0 commit comments

Comments
 (0)