Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,18 @@ func sender(c chan signalData) {
}

func receiver(c chan signalData) {
// handle memory leak cause time.After
idleDuration := time.Second * 1
idleTimeout := time.NewTimer(idleDuration)
defer idleTimeout.Stop()

for {
idleTimeout.Reset(idleDuration)
select {
case signalData := <-c:
signalData.status = validateSignal(signalData.signal)
fmt.Println("Receiving Signal ", signalData.signal, " with status ", signalData.status)
case <-time.After(time.Second * 1):
case <-idleTimeout.C:
fmt.Println("Got timeout while receiving the signal")
return
}
Expand Down Expand Up @@ -97,8 +103,8 @@ func evaluateNode(node1, node2 int) int {
switch {
case node2 > node1:
return 1
case node2 < node1:
return 0
case node1 == 1 && node2 == 1:
return 1
default:
return 0
}
Expand Down
34 changes: 32 additions & 2 deletions main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,27 @@ func Test_validateSignal(t *testing.T) {
},
want: "good",
},
{
name: "good signal 2",
args: args{
signal: []int{0, 0, 1, 0, 0, 1},
},
want: "good",
},
{
name: "bad signal",
args: args{
signal: []int{0, 0, 1, 0, 0, 0},
},
want: "bad",
},
{
name: "bad signal 2",
args: args{
signal: []int{1, 0, 1, 0, 0, 0},
},
want: "bad",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
Expand Down Expand Up @@ -82,17 +96,33 @@ func Test_evaluateNode(t *testing.T) {
want int
}{
{
name: "test1",
name: "bad when first is greater than last",
args: args{
node1: 1,
node2: 0,
},
want: 0,
},
{
name: "test2",
name: "good when first less than last",
args: args{
node1: 0,
node2: 1,
},
want: 1,
},
{
name: "bad when first and last node is 0",
args: args{
node1: 0,
node2: 0,
},
want: 0,
},
{
name: "good when first and last node is 1",
args: args{
node1: 1,
node2: 1,
},
want: 1,
Expand Down