From 424f671d5419c76f1acfb66990bd93f1892198d5 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Tue, 6 Jun 2023 22:52:17 -0700 Subject: [PATCH] add test exercising steps/scenarios --- d2ir/import_test.go | 15 + .../imports/steps-inheritence.exp.json | 1187 +++++++++++++++++ 2 files changed, 1202 insertions(+) create mode 100644 testdata/d2ir/TestCompile/imports/steps-inheritence.exp.json diff --git a/d2ir/import_test.go b/d2ir/import_test.go index fe1c87bab..38b3a3a2c 100644 --- a/d2ir/import_test.go +++ b/d2ir/import_test.go @@ -84,6 +84,21 @@ label: meow`, assertQuery(t, m, 0, 0, "root.layers.x.layers.y", "layers.x.y.link") }, }, + { + name: "steps-inheritence", + run: func(t testing.TB) { + m, err := compileFS(t, "index.d2", map[string]string{ + "index.d2": `z; steps: { 1: @x; 2: @y }; scenarios: { x: @x; y: @y }`, + "x.d2": `a`, + "y.d2": `b`, + }) + assert.Success(t, err) + assertQuery(t, m, 2, 0, nil, "scenarios.x") + assertQuery(t, m, 2, 0, nil, "scenarios.y") + assertQuery(t, m, 2, 0, nil, "steps.1") + assertQuery(t, m, 3, 0, nil, "steps.2") + }, + }, { name: "spread", run: func(t testing.TB) { diff --git a/testdata/d2ir/TestCompile/imports/steps-inheritence.exp.json b/testdata/d2ir/TestCompile/imports/steps-inheritence.exp.json new file mode 100644 index 000000000..e80dff636 --- /dev/null +++ b/testdata/d2ir/TestCompile/imports/steps-inheritence.exp.json @@ -0,0 +1,1187 @@ +{ + "fields": [ + { + "name": "z", + "references": [ + { + "string": { + "range": "index.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + }, + "key_path": { + "range": "index.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "index.d2,0:0:0-0:1:1", + "key": { + "range": "index.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + } + ] + }, + { + "name": "scenarios", + "composite": { + "fields": [ + { + "name": "x", + "composite": { + "fields": [ + { + "name": "z", + "references": [ + { + "string": { + "range": "index.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + }, + "key_path": { + "range": "index.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "index.d2,0:0:0-0:1:1", + "key": { + "range": "index.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + } + ] + }, + { + "name": "a", + "references": [ + { + "string": { + "range": "x.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + }, + "key_path": { + "range": "x.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "x.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "x.d2,0:0:0-0:1:1", + "key": { + "range": "x.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "x.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + } + ] + } + ], + "edges": null + }, + "references": [ + { + "string": { + "range": "index.d2,0:41:41-0:42:42", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + }, + "key_path": { + "range": "index.d2,0:41:41-0:42:42", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:41:41-0:42:42", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "index.d2,0:41:41-0:46:46", + "key": { + "range": "index.d2,0:41:41-0:42:42", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:41:41-0:42:42", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "import": { + "range": "index.d2,0:44:44-0:46:46", + "spread": false, + "pre": "", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:45:45-0:46:46", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + } + } + } + } + } + ] + }, + { + "name": "y", + "composite": { + "fields": [ + { + "name": "z", + "references": [ + { + "string": { + "range": "index.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + }, + "key_path": { + "range": "index.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "index.d2,0:0:0-0:1:1", + "key": { + "range": "index.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + } + ] + }, + { + "name": "b", + "references": [ + { + "string": { + "range": "y.d2,0:0:0-0:1:1", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + }, + "key_path": { + "range": "y.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "y.d2,0:0:0-0:1:1", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "y.d2,0:0:0-0:1:1", + "key": { + "range": "y.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "y.d2,0:0:0-0:1:1", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + } + ] + } + ], + "edges": null + }, + "references": [ + { + "string": { + "range": "index.d2,0:48:48-0:49:49", + "value": [ + { + "string": "y", + "raw_string": "y" + } + ] + }, + "key_path": { + "range": "index.d2,0:48:48-0:49:49", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:48:48-0:49:49", + "value": [ + { + "string": "y", + "raw_string": "y" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "index.d2,0:48:48-0:54:54", + "key": { + "range": "index.d2,0:48:48-0:49:49", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:48:48-0:49:49", + "value": [ + { + "string": "y", + "raw_string": "y" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "import": { + "range": "index.d2,0:51:51-0:54:54", + "spread": false, + "pre": "", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:52:52-0:53:53", + "value": [ + { + "string": "y", + "raw_string": "y" + } + ] + } + } + ] + } + } + } + } + } + ] + } + ], + "edges": null + }, + "references": [ + { + "string": { + "range": "index.d2,0:28:28-0:37:37", + "value": [ + { + "string": "scenarios", + "raw_string": "scenarios" + } + ] + }, + "key_path": { + "range": "index.d2,0:28:28-0:37:37", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:28:28-0:37:37", + "value": [ + { + "string": "scenarios", + "raw_string": "scenarios" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "index.d2,0:28:28-0:55:55", + "key": { + "range": "index.d2,0:28:28-0:37:37", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:28:28-0:37:37", + "value": [ + { + "string": "scenarios", + "raw_string": "scenarios" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "index.d2,0:39:39-0:55:55", + "nodes": [ + { + "map_key": { + "range": "index.d2,0:41:41-0:46:46", + "key": { + "range": "index.d2,0:41:41-0:42:42", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:41:41-0:42:42", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "import": { + "range": "index.d2,0:44:44-0:46:46", + "spread": false, + "pre": "", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:45:45-0:46:46", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + } + } + } + }, + { + "map_key": { + "range": "index.d2,0:48:48-0:54:54", + "key": { + "range": "index.d2,0:48:48-0:49:49", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:48:48-0:49:49", + "value": [ + { + "string": "y", + "raw_string": "y" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "import": { + "range": "index.d2,0:51:51-0:54:54", + "spread": false, + "pre": "", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:52:52-0:53:53", + "value": [ + { + "string": "y", + "raw_string": "y" + } + ] + } + } + ] + } + } + } + } + ] + } + } + } + } + } + ] + }, + { + "name": "steps", + "composite": { + "fields": [ + { + "name": "1", + "composite": { + "fields": [ + { + "name": "z", + "references": [ + { + "string": { + "range": "index.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + }, + "key_path": { + "range": "index.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "index.d2,0:0:0-0:1:1", + "key": { + "range": "index.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + } + ] + }, + { + "name": "a", + "references": [ + { + "string": { + "range": "x.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + }, + "key_path": { + "range": "x.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "x.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "x.d2,0:0:0-0:1:1", + "key": { + "range": "x.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "x.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + } + ] + } + ], + "edges": null + }, + "references": [ + { + "string": { + "range": "index.d2,0:12:12-0:13:13", + "value": [ + { + "string": "1", + "raw_string": "1" + } + ] + }, + "key_path": { + "range": "index.d2,0:12:12-0:13:13", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:12:12-0:13:13", + "value": [ + { + "string": "1", + "raw_string": "1" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "index.d2,0:12:12-0:17:17", + "key": { + "range": "index.d2,0:12:12-0:13:13", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:12:12-0:13:13", + "value": [ + { + "string": "1", + "raw_string": "1" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "import": { + "range": "index.d2,0:15:15-0:17:17", + "spread": false, + "pre": "", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:16:16-0:17:17", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + } + } + } + } + } + ] + }, + { + "name": "2", + "composite": { + "fields": [ + { + "name": "z", + "references": [ + { + "string": { + "range": "index.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + }, + "key_path": { + "range": "index.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "index.d2,0:0:0-0:1:1", + "key": { + "range": "index.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:0:0-0:1:1", + "value": [ + { + "string": "z", + "raw_string": "z" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + } + ] + }, + { + "name": "a", + "references": [ + { + "string": { + "range": "x.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + }, + "key_path": { + "range": "x.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "x.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "x.d2,0:0:0-0:1:1", + "key": { + "range": "x.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "x.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + } + ] + }, + { + "name": "b", + "references": [ + { + "string": { + "range": "y.d2,0:0:0-0:1:1", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + }, + "key_path": { + "range": "y.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "y.d2,0:0:0-0:1:1", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "y.d2,0:0:0-0:1:1", + "key": { + "range": "y.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "y.d2,0:0:0-0:1:1", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + } + ] + } + ], + "edges": null + }, + "references": [ + { + "string": { + "range": "index.d2,0:19:19-0:20:20", + "value": [ + { + "string": "2", + "raw_string": "2" + } + ] + }, + "key_path": { + "range": "index.d2,0:19:19-0:20:20", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:19:19-0:20:20", + "value": [ + { + "string": "2", + "raw_string": "2" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "index.d2,0:19:19-0:25:25", + "key": { + "range": "index.d2,0:19:19-0:20:20", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:19:19-0:20:20", + "value": [ + { + "string": "2", + "raw_string": "2" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "import": { + "range": "index.d2,0:22:22-0:25:25", + "spread": false, + "pre": "", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:23:23-0:24:24", + "value": [ + { + "string": "y", + "raw_string": "y" + } + ] + } + } + ] + } + } + } + } + } + ] + } + ], + "edges": null + }, + "references": [ + { + "string": { + "range": "index.d2,0:3:3-0:8:8", + "value": [ + { + "string": "steps", + "raw_string": "steps" + } + ] + }, + "key_path": { + "range": "index.d2,0:3:3-0:8:8", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:3:3-0:8:8", + "value": [ + { + "string": "steps", + "raw_string": "steps" + } + ] + } + } + ] + }, + "context": { + "edge": null, + "key": { + "range": "index.d2,0:3:3-0:26:26", + "key": { + "range": "index.d2,0:3:3-0:8:8", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:3:3-0:8:8", + "value": [ + { + "string": "steps", + "raw_string": "steps" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "index.d2,0:10:10-0:26:26", + "nodes": [ + { + "map_key": { + "range": "index.d2,0:12:12-0:17:17", + "key": { + "range": "index.d2,0:12:12-0:13:13", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:12:12-0:13:13", + "value": [ + { + "string": "1", + "raw_string": "1" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "import": { + "range": "index.d2,0:15:15-0:17:17", + "spread": false, + "pre": "", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:16:16-0:17:17", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + } + } + } + }, + { + "map_key": { + "range": "index.d2,0:19:19-0:25:25", + "key": { + "range": "index.d2,0:19:19-0:20:20", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:19:19-0:20:20", + "value": [ + { + "string": "2", + "raw_string": "2" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "import": { + "range": "index.d2,0:22:22-0:25:25", + "spread": false, + "pre": "", + "path": [ + { + "unquoted_string": { + "range": "index.d2,0:23:23-0:24:24", + "value": [ + { + "string": "y", + "raw_string": "y" + } + ] + } + } + ] + } + } + } + } + ] + } + } + } + } + } + ] + } + ], + "edges": null +}