1
+ @testitem " Base show methods" begin
2
+ @op A; @op B;
3
+ @superop S;
4
+ @bra b₁; @bra b₂;
5
+ @ket k₁; @ket k₂;
6
+
7
+ @testset " symbolic literal objects" begin
8
+ @test repr (k₁) == " |k₁⟩"
9
+ @test repr (b₁) == " ⟨b₁|"
10
+ @test repr (A) == " A"
11
+ @test repr (S) == " S"
12
+ @test repr (zero (k₁)) == repr (zero (b₁)) == repr (zero (A)) == repr (zero (S)) == " 𝟎"
13
+ end
14
+
15
+ @testset " symbolic addition" begin
16
+ @test repr (k₁ + k₂) == " |k₁⟩+|k₂⟩"
17
+ @test repr (b₁ + b₂) == " ⟨b₁|+⟨b₂|"
18
+ @test repr (A + B) == " A+B"
19
+ end
20
+
21
+ @testset " symbolic application products" begin
22
+ @test repr (A * k₁) == " A|k₁⟩"
23
+ @test repr (b₁ * A) == " ⟨b₁|A"
24
+ @test repr ((A + B) * k₁) == " (A+B)|k₁⟩"
25
+ @test repr (b₁ * (A + B)) == " ⟨b₁|(A+B)"
26
+ @test repr ((A + B) * (k₁ + k₂)) == " (A+B)(|k₁⟩+|k₂⟩)"
27
+ @test repr ((b₁ + b₂) * (A + B)) == " (⟨b₁|+⟨b₂|)(A+B)"
28
+ @test repr ((A ⊗ B) * SKet (:k , SpinBasis (1 // 2 )^ 2 )) == " (A⊗B)|k⟩"
29
+ @test repr (SBra (:b , SpinBasis (1 // 2 )^ 2 ) * (A ⊗ B)) == " ⟨b|(A⊗B)"
30
+ @test repr ((A ⊗ B) * (k₁ ⊗ k₂)) == " (A⊗B)|k₁⟩|k₂⟩"
31
+ @test repr ((b₁ ⊗ b₂) * (A ⊗ B)) == " ⟨b₁|⟨b₂|(A⊗B)"
32
+ end
33
+
34
+ @testset " symbolic scaling" begin
35
+ @test repr (2 * k₁) == " 2|k₁⟩"
36
+ @test repr (2 * b₁) == " 2⟨b₁|"
37
+ @test repr (2 * A) == " 2A"
38
+ @test repr (2 * (k₁ + k₂)) == " 2(|k₁⟩+|k₂⟩)"
39
+ @test repr (2 * (b₁ + b₂)) == " 2(⟨b₁|+⟨b₂|)"
40
+ @test repr (2 * (A + B)) == " 2(A+B)"
41
+ @test repr (2 * (k₁ ⊗ k₂)) == " 2|k₁⟩|k₂⟩"
42
+ @test repr (2 * (b₁ ⊗ b₂)) == " 2⟨b₁|⟨b₂|"
43
+ @test repr (2 * (A ⊗ B)) == " 2A⊗B"
44
+ @test repr ((1 + im) * k₁) == " (1 + 1im)|k₁⟩"
45
+ @test repr ((1 + im) * b₁) == " (1 + 1im)⟨b₁|"
46
+ @test repr ((1 + im) * A) == " (1 + 1im)A"
47
+ @test repr ((1 + im) * (k₁ + k₂)) == " (1 + 1im)(|k₁⟩+|k₂⟩)"
48
+ @test repr ((1 + im) * (b₁ + b₂)) == " (1 + 1im)(⟨b₁|+⟨b₂|)"
49
+ @test repr ((1 + im) * (A + B)) == " (1 + 1im)(A+B)"
50
+ @test repr ((1 + im) * (k₁ ⊗ k₂)) == " (1 + 1im)|k₁⟩|k₂⟩"
51
+ @test repr ((1 + im) * (b₁ ⊗ b₂)) == " (1 + 1im)⟨b₁|⟨b₂|"
52
+ @test repr ((1 + im) * (A ⊗ B)) == " (1 + 1im)A⊗B"
53
+ end
54
+
55
+ @testset " symbolic inner and outer products" begin
56
+ @test repr (b₁ * k₁) == " ⟨b₁||k₁⟩"
57
+ @test repr (k₁ * b₁) == " |k₁⟩⟨b₁|"
58
+ end
59
+
60
+ @testset " symbolic superoperators" begin
61
+ @test repr (S * A) == " S[A]"
62
+ end
63
+
64
+ @testset " symbolic commutator and anticommutator" begin
65
+ @test repr (commutator (A, B)) == " [A,B]"
66
+ @test repr (anticommutator (A, B)) == " {A,B}"
67
+ end
68
+
69
+ @testset " symbolic linear algebra operations" begin
70
+ @test repr (conj (k₁)) == " |k₁⟩ˣ"
71
+ @test repr (conj (b₁)) == " ⟨b₁|ˣ"
72
+ @test repr (conj (A)) == " Aˣ"
73
+ @test repr (projector (k₁)) == " 𝐏[|k₁⟩]"
74
+ @test repr (transpose (k₁)) == " |k₁⟩ᵀ"
75
+ @test repr (transpose (b₁)) == " ⟨b₁|ᵀ"
76
+ @test repr (transpose (A)) == " Aᵀ"
77
+ @test repr (dagger (k₁)) == " |k₁⟩†"
78
+ @test repr (dagger (b₁)) == " ⟨b₁|†"
79
+ @test repr (dagger (A)) == " A†"
80
+ @test repr (tr (A)) == " tr(A)"
81
+ @test repr (ptrace (A ⊗ B, 1 )) == " (tr(A))B"
82
+ @test repr (ptrace (SOperator (:A , SpinBasis (1 // 2 )^ 2 ), 1 )) == " tr1(A)"
83
+ @test repr (inv (A)) == " A⁻¹"
84
+ @test repr (exp (A)) == " exp(A)"
85
+ @test repr (vec (A)) == " |A⟩⟩"
86
+ end
87
+ end
0 commit comments