From 6abbab5a7e1fab571288fd392d3f5c8601d34901 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Sat, 12 Nov 2022 13:31:08 -0800 Subject: [PATCH] 2022-11-12 01:31:08PM --- d2renderers/d2svg/d2svg.go | 2 + e2etests/e2e_test.go | 6 ++ e2etests/stable_test.go | 14 ++++ .../stable/class/dagre/board.exp.json | 75 +++++++++++++++++++ .../stable/class/dagre/sketch.exp.svg | 36 +++++++++ .../testdata/stable/class/elk/board.exp.json | 75 +++++++++++++++++++ .../testdata/stable/class/elk/sketch.exp.svg | 36 +++++++++ 7 files changed, 244 insertions(+) create mode 100644 e2etests/testdata/stable/class/dagre/board.exp.json create mode 100644 e2etests/testdata/stable/class/dagre/sketch.exp.svg create mode 100644 e2etests/testdata/stable/class/elk/board.exp.json create mode 100644 e2etests/testdata/stable/class/elk/sketch.exp.svg diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go index bf4ba25ac..ec8e33d55 100644 --- a/d2renderers/d2svg/d2svg.go +++ b/d2renderers/d2svg/d2svg.go @@ -500,9 +500,11 @@ func drawShape(writer io.Writer, targetShape d2target.Shape) error { switch targetShape.Type { case d2target.ShapeClass: drawClass(writer, targetShape) + fmt.Fprintf(writer, ``) return nil case d2target.ShapeSQLTable: drawTable(writer, targetShape) + fmt.Fprintf(writer, ``) return nil case d2target.ShapeOval: if targetShape.Multiple { diff --git a/e2etests/e2e_test.go b/e2etests/e2e_test.go index 2eecea2e3..513451247 100644 --- a/e2etests/e2e_test.go +++ b/e2etests/e2e_test.go @@ -2,6 +2,7 @@ package e2etests import ( "context" + "encoding/xml" "fmt" "io/ioutil" "os" @@ -127,6 +128,11 @@ func run(t *testing.T, tc testCase) { t.Fatal(err) } + var xmlParsed interface{} + if err := xml.Unmarshal(svgBytes, &xmlParsed); err != nil { + t.Fatalf("invalid SVG: %v", err) + } + err = diff.Testdata(filepath.Join(dataPath, "board"), diagram) if err != nil { ioutil.WriteFile(pathGotSVG, svgBytes, 0600) diff --git a/e2etests/stable_test.go b/e2etests/stable_test.go index 604a08ee7..c9a1a87fc 100644 --- a/e2etests/stable_test.go +++ b/e2etests/stable_test.go @@ -816,6 +816,20 @@ a line of text and an | a -> md -> b +`, + }, + { + name: "class", + script: `manager: BatchManager { + shape: class + -num: int + -timeout: int + -pid + + +getStatus(): Enum + +getJobs(): "Job[]" + +setTimeout(seconds int) +} `, }, } diff --git a/e2etests/testdata/stable/class/dagre/board.exp.json b/e2etests/testdata/stable/class/dagre/board.exp.json new file mode 100644 index 000000000..501753f8d --- /dev/null +++ b/e2etests/testdata/stable/class/dagre/board.exp.json @@ -0,0 +1,75 @@ +{ + "name": "", + "shapes": [ + { + "id": "manager", + "type": "class", + "pos": { + "x": 0, + "y": 0 + }, + "width": 339, + "height": 368, + "level": 1, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#FFFFFF", + "stroke": "#0A0F25", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "fields": [ + { + "name": "num", + "type": "int", + "visibility": "private" + }, + { + "name": "timeout", + "type": "int", + "visibility": "private" + }, + { + "name": "pid", + "type": "", + "visibility": "private" + } + ], + "methods": [ + { + "name": "getStatus()", + "return": "Enum", + "visibility": "public" + }, + { + "name": "getJobs()", + "return": "Job[]", + "visibility": "public" + }, + { + "name": "setTimeout(seconds int)", + "return": "void", + "visibility": "public" + } + ], + "columns": null, + "label": "BatchManager", + "fontSize": 20, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 150, + "labelHeight": 36 + } + ], + "connections": [] +} diff --git a/e2etests/testdata/stable/class/dagre/sketch.exp.svg b/e2etests/testdata/stable/class/dagre/sketch.exp.svg new file mode 100644 index 000000000..6767ce2f4 --- /dev/null +++ b/e2etests/testdata/stable/class/dagre/sketch.exp.svg @@ -0,0 +1,36 @@ + +BatchManager- +num +int- +timeout +int- +pid ++ +getStatus() +Enum+ +getJobs() +Job[]+ +setTimeout(seconds int) +void \ No newline at end of file diff --git a/e2etests/testdata/stable/class/elk/board.exp.json b/e2etests/testdata/stable/class/elk/board.exp.json new file mode 100644 index 000000000..592a921c2 --- /dev/null +++ b/e2etests/testdata/stable/class/elk/board.exp.json @@ -0,0 +1,75 @@ +{ + "name": "", + "shapes": [ + { + "id": "manager", + "type": "class", + "pos": { + "x": 12, + "y": 12 + }, + "width": 339, + "height": 368, + "level": 1, + "opacity": 1, + "strokeDash": 0, + "strokeWidth": 2, + "borderRadius": 0, + "fill": "#FFFFFF", + "stroke": "#0A0F25", + "shadow": false, + "3d": false, + "multiple": false, + "tooltip": "", + "link": "", + "icon": null, + "iconPosition": "", + "fields": [ + { + "name": "num", + "type": "int", + "visibility": "private" + }, + { + "name": "timeout", + "type": "int", + "visibility": "private" + }, + { + "name": "pid", + "type": "", + "visibility": "private" + } + ], + "methods": [ + { + "name": "getStatus()", + "return": "Enum", + "visibility": "public" + }, + { + "name": "getJobs()", + "return": "Job[]", + "visibility": "public" + }, + { + "name": "setTimeout(seconds int)", + "return": "void", + "visibility": "public" + } + ], + "columns": null, + "label": "BatchManager", + "fontSize": 20, + "fontFamily": "DEFAULT", + "language": "", + "color": "#0A0F25", + "italic": false, + "bold": true, + "underline": false, + "labelWidth": 150, + "labelHeight": 36 + } + ], + "connections": [] +} diff --git a/e2etests/testdata/stable/class/elk/sketch.exp.svg b/e2etests/testdata/stable/class/elk/sketch.exp.svg new file mode 100644 index 000000000..a324244e9 --- /dev/null +++ b/e2etests/testdata/stable/class/elk/sketch.exp.svg @@ -0,0 +1,36 @@ + +BatchManager- +num +int- +timeout +int- +pid ++ +getStatus() +Enum+ +getJobs() +Job[]+ +setTimeout(seconds int) +void \ No newline at end of file