@@ -9,6 +9,7 @@ using Test, YaoBase, YaoBlocks, YaoArrayRegister
9
9
@test g. blocks == [kron (2 , X, Y), kron (2 , 1 => phase (0.1 ))]
10
10
blks = [X, Y, Rx (0.3 )]
11
11
@test chsubblocks (g, blks) |> subblocks |> collect == blks
12
+ @test chsubblocks (chain (X, Y, Z), X for _ in 1 : 3 ) |> subblocks |> collect == [X, X, X]
12
13
13
14
c1 = ChainBlock (put (5 , 1 => X), put (5 , 3 => Y))
14
15
c2 = ChainBlock (put (5 , 4 => X), put (5 , 5 => Y))
@@ -22,18 +23,22 @@ using Test, YaoBase, YaoBlocks, YaoArrayRegister
22
23
c = ChainBlock ([X, Y])
23
24
c[1 ] = put (1 , 1 => X)
24
25
@test c[1 ] == put (1 , 1 => X)
25
-
26
- list = []
27
- push! (list, X)
28
- @test chain (list) == chain (X)
29
-
30
- @test chain (4 , []) == chain (4 )
31
26
end
32
27
33
28
@testset " test chain" begin
34
29
@test chain (kron (1 => X), control (2 , 1 => X))(4 ) |> nqubits == 4
35
30
@test chain (control (4 , 2 , 1 => X), kron (1 => X)) |> nqubits == 4
36
31
@test chain (control (4 , 2 , 1 => X), kron (4 , 1 => X)) |> nqubits == 4
32
+
33
+ list = []
34
+ push! (list, X)
35
+ @test chain (list) == chain (X)
36
+
37
+ @test chain (4 , []) == chain (4 )
38
+ @test chain (X for _ in 1 : 3 ) == chain (X, X, X)
39
+ @test chain (put (1 => X))(4 ) == chain (put (4 , 1 => X))
40
+ @test chain (put (1 => X), put (2 => X))(4 ) == chain (put (4 , 1 => X), put (4 , 2 => X))
41
+ @test chain ()(4 ) == chain (4 )
37
42
end
38
43
39
44
@testset " #15" begin
61
66
r = rand_state (2 )
62
67
@test statevec (apply! (copy (r), g)) ≈ mat (g) * r. state
63
68
apply! (copy (r), g)
69
+
70
+ @test chain (X, Y, Z, H)[2 : 4 ] == chain (Y, Z, H)
71
+
72
+ @testset " copy" begin
73
+ g = chain (phase (0.1 ))
74
+ g1 = copy (g)
75
+ g[1 ] = X
76
+ @test g1[1 ] == phase (0.1 )
77
+ end
78
+
79
+ @testset " similar" begin
80
+ g = chain (X, Y, Z)
81
+ @test similar (g) == chain (1 )
82
+ end
83
+
84
+ @testset " push!" begin
85
+ g = chain (2 , put (1 => X))
86
+ push! (g, put (2 => X))
87
+ @test g == chain (2 , put (1 => X), put (2 => X))
88
+ end
89
+
90
+ @testset " append!" begin
91
+ g1 = chain (X, Y, Z)
92
+ g2 = chain (Z, Z, Z)
93
+ @test append! (g1, g2) == chain (X, Y, Z, Z, Z, Z) == g1
94
+ end
95
+
96
+ @testset " prepend!" begin
97
+ g1 = chain (X, Y, Z)
98
+ g2 = chain (Z, Z, Z)
99
+ @test prepend! (g1, g2) == chain (Z, Z, Z, X, Y, Z) == g1
100
+ end
101
+
102
+ @testset " adjoint" begin
103
+ @test adjoint (chain (X, Y, Z, H)) == chain (H, Z, Y, X)
104
+ end
105
+
106
+ @testset " insert!" begin
107
+ @test insert! (chain (X, Y, Z), 2 , H) == chain (X, H, Y, Z)
108
+ end
64
109
end
65
110
66
111
@testset " test iteration" begin
0 commit comments