Skip to content

Commit 8137d7e

Browse files
committed
More tests for reverse and reverse!
1 parent 50c4008 commit 8137d7e

File tree

1 file changed

+83
-66
lines changed

1 file changed

+83
-66
lines changed

test/runtests.jl

+83-66
Original file line numberDiff line numberDiff line change
@@ -321,79 +321,96 @@ f2(x) = x > 0.5
321321
@test (0x1,0x1,0x1) === @inferred ntuple(Returns{UInt8}(1), Val(3))
322322
end
323323

324-
@testset "`reverse` and `reverse!` with `dims=$d`" for d in (Colon(), 1, 2)
325-
if d isa Colon || d == 1
326-
# Check for vectors.
327-
A = 1:12
328-
R = 12:-1:1
329-
B = @inferred reverse(A; dims=d)
330-
@test B == R
331-
@test B isa AbstractRange{eltype(A)}
332-
@test step(B) == -step(A)
333-
@test last(B) == first(A)
334-
@test first(B) == last(A)
335-
C = Array{eltype(A)}(undef, size(A))
336-
@test C === @inferred reverse!(copyto!(C, A); dims=d)
337-
@test C == R
338-
if d isa Colon
339-
@test R == @inferred reverse(A)
340-
@test C === @inferred reverse!(copyto!(C, A))
324+
@testset "`reverse` and `reverse!`" begin
325+
@testset "... basic use" begin
326+
@test reverse("abcd") == "dcba"
327+
r = 1:8
328+
v = Array{Int}(undef, length(r))
329+
@test reverse(r, 2) == [1,8,7,6,5,4,3,2]
330+
@test reverse(r, 3, 6) == [1,2,6,5,4,3,7,8]
331+
@test reverse(r; dims=:) === 8:-1:1
332+
@test reverse(r; dims=1) === 8:-1:1
333+
@test reverse(copyto!(v, r); dims=:) == 8:-1:1
334+
@test_throws ArgumentError reverse(r; dims=0)
335+
@test v === reverse!(copyto!(v, r), 2) && v == [1,8,7,6,5,4,3,2]
336+
@test v === reverse!(copyto!(v, r), 3, 6) && v == [1,2,6,5,4,3,7,8]
337+
@test v === reverse!(copyto!(v, r); dims=:) && v == [8,7,6,5,4,3,2,1]
338+
@test_throws ArgumentError reverse!(v; dims=0)
339+
end
340+
@testset "... with `dims=$d`" for d in (Colon(), 1, 2)
341+
if d isa Colon || d == 1
342+
# Check for vectors.
343+
A = 1:12
344+
R = 12:-1:1
345+
B = @inferred reverse(A; dims=d)
346+
@test B == R
347+
@test B isa AbstractRange{eltype(A)}
348+
@test step(B) == -step(A)
349+
@test last(B) == first(A)
350+
@test first(B) == last(A)
351+
C = Array{eltype(A)}(undef, size(A))
352+
@test C === @inferred reverse!(copyto!(C, A); dims=d)
341353
@test C == R
342-
end
343-
A = -2:3:7
344-
R = 7:-3:-2
345-
B = @inferred reverse(A; dims=d)
346-
@test B == R
347-
@test B isa AbstractRange{eltype(A)}
348-
@test step(B) == -step(A)
349-
@test last(B) == first(A)
350-
@test first(B) == last(A)
351-
C = Array{eltype(A)}(undef, size(A))
352-
@test C === @inferred reverse!(copyto!(C, A); dims=d)
353-
@test C == R
354-
if d isa Colon
355-
@test R == @inferred reverse(A)
356-
@test C === @inferred reverse!(copyto!(C, A))
354+
if d isa Colon
355+
@test R == @inferred reverse(A)
356+
@test C === @inferred reverse!(copyto!(C, A))
357+
@test C == R
358+
end
359+
A = -2:3:7
360+
R = 7:-3:-2
361+
B = @inferred reverse(A; dims=d)
362+
@test B == R
363+
@test B isa AbstractRange{eltype(A)}
364+
@test step(B) == -step(A)
365+
@test last(B) == first(A)
366+
@test first(B) == last(A)
367+
C = Array{eltype(A)}(undef, size(A))
368+
@test C === @inferred reverse!(copyto!(C, A); dims=d)
357369
@test C == R
370+
if d isa Colon
371+
@test R == @inferred reverse(A)
372+
@test C === @inferred reverse!(copyto!(C, A))
373+
@test C == R
374+
end
358375
end
359-
end
360-
if d isa Colon || d 2
361-
# Check for 2-dimensional arrays.
362-
A = reshape(1:12, 3,4)
363-
R = d isa Colon ? reshape(12:-1:1, size(A)) : Base.reverse(A; dims=d)
364-
C = Array{eltype(A)}(undef, size(A))
365-
@test R == @inferred reverse(A; dims=d)
366-
@test C === @inferred reverse!(copyto!(C, A); dims=d)
367-
@test C == R
368-
if d isa Colon
369-
@test R == @inferred reverse(A)
370-
@test C === @inferred reverse!(copyto!(C, A))
376+
if d isa Colon || d 2
377+
# Check for 2-dimensional arrays.
378+
A = reshape(1:12, 3,4)
379+
R = d isa Colon ? reshape(12:-1:1, size(A)) : Base.reverse(A; dims=d)
380+
C = Array{eltype(A)}(undef, size(A))
381+
@test R == @inferred reverse(A; dims=d)
382+
@test C === @inferred reverse!(copyto!(C, A); dims=d)
371383
@test C == R
372-
end
373-
A = reshape(1:12, 4,3)
374-
C = Array{eltype(A)}(undef, size(A))
375-
R = d isa Colon ? reshape(12:-1:1, size(A)) : Base.reverse(A; dims=d)
376-
@test R == @inferred reverse(A; dims=d)
377-
@test C === @inferred reverse!(copyto!(C, A); dims=d)
378-
@test C == R
379-
if d isa Colon
380-
@test R == @inferred reverse(A)
381-
@test C === @inferred reverse!(copyto!(C, A))
384+
if d isa Colon
385+
@test R == @inferred reverse(A)
386+
@test C === @inferred reverse!(copyto!(C, A))
387+
@test C == R
388+
end
389+
A = reshape(1:12, 4,3)
390+
C = Array{eltype(A)}(undef, size(A))
391+
R = d isa Colon ? reshape(12:-1:1, size(A)) : Base.reverse(A; dims=d)
392+
@test R == @inferred reverse(A; dims=d)
393+
@test C === @inferred reverse!(copyto!(C, A); dims=d)
382394
@test C == R
395+
if d isa Colon
396+
@test R == @inferred reverse(A)
397+
@test C === @inferred reverse!(copyto!(C, A))
398+
@test C == R
399+
end
383400
end
384-
end
385-
if d isa Colon || d 3
386-
# Check for 3-dimensional arrays.
387-
A = reshape(-4:5:111, 2,3,4)
388-
R = d isa Colon ? reshape(111:-5:-4, size(A)) : Base.reverse(A; dims=d)
389-
C = Array{eltype(A)}(undef, size(A))
390-
@test R == @inferred reverse(A; dims=d)
391-
@test C === @inferred reverse!(copyto!(C, A); dims=d)
392-
@test C == R
393-
if d isa Colon
394-
@test R == @inferred reverse(A)
395-
@test C === @inferred reverse!(copyto!(C, A))
401+
if d isa Colon || d 3
402+
# Check for 3-dimensional arrays.
403+
A = reshape(-4:5:111, 2,3,4)
404+
R = d isa Colon ? reshape(111:-5:-4, size(A)) : Base.reverse(A; dims=d)
405+
C = Array{eltype(A)}(undef, size(A))
406+
@test R == @inferred reverse(A; dims=d)
407+
@test C === @inferred reverse!(copyto!(C, A); dims=d)
396408
@test C == R
409+
if d isa Colon
410+
@test R == @inferred reverse(A)
411+
@test C === @inferred reverse!(copyto!(C, A))
412+
@test C == R
413+
end
397414
end
398415
end
399416
end

0 commit comments

Comments
 (0)