comparison LazyTensors/test/runtests.jl @ 257:d4cd4882ee9f boundary_conditions

Improve error messages when multiblying with TensorMappings and add some tests for TensorOperators
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 28 Jun 2019 14:10:35 +0200
parents 1c6afdcfd657
children b577b5f64530
comparison
equal deleted inserted replaced
256:d8f42733f392 257:d4cd4882ee9f
54 @test (m*m*v)[1] == (:apply,m*v,(1,)) 54 @test (m*m*v)[1] == (:apply,m*v,(1,))
55 @test (m*m*v)[3] == (:apply,m*v,(3,)) 55 @test (m*m*v)[3] == (:apply,m*v,(3,))
56 @test (m*m*v)[6] == (:apply,m*v,(6,)) 56 @test (m*m*v)[6] == (:apply,m*v,(6,))
57 @test_broken BoundsError == (m*m*v)[0] 57 @test_broken BoundsError == (m*m*v)[0]
58 @test_broken BoundsError == (m*m*v)[7] 58 @test_broken BoundsError == (m*m*v)[7]
59
60 A = DummyMapping{Int, 2, 1}()
61
62 @test_throws MethodError A*ones(Int,2,2)
63 @test_throws MethodError A*A*v
64
65 struct ScalingOperator{T,D} <: TensorOperator{T,D}
66 λ::T
67 end
68
69 LazyTensors.apply(m::ScalingOperator{T,D}, v, I::Tuple{Int}) where {T,D} = m.λ*v[I...]
70
71 A = ScalingOperator{Int,1}(2)
72
73 @test A*[1,2,3] isa AbstractVector
74 @test A*[1,2,3] == [2,4,6]
59 end 75 end
60 76
61 @testset "TensorMapping binary operations" begin 77 @testset "TensorMapping binary operations" begin
62 struct ScalarMapping{T,R,D} <: TensorMapping{T,R,D} 78 struct ScalarMapping{T,R,D} <: TensorMapping{T,R,D}
63 λ::T 79 λ::T