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