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