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) |