d2/e2etests/todo_test.go
Alexander Wang a1c753a413
update tests
2023-04-27 14:03:15 -07:00

280 lines
5.4 KiB
Go

package e2etests
import (
_ "embed"
"testing"
)
func testTodo(t *testing.T) {
tcs := []testCase{
{
// issue https://github.com/terrastruct/d2/issues/71
name: "container_child_edge",
script: `
container.first -> container.second: 1->2
container -> container.second: c->2
`,
dagreFeatureError: `Connection "(container -> container.second)[0]" goes from a container to a descendant, but layout engine "dagre" does not support this. See https://d2lang.com/tour/layouts/#layout-specific-functionality for more.`,
},
{
name: "child_parent_edges",
script: `a.b -> a
a.b -> a.b.c
a.b.c.d -> a.b`,
dagreFeatureError: `Connection "(a.b -> a)[0]" goes from a container to a descendant, but layout engine "dagre" does not support this. See https://d2lang.com/tour/layouts/#layout-specific-functionality for more.`,
},
{
name: "container_label_loop",
script: `a: "If we were meant to fly, we wouldn't keep losing our luggage" {
b -> c
}
a -> a`,
dagreFeatureError: `Connection "(a -> a)[0]" is a self loop on a container, but layout engine "dagre" does not support this. See https://d2lang.com/tour/layouts/#layout-specific-functionality for more.`,
},
{
// as nesting gets deeper, the groups advance towards `c` and may overlap its lifeline
// needs to consider the group size when computing the distance from `a` to `c`
// a similar effect can be seen for spans
name: "sequence_diagram_actor_padding_nested_groups",
script: `shape: sequence_diagram
b;a;c
b -> c
this is a message group: {
a -> b
and this is a nested message group: {
a -> b
what about more nesting: {
a -> b
yo: {
a -> b
yo: {
a -> b
}
}
}
}
}`,
},
{
// dimensions set on containers are ignored
name: "shape_set_width_height",
script: `
containers: {
circle container: {
shape: circle
diamond: {
shape: diamond
width: 128
height: 64
}
}
diamond container: {
shape: diamond
circle: {
shape: circle
width: 128
}
}
oval container: {
shape: oval
hexagon: {
shape: hexagon
width: 128
height: 64
}
}
hexagon container: {
shape: hexagon
oval: {
shape: oval
width: 128
height: 64
}
}
}
cloud: {
shape: cloud
width: 512
height: 256
}
tall cylinder: {
shape: cylinder
width: 256
height: 512
}
cloud -> class2 -> tall cylinder -> users
users: {
shape: sql_table
id: int
name: string
email: string
password: string
last_login: datetime
width: 800
height: 400
}
class2: {
shape: class
-num: int
-timeout: int
-pid
+getStatus(): Enum
+getJobs(): "Job[]"
+setTimeout(seconds int)
width: 800
height: 400
}
container -> text -> code -> small code
text: {
label: |md
markdown text expanded to 800x400
|
height: 800
width: 400
}
code: |go
a := 5
b := a + 7
fmt.Printf("%d", b)
| {
width: 400
height: 300
}
small code: |go
a := 5
b := a + 7
fmt.Printf("%d", b)
| {
width: 4
height: 3
}
`,
},
{
// issue https://github.com/terrastruct/d2/issues/748
name: "sequence_diagram_edge_group_span_field",
script: `
Office chatter: {
shape: sequence_diagram
alice: Alice
bob: Bobby
alice.a
awkward small talk: {
alice -> bob: uhm, hi
bob -> alice: oh, hello
icebreaker attempt: {
alice -> bob: what did you have for lunch?
}
unfortunate outcome: {
bob.a -> alice.a: that's personal
}
}
}
`,
},
{
// issue https://github.com/terrastruct/d2/issues/748
skip: true,
name: "sequence_diagram_ambiguous_edge_group",
script: `
Office chatter: {
shape: sequence_diagram
alice: Alice
bob: Bobby
awkward small talk: {
awkward small talk.ok
alice -> bob: uhm, hi
bob -> alice: oh, hello
icebreaker attempt: {
alice -> bob: what did you have for lunch?
}
unfortunate outcome: {
bob -> alice: that's personal
}
}
}
`,
},
{
// https://github.com/terrastruct/d2/issues/791
name: "container_icon_label",
script: `a: Big font {
icon: https://icons.terrastruct.com/essentials/004-picture.svg
style.font-size: 30
a -> b -> c
a: {
a
}
}
`,
},
{
name: "container_label_edge_adjustment",
script: `
a -> b.c -> d: {style.stroke-width: 8; target-arrowhead.shape: diamond; target-arrowhead.style.filled: true}
b.shape: cloud
e -> b.c: {style.stroke-width: 8; target-arrowhead.shape: diamond; target-arrowhead.style.filled: true}
f -> b: {
style: {
stroke: red
stroke-width: 8
}
target-arrowhead.shape: diamond
target-arrowhead.style.filled: true
}
g -> b: {style.stroke-width: 8; target-arrowhead.shape: diamond; target-arrowhead.style.filled: true}
b: a container label
`,
},
{
name: "container_label_edge_adjustment2",
script: `
x -> y: {
target-arrowhead: foo {
shape: diamond
style.filled: true
}
}
y: bar {z}
`,
},
{
name: "dagre_container_md_label_panic",
script: `
OEM Factory -> company Warehouse
company Warehouse.Master -> company Warehouse.Regional-1
company Warehouse.Master -> company Warehouse.Regional-2
company Warehouse.Master -> company Warehouse.Regional-N
company Warehouse.Regional-1 -> company Warehouse.Regional-2
company Warehouse.Regional-2 -> company Warehouse.Regional-N
company Warehouse.Regional-N -> company Warehouse.Regional-1
company Warehouse: |md
### company Warehouse
- Asset Tagging
- Inventory
- Staging
- Dispatch to Site
|
`,
},
}
runa(t, tcs)
}