Skip to content

Commit 12df6cc

Browse files
authored
Use @constinferred in tests (#8)
1 parent fb3f316 commit 12df6cc

File tree

5 files changed

+176
-174
lines changed

5 files changed

+176
-174
lines changed

test/Project.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
[deps]
22
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
33
GradedUnitRanges = "e2de450a-8a67-46c7-b59c-01d5a3d041c5"
4-
SymmetrySectors = "f8a8ad64-adbc-4fce-92f7-ffe2bb36a86e"
54
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
65
Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb"
6+
SymmetrySectors = "f8a8ad64-adbc-4fce-92f7-ffe2bb36a86e"
77
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
8+
TestExtras = "5ed8adda-3752-4e41-b88a-e8b09835ee3a"
89

910
[compat]
1011
Aqua = "0.8.9"

test/test_basics.jl

Lines changed: 0 additions & 6 deletions
This file was deleted.

test/test_fusion_rules.jl

Lines changed: 49 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ using SymmetrySectors:
1313
block_dimensions,
1414
quantum_dimension,
1515
trivial
16-
using Test: @inferred, @test, @testset, @test_throws
16+
using Test: @test, @testset, @test_throws
17+
using TestExtras: @constinferred
1718

1819
@testset "Simple SymmetrySector fusion rules" begin
1920
@testset "Z{2} fusion rules" begin
@@ -23,12 +24,12 @@ using Test: @inferred, @test, @testset, @test_throws
2324
@test z0 z0 == z0
2425
@test z0 z1 == z1
2526
@test z1 z1 == z0
26-
@test (@inferred z0 z0) == z0 # no better way, see Julia PR 23426
27+
@test (@constinferred z0 z0) == z0
2728

2829
q = TrivialSector()
29-
@test (@inferred q q) == q
30-
@test (@inferred q z0) == z0
31-
@test (@inferred z1 q) == z1
30+
@test (@constinferred q q) == q
31+
@test (@constinferred q z0) == z0
32+
@test (@constinferred z1 q) == z1
3233

3334
# using GradedUnitRanges interface
3435
@test space_isequal(fusion_product(z0, z0), gradedrange([z0 => 1]))
@@ -38,7 +39,7 @@ using Test: @inferred, @test, @testset, @test_throws
3839
@test space_isequal(fusion_product(z0), gradedrange([z0 => 1]))
3940
@test space_isequal(fusion_product(z0, z0, z0), gradedrange([z0 => 1]))
4041
@test space_isequal(fusion_product(z0, z0, z0, z0), gradedrange([z0 => 1]))
41-
@test (@inferred block_dimensions(gradedrange([z1 => 1]))) == [1]
42+
@test (@constinferred block_dimensions(gradedrange([z1 => 1]))) == [1]
4243
end
4344
@testset "U(1) fusion rules" begin
4445
q1 = U1(1)
@@ -48,7 +49,7 @@ using Test: @inferred, @test, @testset, @test_throws
4849
@test q1 q1 == U1(2)
4950
@test q1 q2 == U1(3)
5051
@test q2 q1 == U1(3)
51-
@test (@inferred q1 q2) == q3 # no better way, see Julia PR 23426
52+
@test (@constinferred q1 q2) == q3
5253
end
5354

5455
@testset "O2 fusion rules" begin
@@ -58,23 +59,25 @@ using Test: @inferred, @test, @testset, @test_throws
5859
s1 = O2(1)
5960

6061
q = TrivialSector()
61-
@test space_isequal((@inferred s0e q), gradedrange([s0e => 1]))
62-
@test space_isequal((@inferred q s0o), gradedrange([s0o => 1]))
63-
64-
@test space_isequal((@inferred s0e s0e), gradedrange([s0e => 1]))
65-
@test space_isequal((@inferred s0o s0e), gradedrange([s0o => 1]))
66-
@test space_isequal((@inferred s0o s0e), gradedrange([s0o => 1]))
67-
@test space_isequal((@inferred s0o s0o), gradedrange([s0e => 1]))
68-
69-
@test space_isequal((@inferred s0e s12), gradedrange([s12 => 1]))
70-
@test space_isequal((@inferred s0o s12), gradedrange([s12 => 1]))
71-
@test space_isequal((@inferred s12 s0e), gradedrange([s12 => 1]))
72-
@test space_isequal((@inferred s12 s0o), gradedrange([s12 => 1]))
73-
@test space_isequal((@inferred s12 s1), gradedrange([s12 => 1, O2(3//2) => 1]))
74-
@test space_isequal((@inferred s12 s12), gradedrange([s0o => 1, s0e => 1, s1 => 1]))
75-
76-
@test (@inferred quantum_dimension(s0o s1)) == 2
77-
@test (@inferred block_dimensions(s0o s1)) == [2]
62+
@test space_isequal((@constinferred s0e q), gradedrange([s0e => 1]))
63+
@test space_isequal((@constinferred q s0o), gradedrange([s0o => 1]))
64+
65+
@test space_isequal((@constinferred s0e s0e), gradedrange([s0e => 1]))
66+
@test space_isequal((@constinferred s0o s0e), gradedrange([s0o => 1]))
67+
@test space_isequal((@constinferred s0o s0e), gradedrange([s0o => 1]))
68+
@test space_isequal((@constinferred s0o s0o), gradedrange([s0e => 1]))
69+
70+
@test space_isequal((@constinferred s0e s12), gradedrange([s12 => 1]))
71+
@test space_isequal((@constinferred s0o s12), gradedrange([s12 => 1]))
72+
@test space_isequal((@constinferred s12 s0e), gradedrange([s12 => 1]))
73+
@test space_isequal((@constinferred s12 s0o), gradedrange([s12 => 1]))
74+
@test space_isequal((@constinferred s12 s1), gradedrange([s12 => 1, O2(3//2) => 1]))
75+
@test space_isequal(
76+
(@constinferred s12 s12), gradedrange([s0o => 1, s0e => 1, s1 => 1])
77+
)
78+
79+
@test (@constinferred quantum_dimension(s0o s1)) == 2
80+
@test (@constinferred block_dimensions(s0o s1)) == [2]
7881
end
7982

8083
@testset "SU2 fusion rules" begin
@@ -88,9 +91,9 @@ using Test: @inferred, @test, @testset, @test_throws
8891
@test space_isequal(j2 j2, gradedrange([j1 => 1, j3 => 1]))
8992
@test space_isequal(j2 j3, gradedrange([j2 => 1, j4 => 1]))
9093
@test space_isequal(j3 j3, gradedrange([j1 => 1, j3 => 1, j5 => 1]))
91-
@test space_isequal((@inferred j1 j2), gradedrange([j2 => 1]))
92-
@test (@inferred quantum_dimension(j1 j2)) == 2
93-
@test (@inferred block_dimensions(j1 j2)) == [2]
94+
@test space_isequal((@constinferred j1 j2), gradedrange([j2 => 1]))
95+
@test (@constinferred quantum_dimension(j1 j2)) == 2
96+
@test (@constinferred block_dimensions(j1 j2)) == [2]
9497

9598
@test space_isequal(fusion_product(j2), gradedrange([j2 => 1]))
9699
@test space_isequal(fusion_product(j2, j1), gradedrange([j2 => 1]))
@@ -104,8 +107,8 @@ using Test: @inferred, @test, @testset, @test_throws
104107
@test space_isequal ı, gradedrange([ı => 1]))
105108
@test space_isequal τ, gradedrange([τ => 1]))
106109
@test space_isequal ı, gradedrange([τ => 1]))
107-
@test space_isequal((@inferred τ τ), gradedrange([ı => 1, τ => 1]))
108-
@test (@inferred quantum_dimension(gradedrange([ı => 1, ı => 1]))) == 2.0
110+
@test space_isequal((@constinferred τ τ), gradedrange([ı => 1, τ => 1]))
111+
@test (@constinferred quantum_dimension(gradedrange([ı => 1, ı => 1]))) == 2.0
109112
end
110113

111114
@testset "Ising fusion rules" begin
@@ -122,8 +125,8 @@ using Test: @inferred, @test, @testset, @test_throws
122125
@test space_isequal ψ, gradedrange([σ => 1]))
123126
@test space_isequal σ, gradedrange([σ => 1]))
124127
@test space_isequal ψ, gradedrange([ı => 1]))
125-
@test space_isequal((@inferred ψ ψ), gradedrange([ı => 1]))
126-
@test (@inferred quantum_dimension σ)) == 2.0
128+
@test space_isequal((@constinferred ψ ψ), gradedrange([ı => 1]))
129+
@test (@constinferred quantum_dimension σ)) == 2.0
127130
end
128131
end
129132
@testset "Gradedrange fusion rules" begin
@@ -139,7 +142,7 @@ end
139142
g2 = gradedrange([U1(-2) => 2, U1(0) => 1, U1(1) => 2])
140143

141144
@test space_isequal(flip(dual(g1)), gradedrange([U1(1) => 1, U1(0) => 1, U1(-1) => 2]))
142-
@test (@inferred block_dimensions(g1)) == [1, 1, 2]
145+
@test (@constinferred block_dimensions(g1)) == [1, 1, 2]
143146

144147
gt = gradedrange([
145148
U1(-3) => 2,
@@ -155,8 +158,8 @@ end
155158
gf = gradedrange([
156159
U1(-3) => 2, U1(-2) => 2, U1(-1) => 5, U1(0) => 3, U1(1) => 4, U1(2) => 4
157160
])
158-
@test space_isequal((@inferred tensor_product(g1, g2)), gt)
159-
@test space_isequal((@inferred fusion_product(g1, g2)), gf)
161+
@test space_isequal((@constinferred tensor_product(g1, g2)), gt)
162+
@test space_isequal((@constinferred fusion_product(g1, g2)), gf)
160163

161164
gtd1 = gradedrange([
162165
U1(-1) => 2,
@@ -172,8 +175,8 @@ end
172175
gfd1 = gradedrange([
173176
U1(-3) => 4, U1(-2) => 2, U1(-1) => 4, U1(0) => 5, U1(1) => 3, U1(2) => 2
174177
])
175-
@test space_isequal((@inferred tensor_product(dual(g1), g2)), gtd1)
176-
@test space_isequal((@inferred fusion_product(dual(g1), g2)), gfd1)
178+
@test space_isequal((@constinferred tensor_product(dual(g1), g2)), gtd1)
179+
@test space_isequal((@constinferred fusion_product(dual(g1), g2)), gfd1)
177180

178181
gtd2 = gradedrange([
179182
U1(1) => 2,
@@ -189,8 +192,8 @@ end
189192
gfd2 = gradedrange([
190193
U1(-2) => 2, U1(-1) => 3, U1(0) => 5, U1(1) => 4, U1(2) => 2, U1(3) => 4
191194
])
192-
@test space_isequal((@inferred tensor_product(g1, dual(g2))), gtd2)
193-
@test space_isequal((@inferred fusion_product(g1, dual(g2))), gfd2)
195+
@test space_isequal((@constinferred tensor_product(g1, dual(g2))), gtd2)
196+
@test space_isequal((@constinferred fusion_product(g1, dual(g2))), gfd2)
194197

195198
gtd = gradedrange([
196199
U1(3) => 2,
@@ -206,8 +209,8 @@ end
206209
gfd = gradedrange([
207210
U1(-2) => 4, U1(-1) => 4, U1(0) => 3, U1(1) => 5, U1(2) => 2, U1(3) => 2
208211
])
209-
@test space_isequal((@inferred tensor_product(dual(g1), dual(g2))), gtd)
210-
@test space_isequal((@inferred fusion_product(dual(g1), dual(g2))), gfd)
212+
@test space_isequal((@constinferred tensor_product(dual(g1), dual(g2))), gtd)
213+
@test space_isequal((@constinferred fusion_product(dual(g1), dual(g2))), gfd)
211214

212215
# test different (non-product) sectors cannot be fused
213216
@test_throws MethodError fusion_product(gradedrange([Z{2}(0) => 1]), g1)
@@ -235,10 +238,10 @@ end
235238

236239
@test space_isequal(dual(flip(g3)), g3) # trivial for SU(2)
237240
@test space_isequal(
238-
(@inferred fusion_product(g3, g4)),
241+
(@constinferred fusion_product(g3, g4)),
239242
gradedrange([SU2(0) => 4, SU2(1//2) => 6, SU2(1) => 6, SU2(3//2) => 5, SU2(2) => 2]),
240243
)
241-
@test (@inferred block_dimensions(g3)) == [1, 4, 3]
244+
@test (@constinferred block_dimensions(g3)) == [1, 4, 3]
242245

243246
# test dual on non self-conjugate non-abelian representations
244247
s1 = SU{3}((0, 0))
@@ -268,13 +271,13 @@ end
268271
@testset "Mixed GradedUnitRange - Sector fusion rules" begin
269272
g1 = gradedrange([U1(1) => 1, U1(2) => 2])
270273
g2 = gradedrange([U1(2) => 1, U1(3) => 2])
271-
@test space_isequal((@inferred fusion_product(g1, U1(1))), g2)
272-
@test space_isequal((@inferred fusion_product(U1(1), g1)), g2)
274+
@test space_isequal((@constinferred fusion_product(g1, U1(1))), g2)
275+
@test space_isequal((@constinferred fusion_product(U1(1), g1)), g2)
273276

274277
g3 = gradedrange([SU2(0) => 1, SU2(1//2) => 2])
275278
g4 = gradedrange([SU2(0) => 2, SU2(1//2) => 1, SU2(1) => 2])
276-
@test space_isequal((@inferred fusion_product(g3, SU2(1//2))), g4)
277-
@test space_isequal((@inferred fusion_product(SU2(1//2), g3)), g4)
279+
@test space_isequal((@constinferred fusion_product(g3, SU2(1//2))), g4)
280+
@test space_isequal((@constinferred fusion_product(SU2(1//2), g3)), g4)
278281

279282
# test different simple sectors cannot be fused
280283
@test_throws MethodError Z{2}(0) U1(1)

0 commit comments

Comments
 (0)