diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/debugging-workshop.iml b/.idea/debugging-workshop.iml new file mode 100644 index 0000000..5e764c4 --- /dev/null +++ b/.idea/debugging-workshop.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..7d32b4a --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..9736b4c --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/ibnufirdaus/debugging-workshop + +go 1.15 diff --git a/main.go b/main.go index b37c814..7d3122a 100644 --- a/main.go +++ b/main.go @@ -29,8 +29,8 @@ func main() { } func sender(c chan signalData) { + var signalData signalData // init once for { - var signalData signalData signalData.signal = generateSignal() c <- signalData } @@ -95,6 +95,8 @@ func evaluateSignal(signal []int) string { func evaluateNode(node1, node2 int) int { switch { + case node2 == 1: // if latest is 1, return 1 + return 1 case node2 > node1: return 1 case node2 < node1: diff --git a/main_test.go b/main_test.go index 95db6fe..a919366 100644 --- a/main_test.go +++ b/main_test.go @@ -54,6 +54,20 @@ func Test_evaluateSignal(t *testing.T) { }, want: "good", }, + { + name: "good signal 2", + args: args{ + signal: []int{0, 1, 1, 0, 1, 1}, + }, + want: "good", + }, + { + name: "bad signal", + args: args{ + signal: []int{1, 1, 1, 0, 0, 0}, + }, + want: "bad", + }, { name: "bad signal", args: args{