diff --git a/base/multidimensional.jl b/base/multidimensional.jl index 385e9e218f891..272b528f964d9 100644 --- a/base/multidimensional.jl +++ b/base/multidimensional.jl @@ -48,6 +48,7 @@ one{N}(::CartesianIndex{N}) = one(CartesianIndex{N}) one{N}(::Type{CartesianIndex{N}}) = CartesianIndex(ntuple(x -> 1, Val{N})) # arithmetic, min/max +(-){N}(index::CartesianIndex{N}) = CartesianIndex{N}(map(-, index.I)) (+){N}(index1::CartesianIndex{N}, index2::CartesianIndex{N}) = CartesianIndex{N}(map(+, index1.I, index2.I)) (-){N}(index1::CartesianIndex{N}, index2::CartesianIndex{N}) = CartesianIndex{N}(map(-, index1.I, index2.I)) min{N}(index1::CartesianIndex{N}, index2::CartesianIndex{N}) = CartesianIndex{N}(map(min, index1.I, index2.I)) diff --git a/base/permuteddimsarray.jl b/base/permuteddimsarray.jl index aa2944f7c4bb0..f940bd87e864b 100644 --- a/base/permuteddimsarray.jl +++ b/base/permuteddimsarray.jl @@ -17,7 +17,7 @@ immutable PermutedDimsArray{T,N,perm,iperm,AA<:AbstractArray} <: AbstractArray{T end function PermutedDimsArray{T,N}(data::AbstractArray{T,N}, perm) - length(perm) == N || throw(ArgumentError(string(p, " is not a valid permutation of dimensions 1:", N))) + length(perm) == N || throw(ArgumentError(string(perm, " is not a valid permutation of dimensions 1:", N))) iperm = invperm(perm) PermutedDimsArray{T,N,(perm...,),(iperm...,),typeof(data)}(data) end diff --git a/test/arrayops.jl b/test/arrayops.jl index 0d735436338c3..045f160ba7514 100644 --- a/test/arrayops.jl +++ b/test/arrayops.jl @@ -446,7 +446,12 @@ s = view(a,:,[1,2,4],[1,5]) c = convert(Array, s) for p in ([1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]) @test permutedims(s, p) == permutedims(c, p) + @test Base.PermutedDimsArrays.PermutedDimsArray(s, p) == permutedims(c, p) end +@test_throws ArgumentError permutedims(a, (1,1,1)) +@test_throws ArgumentError permutedims(s, (1,1,1)) +@test_throws ArgumentError Base.PermutedDimsArrays.PermutedDimsArray(a, (1,1,1)) +@test_throws ArgumentError Base.PermutedDimsArrays.PermutedDimsArray(s, (1,1,1)) ## ipermutedims ## @@ -1252,6 +1257,7 @@ end I1 = CartesianIndex((2,3,0)) I2 = CartesianIndex((-1,5,2)) +@test -I1 == CartesianIndex((-2,-3,0)) @test I1 + I2 == CartesianIndex((1,8,2)) @test I2 + I1 == CartesianIndex((1,8,2)) @test I1 - I2 == CartesianIndex((3,-2,-2))