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{