1// RUN: %exploded_graph_rewriter %s | FileCheck %s
2
3// FIXME: Substitution doesn't seem to work on Windows.
4// UNSUPPORTED: system-windows
5
6// CHECK: <b>Program points:</b>
7// CHECK-SAME: <table border="0" align="left" width="0">
8// CHECK-SAME:   <tr>
9// CHECK-SAME:     <td width="0">
10// CHECK-SAME:     </td>
11// CHECK-SAME:     <td align="left" width="0">
12// CHECK-SAME:       <font color="gold3">BlockEdge</font>
13// CHECK-SAME:     </td>
14// CHECK-SAME:     <td align="left">
15// CHECK-SAME:     [B0] -&gt; [B1]
16// CHECK-SAME:     </td>
17// CHECK-SAME:   </tr>
18// CHECK-SAME:   <tr>
19// CHECK-SAME:     <td width="0">
20// CHECK-SAME:     </td>
21// CHECK-SAME:     <td align="left" width="0">
22// CHECK-SAME:       <font color="gold3">BlockEntrance</font>
23// CHECK-SAME:     </td>
24// CHECK-SAME:     <td align="left">
25// CHECK-SAME:     [B1]
26// CHECK-SAME:     </td>
27// CHECK-SAME:   </tr>
28// CHECK-SAME: </table>
29Node0x1 [shape=record,label=
30 "{
31    { "node_id": 1, "pointer": "0x1", "has_report": false, "is_sink": false,
32      "program_state": null, "program_points": [
33      {
34        "kind": "Edge",
35        "src_id": 0,
36        "dst_id": 1,
37        "terminator": null,
38        "term_kind": null,
39        "tag": null
40      },
41      {
42        "kind": "BlockEntrance",
43        "block_id": 1,
44        "terminator": null,
45        "term_kind": null,
46        "tag": null
47      }
48    ]}
49\l}"];
50
51// CHECK-NEXT: <b>Program point:</b>
52// CHECK-SAME: <table border="0" align="left" width="0">
53// CHECK-SAME:   <tr>
54// CHECK-SAME:     <td align="left" width="0">
55// CHECK-SAME:       (main file):<b>4</b>:<b>5</b>:
56// CHECK-SAME:     </td>
57// CHECK-SAME:     <td align="left" width="0">
58// CHECK-SAME:       <font color="cyan4">DeclRefExpr</font>
59// CHECK-SAME:     </td>
60// CHECK-SAME:     <td align="left">
61// CHECK-SAME:       <font color="cyan3">PreStmt</font>
62// CHECK-SAME:     </td>
63// CHECK-SAME:     <td>x</td>
64// CHECK-SAME:   </tr>
65// CHECK-SAME:   <tr>
66// CHECK-SAME:     <td width="0">
67// CHECK-SAME:     </td>
68// CHECK-SAME:     <td colspan="3" align="left">
69// CHECK-SAME:       <b>Tag: </b>
70// CHECK-SAME:       <font color="crimson">ExprEngine : Clean Node</font>
71// CHECK-SAME:     </td>
72// CHECK-SAME:   </tr>
73// CHECK-SAME: </table>
74Node0x2 [shape=record,label=
75 "{
76    { "node_id": 2, "pointer": "0x2", "has_report": false, "is_sink": false,
77      "program_state": null, "program_points": [
78      {
79        "kind": "Statement",
80        "stmt_kind": "DeclRefExpr",
81        "stmt_point_kind": "PreStmt",
82        "stmd_id": 3,
83        "pointer": "0x3",
84        "pretty": "x",
85        "location": {
86          "line": 4,
87          "column": 5
88        },
89        "tag": "ExprEngine : Clean Node"
90      }
91    ]}
92\l}"];
93
94// Test collapsing large pretty prints with braces.
95
96// CHECK-NEXT: <b>Program point:</b>
97// CHECK-SAME: <td>\{ ... \}</td>
98Node0x3 [shape=record,label=
99 "{
100    { "node_id": 3, "pointer": "0x3", "has_report": false, "is_sink": false,
101      "program_state": null, "program_points": [
102      {
103        "kind": "Statement",
104        "stmt_kind": "CompoundStmt",
105        "stmt_point_kind": "PostStmt",
106        "stmd_id": 6,
107        "pointer": "0x6",
108        "pretty": "{ very very very very very very long pretty print }",
109        "location": {
110          "line": 7,
111          "column": 8
112        },
113        "tag": "ExprEngine : Clean Node"
114      }
115    ]}
116\l}"];
117