2023-03-14 17:40:52 +00:00
|
|
|
package e2etests
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
_ "embed"
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"oss.terrastruct.com/d2/d2themes/d2themescatalog"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func testThemes(t *testing.T) {
|
|
|
|
|
tcs := []testCase{
|
|
|
|
|
{
|
|
|
|
|
name: "terminal",
|
|
|
|
|
themeID: d2themescatalog.Terminal.ID,
|
|
|
|
|
script: `
|
|
|
|
|
network: {
|
|
|
|
|
cell tower: {
|
2023-03-31 08:58:02 +00:00
|
|
|
style.text-transform: capitalize
|
2023-03-14 17:40:52 +00:00
|
|
|
satellites: {
|
|
|
|
|
shape: stored_data
|
|
|
|
|
style.multiple: true
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-31 08:58:02 +00:00
|
|
|
transmitter : {
|
|
|
|
|
style.text-transform: uppercase
|
|
|
|
|
}
|
2023-03-14 17:40:52 +00:00
|
|
|
|
2023-03-31 08:58:02 +00:00
|
|
|
satellites -> transmitter: SEnD {
|
|
|
|
|
style.text-transform: lowercase
|
|
|
|
|
}
|
2023-03-14 17:40:52 +00:00
|
|
|
satellites -> transmitter: send
|
|
|
|
|
satellites -> transmitter: send
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
online portal: {
|
|
|
|
|
ui: { shape: hexagon }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
data processor: {
|
|
|
|
|
storage: {
|
|
|
|
|
shape: cylinder
|
|
|
|
|
style.multiple: true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cell tower.transmitter -> data processor.storage: phone logs
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
user: {
|
|
|
|
|
shape: person
|
|
|
|
|
width: 130
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
user -> network.cell tower: make call
|
|
|
|
|
user -> network.online portal.ui: access {
|
|
|
|
|
style.stroke-dash: 3
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
api server -> network.online portal.ui: display
|
|
|
|
|
api server -> logs: persist
|
|
|
|
|
logs: { shape: page; style.multiple: true }
|
|
|
|
|
|
2023-03-16 05:53:12 +00:00
|
|
|
network.data processor -> api server
|
2023-03-16 20:01:58 +00:00
|
|
|
users: {
|
|
|
|
|
shape: sql_table
|
|
|
|
|
id: int
|
|
|
|
|
name: string
|
|
|
|
|
email: string
|
|
|
|
|
password: string
|
|
|
|
|
last_login: datetime
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
products: {
|
|
|
|
|
shape: class
|
|
|
|
|
id: int
|
|
|
|
|
price: decimal
|
|
|
|
|
sku: string
|
|
|
|
|
name: string
|
|
|
|
|
}
|
|
|
|
|
markdown: |md
|
|
|
|
|
# A tale
|
|
|
|
|
- of
|
|
|
|
|
- two cities
|
|
|
|
|
|
|
2023-03-18 03:20:30 +00:00
|
|
|
code: |go
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type City struct {
|
|
|
|
|
Name string
|
|
|
|
|
Population int
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func tellTale(city1, city2 City) {
|
|
|
|
|
fmt.Printf("There were two cities, %s and %s.\n", city1.Name, city2.Name)
|
|
|
|
|
fmt.Printf("%s had a population of %d.\n", city1.Name, city1.Population)
|
|
|
|
|
fmt.Printf("%s had a population of %d.\n", city2.Name, city2.Population)
|
|
|
|
|
fmt.Println("Their tales were intertwined, and their people shared many adventures.")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
city1 := City{Name: "CityA", Population: 1000000}
|
|
|
|
|
city2 := City{Name: "CityB", Population: 1200000}
|
|
|
|
|
|
|
|
|
|
tellTale(city1, city2)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
2023-03-30 03:09:06 +00:00
|
|
|
markdown -> code -> ex
|
|
|
|
|
ex: |tex
|
|
|
|
|
\\displaylines{x = a + b \\\\ y = b + c}
|
|
|
|
|
\\sum_{k=1}^{n} h_{k} \\int_{0}^{1} \\bigl(\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\partial_{k} f(a)\\bigr) \\,dt
|
|
|
|
|
|
|
2023-03-16 05:53:12 +00:00
|
|
|
`,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "terminal_grayscale",
|
|
|
|
|
themeID: d2themescatalog.TerminalGrayscale.ID,
|
|
|
|
|
script: `
|
|
|
|
|
network: {
|
|
|
|
|
cell tower: {
|
2023-03-31 08:58:02 +00:00
|
|
|
style.text-transform: capitalize
|
2023-03-16 05:53:12 +00:00
|
|
|
satellites: {
|
|
|
|
|
shape: stored_data
|
|
|
|
|
style.multiple: true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
transmitter
|
|
|
|
|
|
2023-03-31 08:58:02 +00:00
|
|
|
satellites -> transmitter: SEnD {
|
|
|
|
|
style.text-transform: lowercase
|
|
|
|
|
}
|
2023-03-16 05:53:12 +00:00
|
|
|
satellites -> transmitter: send
|
|
|
|
|
satellites -> transmitter: send
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
online portal: {
|
|
|
|
|
ui: { shape: hexagon }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
data processor: {
|
|
|
|
|
storage: {
|
|
|
|
|
shape: cylinder
|
|
|
|
|
style.multiple: true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-31 08:58:02 +00:00
|
|
|
cell tower.transmitter -> data processor.storage: phone logs {
|
|
|
|
|
style.text-transform: none
|
|
|
|
|
}
|
2023-03-16 05:53:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
user: {
|
|
|
|
|
shape: person
|
|
|
|
|
width: 130
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
user -> network.cell tower: make call
|
|
|
|
|
user -> network.online portal.ui: access {
|
|
|
|
|
style.stroke-dash: 3
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
api server -> network.online portal.ui: display
|
|
|
|
|
api server -> logs: persist
|
|
|
|
|
logs: { shape: page; style.multiple: true }
|
|
|
|
|
|
2023-03-30 02:59:41 +00:00
|
|
|
network.data processor -> api server
|
|
|
|
|
`,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "origami",
|
|
|
|
|
themeID: d2themescatalog.Origami.ID,
|
|
|
|
|
script: `
|
|
|
|
|
network: 通信網 {
|
|
|
|
|
cell tower: {
|
2023-03-31 08:58:02 +00:00
|
|
|
style.text-transform: capitalize
|
2023-03-30 02:59:41 +00:00
|
|
|
satellites: 衛星 {
|
|
|
|
|
shape: stored_data
|
|
|
|
|
style.multiple: true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
transmitter: 送信機
|
|
|
|
|
|
2023-03-31 08:58:02 +00:00
|
|
|
satellites -> transmitter: SEnD {
|
|
|
|
|
style.text-transform: lowercase
|
|
|
|
|
}
|
|
|
|
|
satellites -> transmitter: send {
|
|
|
|
|
style.text-transform: uppercase
|
|
|
|
|
}
|
2023-03-30 02:59:41 +00:00
|
|
|
satellites -> transmitter: send
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
online portal: オンラインポータル {
|
|
|
|
|
ui: { shape: hexagon }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
data processor: データプロセッサ {
|
|
|
|
|
storage: 保管所 {
|
|
|
|
|
shape: cylinder
|
|
|
|
|
style.multiple: true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-31 08:58:02 +00:00
|
|
|
cell tower.transmitter -> data processor.storage: 電話ログ {
|
|
|
|
|
style.text-transform: lowercase
|
|
|
|
|
}
|
2023-03-30 02:59:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
user: ユーザー {
|
|
|
|
|
shape: person
|
|
|
|
|
width: 130
|
2023-03-31 08:58:02 +00:00
|
|
|
style.text-transform: capitalize
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
other-user: {
|
|
|
|
|
shape: person
|
|
|
|
|
style.text-transform: uppercase
|
2023-03-30 02:59:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
user -> network.cell tower: 電話をかける
|
|
|
|
|
user -> network.online portal.ui: アクセス {
|
|
|
|
|
style.stroke-dash: 3
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-31 08:58:02 +00:00
|
|
|
api server: API サーバー {
|
|
|
|
|
style.text-transform: lowercase
|
|
|
|
|
}
|
2023-03-30 02:59:41 +00:00
|
|
|
api server -> network.online portal.ui: 画面
|
|
|
|
|
api server -> logs: 持続する
|
|
|
|
|
logs: ログ { shape: page; style.multiple: true }
|
|
|
|
|
|
2023-03-14 17:40:52 +00:00
|
|
|
network.data processor -> api server
|
|
|
|
|
`,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
runa(t, tcs)
|
|
|
|
|
}
|