changeset 1010:7acd417b780d feature/lazy_tensors/pretty_printing

Add pretty printing for ScalingTensor
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 21 Mar 2022 08:04:36 +0100
parents d5e6c4e9d64e
children f2c5d44a8db0
files src/LazyTensors/tensor_types.jl test/LazyTensors/tensor_types_test.jl
diffstat 2 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/LazyTensors/tensor_types.jl	Mon Mar 21 08:04:14 2022 +0100
+++ b/src/LazyTensors/tensor_types.jl	Mon Mar 21 08:04:36 2022 +0100
@@ -46,6 +46,18 @@
 LazyTensors.range_size(m::ScalingTensor) = m.size
 LazyTensors.domain_size(m::ScalingTensor) = m.size
 
+function Base.show(io::IO, ::MIME"text/plain", tm::ScalingTensor{T}) where T
+    if (:comact => true) in io
+        print(io, "$(tm.λ)*I(")
+        join(io, tm.size, ",")
+        print(io, ")")
+    else
+        print(io, "ScalingTensor{$T}(")
+        print(io, tm.λ, ", ")
+        print(io, tm.size)
+        print(io, ")")
+    end
+end
 
 """
     LazyLinearMap{T,R,D,...}(A, range_indicies, domain_indicies)
--- a/test/LazyTensors/tensor_types_test.jl	Mon Mar 21 08:04:14 2022 +0100
+++ b/test/LazyTensors/tensor_types_test.jl	Mon Mar 21 08:04:36 2022 +0100
@@ -64,6 +64,14 @@
 
     @inferred (st*v)[2,2]
     @inferred (st'*v)[2,2]
+
+    @testset "Pretty printing" begin
+        @test repr(MIME("text/plain"), ScalingTensor(2., (5,))) == "ScalingTensor{Float64}(2.0, (5,))" # TODO: Can we make this nicer?
+        @test repr(MIME("text/plain"), ScalingTensor(3, (4,5))) == "ScalingTensor{Int64}(3, (4, 5))"
+
+        @test repr(MIME("text/plain"), ScalingTensor(4., (5,)), context=:comact=>true) == "4.0*I(5)"
+        @test repr(MIME("text/plain"), ScalingTensor(2, (4,5)), context=:comact=>true) == "2*I(4,5)"
+    end
 end