comparison LazyTensors/test/runtests.jl @ 321:277dff5b071a

LazyTensors/test/runtests.jl: Fix the indexing style of apply methods
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 24 Sep 2020 20:57:10 +0200
parents d6edd37551ea
children 41c3c25e4e3b
comparison
equal deleted inserted replaced
320:d705b397aa33 321:277dff5b071a
17 end 17 end
18 18
19 @testset "Mapping transpose" begin 19 @testset "Mapping transpose" begin
20 struct DummyMapping{T,R,D} <: TensorMapping{T,R,D} end 20 struct DummyMapping{T,R,D} <: TensorMapping{T,R,D} end
21 21
22 LazyTensors.apply(m::DummyMapping{T,R,D}, v, I::NTuple{R,Index{<:Region}}) where {T,R,D} = :apply 22 LazyTensors.apply(m::DummyMapping{T,R,D}, v, I::Vararg{Index{<:Region},R}) where {T,R,D} = :apply
23 LazyTensors.apply_transpose(m::DummyMapping{T,R,D}, v, I::NTuple{D,Index{<:Region}}) where {T,R,D} = :apply_transpose 23 LazyTensors.apply_transpose(m::DummyMapping{T,R,D}, v, I::Vararg{Index{<:Region},D}) where {T,R,D} = :apply_transpose
24 24
25 LazyTensors.range_size(m::DummyMapping{T,R,D}, domain_size::NTuple{D,Integer}) where {T,R,D} = :range_size 25 LazyTensors.range_size(m::DummyMapping{T,R,D}, domain_size::NTuple{D,Integer}) where {T,R,D} = :range_size
26 LazyTensors.domain_size(m::DummyMapping{T,R,D}, range_size::NTuple{R,Integer}) where {T,R,D} = :domain_size 26 LazyTensors.domain_size(m::DummyMapping{T,R,D}, range_size::NTuple{R,Integer}) where {T,R,D} = :domain_size
27 27
28 m = DummyMapping{Float64,2,3}() 28 m = DummyMapping{Float64,2,3}()
29 I = Index{Unknown}(0) 29 I = Index{Unknown}(0)
30 @test m' isa TensorMapping{Float64, 3,2} 30 @test m' isa TensorMapping{Float64, 3,2}
31 @test m'' == m 31 @test m'' == m
32 @test apply(m',zeros(Float64,(0,0)), (I,I,I)) == :apply_transpose 32 @test apply(m',zeros(Float64,(0,0)), I, I, I) == :apply_transpose
33 @test apply(m'',zeros(Float64,(0,0,0)),(I,I)) == :apply 33 @test apply(m'',zeros(Float64,(0,0,0)), I, I) == :apply
34 @test apply_transpose(m', zeros(Float64,(0,0,0)),(I,I)) == :apply 34 @test apply_transpose(m', zeros(Float64,(0,0,0)), I, I) == :apply
35 35
36 @test range_size(m', (0,0)) == :domain_size 36 @test range_size(m', (0,0)) == :domain_size
37 @test domain_size(m', (0,0,0)) == :range_size 37 @test domain_size(m', (0,0,0)) == :range_size
38 end 38 end
39 39
40 @testset "TensorApplication" begin 40 @testset "TensorApplication" begin
41 struct DummyMapping{T,R,D} <: TensorMapping{T,R,D} end 41 struct DummyMapping{T,R,D} <: TensorMapping{T,R,D} end
42 42
43 LazyTensors.apply(m::DummyMapping{T,R,D}, v, i::NTuple{R,Index{<:Region}}) where {T,R,D} = (:apply,v,i) 43 LazyTensors.apply(m::DummyMapping{T,R,D}, v, i::Vararg{Index{<:Region},R}) where {T,R,D} = (:apply,v,i)
44 LazyTensors.range_size(m::DummyMapping{T,R,D}, domain_size::NTuple{D,Integer}) where {T,R,D} = 2 .* domain_size 44 LazyTensors.range_size(m::DummyMapping{T,R,D}, domain_size::NTuple{D,Integer}) where {T,R,D} = 2 .* domain_size
45 LazyTensors.domain_size(m::DummyMapping{T,R,D}, range_size::NTuple{R,Integer}) where {T,R,D} = range_size.÷2 45 LazyTensors.domain_size(m::DummyMapping{T,R,D}, range_size::NTuple{R,Integer}) where {T,R,D} = range_size.÷2
46 46
47 47
48 m = DummyMapping{Int, 1, 1}() 48 m = DummyMapping{Int, 1, 1}()
73 73
74 struct ScalingOperator{T,D} <: TensorOperator{T,D} 74 struct ScalingOperator{T,D} <: TensorOperator{T,D}
75 λ::T 75 λ::T
76 end 76 end
77 77
78 LazyTensors.apply(m::ScalingOperator{T,D}, v, I::NTuple{D, Index}) where {T,D} = m.λ*v[I] 78 LazyTensors.apply(m::ScalingOperator{T,D}, v, I::Vararg{Index,D}) where {T,D} = m.λ*v[I]
79 79
80 m = ScalingOperator{Int,1}(2) 80 m = ScalingOperator{Int,1}(2)
81 v = [1,2,3] 81 v = [1,2,3]
82 @test m*v isa AbstractVector 82 @test m*v isa AbstractVector
83 @test m*v == [2,4,6] 83 @test m*v == [2,4,6]
92 @testset "TensorMapping binary operations" begin 92 @testset "TensorMapping binary operations" begin
93 struct ScalarMapping{T,R,D} <: TensorMapping{T,R,D} 93 struct ScalarMapping{T,R,D} <: TensorMapping{T,R,D}
94 λ::T 94 λ::T
95 end 95 end
96 96
97 LazyTensors.apply(m::ScalarMapping{T,R,D}, v, I::Tuple{Index{<:Region}}) where {T,R,D} = m.λ*v[I...] 97 LazyTensors.apply(m::ScalarMapping{T,R,D}, v, I::Vararg{Index{<:Region}}) where {T,R,D} = m.λ*v[I...]
98 LazyTensors.range_size(m::ScalarMapping, domain_size) = domain_size 98 LazyTensors.range_size(m::ScalarMapping, domain_size) = domain_size
99 LazyTensors.domain_size(m::ScalarMapping, range_sizes) = range_sizes 99 LazyTensors.domain_size(m::ScalarMapping, range_sizes) = range_sizes
100 100
101 A = ScalarMapping{Float64,1,1}(2.0) 101 A = ScalarMapping{Float64,1,1}(2.0)
102 B = ScalarMapping{Float64,1,1}(3.0) 102 B = ScalarMapping{Float64,1,1}(3.0)