From 45a3d4a0c2d65f52e9adb131f547e3ead224e547 Mon Sep 17 00:00:00 2001 From: Manfred Touron Date: Wed, 17 Jul 2019 16:12:19 +0200 Subject: [PATCH] chore: testing FromPertConfig --- .circleci/config.yml | 2 +- cmd/pertify/go.sum | 6 ++++ examples/go.sum | 8 ++++++ examples/graphviz/main.go | 2 +- go.mod | 5 ++++ go.sum | 10 +++++++ pert_config_test.go | 59 +++++++++++++++++++++++++++++++++++++++ 7 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 pert_config_test.go diff --git a/.circleci/config.yml b/.circleci/config.yml index cc83967..ac99caf 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,4 +9,4 @@ jobs: steps: - checkout - run: go mod download - - run: go test -v ./... + - run: make test diff --git a/cmd/pertify/go.sum b/cmd/pertify/go.sum index 9ffb39a..8b538fe 100644 --- a/cmd/pertify/go.sum +++ b/cmd/pertify/go.sum @@ -2,6 +2,12 @@ github.com/awalterschulze/gographviz v0.0.0-20190522210029-fa59802746ab h1:+cdNq github.com/awalterschulze/gographviz v0.0.0-20190522210029-fa59802746ab/go.mod h1:GEV5wmg4YquNw7v1kkyoX9etIk8yVmXj+AkDHuuETHs= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20190710153321-831012c29e42/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/urfave/cli.v2 v2.0.0-20180128182452-d3ae77c26ac8 h1:Ggy3mWN4l3PUFPfSG0YB3n5fVYggzysUmiUQ89SnX6Y= diff --git a/examples/go.sum b/examples/go.sum index eb15c99..0827340 100644 --- a/examples/go.sum +++ b/examples/go.sum @@ -1,2 +1,10 @@ github.com/awalterschulze/gographviz v0.0.0-20190522210029-fa59802746ab h1:+cdNqtOJWjvepyhxy23G7z7vmpYCoC65AP0nqi1f53s= github.com/awalterschulze/gographviz v0.0.0-20190522210029-fa59802746ab/go.mod h1:GEV5wmg4YquNw7v1kkyoX9etIk8yVmXj+AkDHuuETHs= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20190710153321-831012c29e42/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/examples/graphviz/main.go b/examples/graphviz/main.go index dd70944..ca77d92 100644 --- a/examples/graphviz/main.go +++ b/examples/graphviz/main.go @@ -53,7 +53,7 @@ func main() { path.FirstVertex().SetColor("blue") path.LastVertex().SetColor("blue") - s, err := viz.ToGraphviz(graph) + s, err := viz.ToGraphviz(graph, nil) if err != nil { panic(err) } diff --git a/go.mod b/go.mod index 61785c0..754290b 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,8 @@ module moul.io/graphman go 1.12 + +require ( + golang.org/x/tools v0.0.0-20190710153321-831012c29e42 // indirect + gopkg.in/yaml.v2 v2.2.2 +) diff --git a/go.sum b/go.sum index e69de29..cb74a17 100644 --- a/go.sum +++ b/go.sum @@ -0,0 +1,10 @@ +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20190710153321-831012c29e42 h1:4IOeC7p+OItq3+O5BWkcmVu2uBe3jekXau5S4QZX9DU= +golang.org/x/tools v0.0.0-20190710153321-831012c29e42/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/pert_config_test.go b/pert_config_test.go new file mode 100644 index 0000000..46017b0 --- /dev/null +++ b/pert_config_test.go @@ -0,0 +1,59 @@ +package graphman + +import ( + "fmt" + + "gopkg.in/yaml.v2" +) + +func ExampleFromPertConfig() { + yamlConfig := ` +actions: + - id: "1" + title: "Prepare foundation" + estimate: [4, 6, 10] + - id: "2" + title: "Make & position door frames" + estimate: [2, 4, 7] + - id: "3" + title: "Lay drains & floor base" + estimate: [7, 9, 12] + - id: "4" + title: "Install service & settings" + estimate: [2, 4, 5] + depends_on: ["5"] + - id: "5" + title: "Erect walls" + estimate: [7, 10, 15] + depends_on: ["1", "2"] + - id: "6" + title: "Plaster ceilings" + estimate: [1, 2, 4] + depends_on: ["4", "7"] + - id: "7" + title: "Erect roof" + estimate: [4, 6, 8] + depends_on: ["5"] + - id: "8" + title: "Install door & windows" + estimate: [7, 9, 11] + depends_on: ["7"] + - id: "9" + title: "Fit gutters & pipes" + estimate: [1, 2, 3] + depends_on: ["3", "6"] + - id: "10" + title: "Paint outside" + estimate: [1, 2, 3] + depends_on: ["8", "9"] +` + var config PertConfig + if err := yaml.Unmarshal([]byte(yamlConfig), &config); err != nil { + panic(err) + } + + graph := FromPertConfig(config) + fmt.Println(graph) + // Output: + // {(Start,post_1)[[pert:To=4,Tm=6,Tp=10,Te=6.33,σe=1,Ve=1,title:Prepare foundation]],(Start,post_2)[[pert:To=2,Tm=4,Tp=7,Te=4.17,σe=0.83,Ve=0.69,title:Make & position door frames]],(Start,post_3)[[pert:To=7,Tm=9,Tp=12,Te=9.17,σe=0.83,Ve=0.69,title:Lay drains & floor base]],(post_5,post_4)[[pert:To=2,Tm=4,Tp=5,Te=3.83,σe=0.5,Ve=0.25,title:Install service & settings]],(pre_5,post_5)[[pert:To=7,Tm=10,Tp=15,Te=10.33,σe=1.33,Ve=1.78,title:Erect walls]],(post_1,pre_5)[[pert:]],(post_2,pre_5)[[pert:]],(pre_6,post_6)[[pert:To=1,Tm=2,Tp=4,Te=2.17,σe=0.5,Ve=0.25,title:Plaster ceilings]],(post_4,pre_6)[[pert:]],(post_7,pre_6)[[pert:]],(post_5,post_7)[[pert:To=4,Tm=6,Tp=8,Te=6,σe=0.67,Ve=0.44,title:Erect roof]],(post_7,post_8)[[pert:To=7,Tm=9,Tp=11,Te=9,σe=0.67,Ve=0.44,title:Install door & windows]],(pre_9,post_9)[[pert:To=1,Tm=2,Tp=3,Te=2,σe=0.33,Ve=0.11,title:Fit gutters & pipes]],(post_3,pre_9)[[pert:]],(post_6,pre_9)[[pert:]],(pre_10,post_10)[[pert:To=1,Tm=2,Tp=3,Te=2,σe=0.33,Ve=0.11,title:Paint outside]],(post_8,pre_10)[[pert:]],(post_9,pre_10)[[pert:]],(post_10,Finish)[[pert:]]} +}