From 4b0b6917b7409f891ee6020eea132cd0a761d311 Mon Sep 17 00:00:00 2001 From: Tim Holy Date: Wed, 20 Apr 2016 18:07:56 -0500 Subject: [PATCH] More ReshapedArray tests --- test/arrayops.jl | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/test/arrayops.jl b/test/arrayops.jl index 9867e062af864..9022fc0c18ce6 100644 --- a/test/arrayops.jl +++ b/test/arrayops.jl @@ -88,13 +88,50 @@ a = reshape(b, (2, 2, 2, 2, 2)) @test a[2,2,2,2,2] == b[end] # reshaping linearslow arrays -a = zeros(1, 5) +a = collect(reshape(1:5, 1, 5)) s = sub(a, :, [2,3,5]) -@test length(reshape(s, length(s))) == 3 +r = reshape(s, length(s)) +@test length(r) == 3 +@test r[1] == 2 +@test r[3,1] == 5 +@test r[Base.ReshapedIndex(CartesianIndex((1,2)))] == 3 +@test parent(reshape(r, (1,3))) === r.parent === s +@test parentindexes(r) == (1:1, 1:3) +@test reshape(r, (3,)) === r +r[2] = -1 +@test a[3] == -1 a = zeros(0, 5) # an empty linearslow array s = sub(a, :, [2,3,5]) @test length(reshape(s, length(s))) == 0 +@test reshape(1:5, (5,)) === 1:5 +@test reshape(1:5, 5) === 1:5 + +# setindex! on a reshaped range +a = reshape(1:20, 5, 4) +for idx in ((3,), (2,2), (Base.ReshapedIndex(1),)) + try + a[idx...] = 7 + catch err + @test err.msg == "indexed assignment fails for a reshaped range; consider calling collect" + end +end + +# operations with LinearFast ReshapedArray +b = collect(1:12) +a = Base.ReshapedArray(b, (4,3), ()) +@test a[3,2] == 7 +@test a[6] == 6 +a[3,2] = -2 +a[6] = -3 +a[Base.ReshapedIndex(5)] = -4 +@test b[5] == -4 +@test b[6] == -3 +@test b[7] == -2 +b = reinterpret(Int, a, (3,4)) +b[1] = -1 +@test vec(b) == vec(a) + a = rand(1, 1, 8, 8, 1) @test @inferred(squeeze(a, 1)) == @inferred(squeeze(a, (1,))) == reshape(a, (1, 8, 8, 1)) @test @inferred(squeeze(a, (1, 5))) == squeeze(a, (5, 1)) == reshape(a, (1, 8, 8))