GCC Code Coverage Report


Directory: ./
File: ZX/ZXDFormats.cpp
Date: 2022-10-15 05:10:18
Warnings: 5 unchecked decisions!
Exec Total Coverage
Lines: 22 23 95.7%
Functions: 2 2 100.0%
Branches: 87 134 64.9%
Decisions: 9 20 45.0%

Line Branch Decision Exec Source
1 // Copyright 2019-2022 Cambridge Quantum Computing
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 #include "Utils/GraphHeaders.hpp"
16 #include "ZX/ZXDiagram.hpp"
17
18 namespace tket {
19
20 namespace zx {
21
22 3 bool ZXDiagram::is_graphlike() const {
23
12/18
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 75 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 78 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 75 times.
✓ Branch 14 taken 3 times.
✓ Branch 16 taken 75 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 75 times.
✓ Branch 19 taken 3 times.
✓ Branch 21 taken 6 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 3 times.
✓ Branch 24 taken 3 times.
81 BGL_FORALL_EDGES(w, *graph, ZXGraph) {
24
5/8
✓ Branch 1 taken 75 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 75 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 75 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 51 times.
✓ Branch 10 taken 24 times.
2/2
✓ Decision 'true' taken 24 times.
✓ Decision 'false' taken 102 times.
126 if (is_boundary_type(get_zxtype(source(w))) ||
25
6/10
✓ Branch 1 taken 51 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 51 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 51 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 51 times.
✓ Branch 11 taken 24 times.
✓ Branch 12 taken 51 times.
126 is_boundary_type(get_zxtype(target(w)))) {
26
2/4
✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 24 times.
0/1
? Decision couldn't be analyzed.
24 if (get_wire_type(w) != ZXWireType::Basic) return false;
27 } else {
28
2/4
✓ Branch 1 taken 51 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 51 times.
0/1
? Decision couldn't be analyzed.
51 if (get_wire_type(w) != ZXWireType::H) return false;
29 }
30 }
31
7/8
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 68 times.
✓ Branch 7 taken 3 times.
✓ Branch 9 taken 68 times.
✓ Branch 10 taken 3 times.
✓ Branch 12 taken 3 times.
✓ Branch 13 taken 3 times.
74 BGL_FORALL_VERTICES(v, *graph, ZXGraph) {
32
1/2
✓ Branch 1 taken 68 times.
✗ Branch 2 not taken.
68 ZXType type = get_zxtype(v);
33
5/8
✓ Branch 0 taken 24 times.
✓ Branch 1 taken 44 times.
✓ Branch 3 taken 24 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 24 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 68 times.
2/2
✓ Decision 'true' taken 3 times.
✓ Decision 'false' taken 65 times.
68 if (type != ZXType::ZSpider && !is_boundary_type(type)) return false;
34 }
35 3 return true;
36 }
37
38 31 bool ZXDiagram::is_MBQC() const {
39
12/18
✓ Branch 2 taken 31 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 31 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 616 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 647 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 616 times.
✓ Branch 14 taken 31 times.
✓ Branch 16 taken 616 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 616 times.
✓ Branch 19 taken 31 times.
✓ Branch 21 taken 62 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 31 times.
✓ Branch 24 taken 31 times.
678 BGL_FORALL_EDGES(w, *graph, ZXGraph) {
40
2/4
✓ Branch 1 taken 616 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 616 times.
0/1
? Decision couldn't be analyzed.
616 if (get_qtype(w) != QuantumType::Quantum) return false;
41
5/8
✓ Branch 1 taken 616 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 616 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 616 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 570 times.
✓ Branch 10 taken 46 times.
2/2
✓ Decision 'true' taken 140 times.
✓ Decision 'false' taken 1046 times.
1186 if (is_boundary_type(get_zxtype(source(w))) ||
42
7/10
✓ Branch 1 taken 570 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 570 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 570 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 94 times.
✓ Branch 10 taken 476 times.
✓ Branch 11 taken 140 times.
✓ Branch 12 taken 476 times.
1186 is_boundary_type(get_zxtype(target(w)))) {
43
2/4
✓ Branch 1 taken 140 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 140 times.
0/1
? Decision couldn't be analyzed.
140 if (get_wire_type(w) != ZXWireType::Basic) return false;
44 } else {
45
2/4
✓ Branch 1 taken 476 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 476 times.
0/1
? Decision couldn't be analyzed.
476 if (get_wire_type(w) != ZXWireType::H) return false;
46 }
47 }
48
7/8
✓ Branch 2 taken 31 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 530 times.
✓ Branch 7 taken 31 times.
✓ Branch 9 taken 530 times.
✓ Branch 10 taken 31 times.
✓ Branch 12 taken 31 times.
✓ Branch 13 taken 31 times.
592 BGL_FORALL_VERTICES(v, *graph, ZXGraph) {
49
1/2
✓ Branch 1 taken 530 times.
✗ Branch 2 not taken.
530 ZXType type = get_zxtype(v);
50
7/10
✓ Branch 1 taken 530 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 140 times.
✓ Branch 4 taken 390 times.
✓ Branch 5 taken 94 times.
✓ Branch 6 taken 46 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 94 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 530 times.
1/2
✗ Decision 'true' not taken.
✓ Decision 'false' taken 530 times.
530 if (!is_MBQC_type(type) && type != ZXType::Input && type != ZXType::Output)
51 return false;
52
2/4
✓ Branch 1 taken 530 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 530 times.
2/2
✓ Decision 'true' taken 31 times.
✓ Decision 'false' taken 499 times.
530 if (get_qtype(v) != QuantumType::Quantum) return false;
53 }
54 31 return true;
55 }
56
57 } // namespace zx
58
59 } // namespace tket
60