1// RUN: %exploded_graph_rewriter -d %s | FileCheck %s
2
3// FIXME: Substitution doesn't seem to work on Windows.
4// UNSUPPORTED: system-windows
5
6// No diffs on the first node, nothing to check.
7Node0x1 [shape=record,label=
8 "{
9    {
10      "state_id": 2,
11      "program_points": [
12        {
13          "kind": "BlockEntrance", "block_id": 1,
14          "terminator": null, "term_kind": null,
15          "tag": null, "node_id": 1,
16          "has_report": 0, "is_sink": 0
17        }
18      ],
19      "program_state": {
20        "store": null,
21        "constraints": null,
22        "dynamic_types": null,
23        "constructing_objects": null,
24        "checker_messages": null,
25        "environment": {
26          "pointer": "0x2",
27          "items": [
28            {
29              "location_context": "#0 Call",
30              "lctx_id": 3,
31              "calling": "foo",
32              "location": null,
33              "items": [
34                {
35                  "stmt_id": 5,
36                  "pretty": "bar()",
37                  "value": "Unknown"
38                }
39              ]
40            }
41          ]
42        }
43      }
44    }
45\l}"];
46
47Node0x1 -> Node0x6;
48
49// CHECK: Node0x6 [
50// CHECK-SAME: <tr>
51// CHECK-SAME:   <td><font color="red">-</font></td>
52// CHECK-SAME:   <td align="left"><i>S5</i></td>
53// CHECK-SAME:   <td align="left">bar()</td>
54// CHECK-SAME:   <td align="left">Unknown</td>
55// CHECK-SAME: </tr>
56// CHECK-SAME: <tr>
57// CHECK-SAME:   <td><font color="forestgreen">+</font></td>
58// CHECK-SAME:   <td align="left"><i>S9</i></td>
59// CHECK-SAME:   <td align="left">baz()</td>
60// CHECK-SAME:   <td align="left">Undefined</td>
61// CHECK-SAME: </tr>
62Node0x6 [shape=record,label=
63 "{
64    {
65      "state_id": 7,
66      "program_points": [
67        {
68          "kind": "BlockEntrance", "block_id": 1,
69          "terminator": null, "term_kind": null,
70          "tag": null, "node_id": 1,
71          "has_report": 0, "is_sink": 0
72        }
73      ],
74      "program_state": {
75        "store": null,
76        "constraints": null,
77        "dynamic_types": null,
78        "constructing_objects": null,
79        "checker_messages": null,
80        "environment": {
81          "pointer": "0x2",
82          "items": [
83            {
84              "location_context": "#0 Call",
85              "lctx_id": 3,
86              "calling": "foo",
87              "location": null,
88              "items": [
89                {
90                  "stmt_id": 9,
91                  "pretty": "baz()",
92                  "value": "Undefined"
93                }
94              ]
95            }
96          ]
97        }
98      }
99    }
100\l}"];
101
102Node0x6 -> Node0x9;
103// Make sure that the last node in the path is not diffed.
104// CHECK: Node0x9 [
105// CHECK-SAME: <tr>
106// CHECK-SAME:   <td></td>
107// CHECK-SAME:   <td align="left"><i>S9</i></td>
108// CHECK-SAME:   <td align="left">baz()</td>
109// CHECK-SAME:   <td align="left">Undefined</td>
110// CHECK-SAME: </tr>
111Node0x9 [shape=record,label=
112 "{
113    {
114      "state_id": 7,
115      "program_points": [
116        {
117          "kind": "BlockEntrance", "block_id": 1,
118          "terminator": null, "term_kind": null,
119          "tag": null, "node_id": 1,
120          "has_report": 0, "is_sink": 0
121        }
122      ],
123      "program_state": {
124        "store": null,
125        "constraints": null,
126        "dynamic_types": null,
127        "constructing_objects": null,
128        "checker_messages": null,
129        "environment": {
130          "pointer": "0x2",
131          "items": [
132            {
133              "location_context": "#0 Call",
134              "lctx_id": 3,
135              "calling": "foo",
136              "location": null,
137              "items": [
138                {
139                  "stmt_id": 9,
140                  "pretty": "baz()",
141                  "value": "Undefined"
142                }
143              ]
144            }
145          ]
146        }
147      }
148    }
149\l}"];
150