Mercurial > repos > public > sbplib_julia
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) |
