Skip to content

Commit e3bccf4

Browse files
committed
add fix and tests
1 parent bf60e7f commit e3bccf4

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

src/fusiontrees/fusiontrees.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ function FusionTree{I}(uncoupled::NTuple{N}, coupled=one(I),
8787
(uncoupled..., dual(coupled)))))
8888
end
8989
function FusionTree(uncoupled::NTuple{N,I}, coupled::I,
90-
isdual=ntuple(n -> false, length(uncoupled))) where {I<:Sector}
90+
isdual=ntuple(n -> false, length(uncoupled))) where {N,I<:Sector}
9191
return FusionTree{I}(uncoupled, coupled, isdual)
9292
end
9393
FusionTree(uncoupled::Tuple{I,Vararg{I}}) where {I<:Sector} = FusionTree(uncoupled, one(I))

test/fusiontrees.jl

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,43 @@ ti = time()
2525
@testset "Fusion tree $Istr: printing" begin
2626
@test eval(Meta.parse(sprint(show, f))) == f
2727
end
28+
@testset "Fusion tree $Istr: constructor properties" begin
29+
u = one(I)
30+
@constinferred FusionTree((), u, (), (), ())
31+
@constinferred FusionTree((u,), u, (false,), (), ())
32+
@constinferred FusionTree((u, u), u, (false, false), (), (1,))
33+
@constinferred FusionTree((u, u, u), u, (false, false, false), (u,), (1, 1))
34+
@constinferred FusionTree((u, u, u, u), u, (false, false, false, false), (u, u),
35+
(1, 1, 1))
36+
@test_throws MethodError FusionTree((u, u, u), u, (false, false), (u,), (1, 1))
37+
@test_throws MethodError FusionTree((u, u, u), u, (false, false, false), (u, u),
38+
(1, 1))
39+
@test_throws MethodError FusionTree((u, u, u), u, (false, false, false), (u,),
40+
(1, 1, 1))
41+
@test_throws MethodError FusionTree((u, u, u), u, (false, false, false), (), (1,))
42+
43+
f = FusionTree((u, u, u), u, (false, false, false), (u,), (1, 1))
44+
@test sectortype(f) == I
45+
@test length(f) == 3
46+
@test FusionStyle(f) == FusionStyle(I)
47+
@test BraidingStyle(f) == BraidingStyle(I)
48+
49+
if FusionStyle(I) isa UniqueFusion
50+
@constinferred FusionTree((), u, ())
51+
@constinferred FusionTree((u,), u, (false,))
52+
@constinferred FusionTree((u, u), u, (false, false))
53+
@constinferred FusionTree((u, u, u), u)
54+
@constinferred FusionTree((u, u, u, u))
55+
@test_throws MethodError FusionTree((u, u), u, (false, false, false))
56+
else
57+
errstr = "fusion tree requires inner lines if `FusionStyle(I) <: MultipleFusion`"
58+
@test_throws errstr FusionTree((), u, ())
59+
@test_throws errstr FusionTree((u,), u, (false,))
60+
@test_throws errstr FusionTree((u, u), u, (false, false))
61+
@test_throws errstr FusionTree((u, u, u), u)
62+
@test_throws errstr FusionTree((u, u, u, u))
63+
end
64+
end
2865
@testset "Fusion tree $Istr: insertat" begin
2966
N = 4
3067
out2 = ntuple(n -> randsector(I), N)

0 commit comments

Comments
 (0)