Mercurial > repos > public > sbplib_julia
comparison LazyTensors/test/runtests.jl @ 210:2aa33d0eef90 boundary_conditions
Add ability to add and subtract TensorMappings
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Tue, 25 Jun 2019 17:26:39 +0200 |
parents | 992969237359 |
children | a20bb4fac23d |
comparison
equal
deleted
inserted
replaced
209:7db145ce6e4d | 210:2aa33d0eef90 |
---|---|
55 @test (m*m*v)[6] == (:apply,m*v,6) | 55 @test (m*m*v)[6] == (:apply,m*v,6) |
56 @test_broken BoundsError == (m*m*v)[0] | 56 @test_broken BoundsError == (m*m*v)[0] |
57 @test_broken BoundsError == (m*m*v)[7] | 57 @test_broken BoundsError == (m*m*v)[7] |
58 end | 58 end |
59 | 59 |
60 @testset "TensorMapping binary operations" begin | |
61 struct ScalarMapping{T,R,D} <: TensorMapping{T,R,D} | |
62 λ::T | |
63 end | |
64 | |
65 LazyTensors.apply(m::ScalarMapping{T,R,D}, v, i) where {T,R,D} = m.λ*v[i] | |
66 LazyTensors.range_size(m::ScalarMapping, domain_size) = domain_size | |
67 LazyTensors.domain_size(m::ScalarMapping, range_sizes) = range_sizes | |
68 | |
69 A = ScalarMapping{Float64,1,1}(2.0) | |
70 B = ScalarMapping{Float64,1,1}(3.0) | |
71 | |
72 v = [1.1,1.2,1.3] | |
73 | |
74 for i ∈ eachindex(v) | |
75 @test ((A+B)*v)[i] == 2*v[i] + 3*v[i] | |
76 end | |
77 | |
78 for i ∈ eachindex(v) | |
79 @test ((A-B)*v)[i] == 2*v[i] - 3*v[i] | |
80 end | |
81 | |
82 @test range_size(A+B, (3,)) == range_size(A, (3,)) == range_size(B,(3,)) | |
83 @test domain_size(A+B, (3,)) == domain_size(A, (3,)) == domain_size(B,(3,)) | |
84 end | |
85 | |
60 @testset "LazyArray" begin | 86 @testset "LazyArray" begin |
61 struct DummyArray{T,D, T1<:AbstractArray{T,D}} <: LazyArray{T,D} | 87 struct DummyArray{T,D, T1<:AbstractArray{T,D}} <: LazyArray{T,D} |
62 data::T1 | 88 data::T1 |
63 end | 89 end |
64 Base.size(v::DummyArray) = size(v.data) | 90 Base.size(v::DummyArray) = size(v.data) |