|
3 | 3 | using Test |
4 | 4 |
|
5 | 5 | function createpaulistring(nq) |
6 | | - symbol = rand([:I, :X, :Y, :Z]) |
7 | | - qind = rand(1:nq) |
8 | | - coeff = randn() |
9 | | - PauliString(nq, symbol, qind, coeff) |
| 6 | + # Create a random PauliString with nq qubits |
10 | 7 |
|
11 | | - symbols = rand([:I, :X, :Y, :Z], min(nq, 4)) |
12 | | - qinds = shuffle(1:nq)[1:min(nq, 4)] |
| 8 | + symbols = rand([:I, :X, :Y, :Z], nq) |
| 9 | + qinds = shuffle(1:nq)[1:nq] |
13 | 10 | coeff = randn() |
14 | | - pstr = PauliString(nq, symbols, qinds, coeff) |
15 | 11 |
|
16 | | - return pstr |
| 12 | + return PauliString(nq, symbols, qinds, coeff) |
| 13 | + |
17 | 14 | end |
18 | 15 |
|
19 | 16 | function createpaulisum(nq) |
20 | | - PauliSum(nq) |
21 | | - |
22 | | - pstr = createpaulistring(nq) |
23 | | - PauliSum(nq, pstr) |
24 | 17 |
|
25 | | - pstr = createpaulistring(nq) |
26 | | - psum = PauliSum(pstr) |
| 18 | + return PauliSum(createpaulistring(nq)) |
27 | 19 |
|
28 | | - return psum |
29 | 20 | end |
30 | 21 |
|
31 | 22 | function createvectorpaulisum(nq) |
32 | | - VectorPauliSum(nq) |
33 | 23 |
|
34 | | - pstr = createpaulistring(nq) |
35 | | - VectorPauliSum(nq, pstr) |
| 24 | + return VectorPauliSum(createpaulistring(nq)) |
36 | 25 |
|
37 | | - pstr = createpaulistring(nq) |
38 | | - psum = VectorPauliSum(pstr) |
39 | | - |
40 | | - return psum |
41 | 26 | end |
42 | 27 |
|
43 | 28 | @testset "Add to PauliSum" begin |
|
106 | 91 | @test tonumber(wrapped_pstr.coeff) == tonumber(pstr.coeff) == pstr.coeff |
107 | 92 | end |
108 | 93 |
|
109 | | -@testset "Conversions" begin |
| 94 | +@testset "PauliSum/VectorPauliSum Conversions" begin |
110 | 95 | nq = rand(1:100) |
111 | 96 |
|
112 | | - pstr = createpaulistring(nq) |
113 | | - psum = PauliSum(pstr) |
114 | | - vpsum = VectorPauliSum(psum) |
115 | | - vpsum2 = VectorPauliSum(pstr) |
116 | | - @test vpsum == psum == vpsum2 # checks Pauli by Pauli |
| 97 | + # Subtest for subtracting PauliSum |
| 98 | + @testset "PauliSum to VectorPauliSum" begin |
| 99 | + pstr = createpaulistring(nq) |
| 100 | + psum = PauliSum(pstr) |
| 101 | + vpsum = VectorPauliSum(psum) |
| 102 | + vpsum_from_str = VectorPauliSum(pstr) |
| 103 | + @test vpsum == psum # checks Pauli by Pauli |
| 104 | + @test vpsum_from_str == psum |
| 105 | + @test vpsum_from_str == vpsum |
| 106 | + end |
| 107 | + |
| 108 | + # Subtest for subtracting PauliSum |
| 109 | + @testset "VectorPauliSum to PauliSums with Merging" begin |
| 110 | + |
| 111 | + pstr2 = createpaulistring(nq) |
| 112 | + vpsum = VectorPauliSum([pstr, pstr2, pstr]) |
| 113 | + psum = PauliSum(vpsum) |
| 114 | + @test vpsum == psum |
| 115 | + end |
117 | 116 |
|
118 | | - pstr2 = createpaulistring(nq) |
119 | | - vpsum = VectorPauliSum([pstr, pstr2, pstr]) |
120 | | - psum = PauliSum(vpsum) |
121 | | - @test vpsum == psum |
122 | 117 | end |
123 | 118 |
|
124 | 119 | # Test overloading methods for PauliSum |
|
0 commit comments