mirror of
https://github.com/blindlobstar/go-interview-problems
synced 2025-04-19 16:25:15 +00:00
added tests
This commit is contained in:
parent
aa0abbe17c
commit
285848d099
@ -1,8 +1,6 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"golang.org/x/tour/tree"
|
||||
)
|
||||
|
||||
@ -39,7 +37,3 @@ func Same(t1, t2 *tree.Tree) bool {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
fmt.Println(Same(tree.New(1), tree.New(2)))
|
||||
}
|
||||
|
@ -12,7 +12,5 @@ func Walk(t *tree.Tree, ch chan int) {
|
||||
// Same determines whether the trees
|
||||
// t1 and t2 contain the same values.
|
||||
func Same(t1, t2 *tree.Tree) bool {
|
||||
}
|
||||
|
||||
func main() {
|
||||
return false
|
||||
}
|
||||
|
131
02-equivalent-binary-trees/task_test.go
Normal file
131
02-equivalent-binary-trees/task_test.go
Normal file
@ -0,0 +1,131 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"sort"
|
||||
"testing"
|
||||
|
||||
"golang.org/x/tour/tree"
|
||||
)
|
||||
|
||||
func TestWalk(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
tree *tree.Tree
|
||||
expected []int
|
||||
}{
|
||||
{
|
||||
name: "walk tree 1",
|
||||
tree: tree.New(1),
|
||||
expected: []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
|
||||
},
|
||||
{
|
||||
name: "walk tree 2",
|
||||
tree: tree.New(2),
|
||||
expected: []int{2, 4, 6, 8, 10, 12, 14, 16, 18, 20},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
ch := make(chan int)
|
||||
|
||||
var result []int
|
||||
done := make(chan bool)
|
||||
go func() {
|
||||
for v := range ch {
|
||||
result = append(result, v)
|
||||
}
|
||||
done <- true
|
||||
}()
|
||||
|
||||
Walk(tt.tree, ch)
|
||||
|
||||
<-done
|
||||
|
||||
sort.Ints(result)
|
||||
sort.Ints(tt.expected)
|
||||
|
||||
if !reflect.DeepEqual(result, tt.expected) {
|
||||
t.Errorf("Walk() got = %v, want %v", result, tt.expected)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestWalkEmpty(t *testing.T) {
|
||||
ch := make(chan int)
|
||||
|
||||
var result []int
|
||||
done := make(chan bool)
|
||||
go func() {
|
||||
for v := range ch {
|
||||
result = append(result, v)
|
||||
}
|
||||
done <- true
|
||||
}()
|
||||
|
||||
Walk(nil, ch)
|
||||
|
||||
<-done
|
||||
|
||||
if len(result) != 0 {
|
||||
t.Errorf("Walk() with nil tree got %v values, want empty", len(result))
|
||||
}
|
||||
}
|
||||
|
||||
func TestSame(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
t1 *tree.Tree
|
||||
t2 *tree.Tree
|
||||
want bool
|
||||
}{
|
||||
{
|
||||
name: "identical trees",
|
||||
t1: tree.New(1),
|
||||
t2: tree.New(1),
|
||||
want: true,
|
||||
},
|
||||
{
|
||||
name: "different trees",
|
||||
t1: tree.New(1),
|
||||
t2: tree.New(2),
|
||||
want: false,
|
||||
},
|
||||
{
|
||||
name: "nil first tree",
|
||||
t1: nil,
|
||||
t2: tree.New(1),
|
||||
want: false,
|
||||
},
|
||||
{
|
||||
name: "nil second tree",
|
||||
t1: tree.New(1),
|
||||
t2: nil,
|
||||
want: false,
|
||||
},
|
||||
{
|
||||
name: "both nil trees",
|
||||
t1: nil,
|
||||
t2: nil,
|
||||
want: true,
|
||||
},
|
||||
{
|
||||
name: "same values different structure",
|
||||
|
||||
t1: tree.New(1),
|
||||
t2: tree.New(1),
|
||||
want: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := Same(tt.t1, tt.t2)
|
||||
if got != tt.want {
|
||||
t.Errorf("Same() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user