160 lines
2.8 KiB
Go
160 lines
2.8 KiB
Go
package geektime
|
|
|
|
import (
|
|
"github.com/stretchr/testify/assert"
|
|
"math/rand"
|
|
"testing"
|
|
)
|
|
|
|
var sortArr100, sortArr1000 []int
|
|
|
|
func TestMain(m *testing.M) {
|
|
sortArr100 = randIntSlice(100)
|
|
sortArr1000 = randIntSlice(1000)
|
|
m.Run()
|
|
}
|
|
|
|
func Test_bubble(t *testing.T) {
|
|
arr := []int{5, 3, 4, 1, 2}
|
|
ret := bubble_1(arr)
|
|
assert.Equal(t, []int{1, 2, 3, 4, 5}, ret)
|
|
ret = bubble_2(arr)
|
|
assert.Equal(t, []int{1, 2, 3, 4, 5}, ret)
|
|
arr = randIntSlice(10)
|
|
ret = bubble_1(arr)
|
|
ret2 := bubble_2(arr)
|
|
assert.Equal(t, ret2, ret)
|
|
}
|
|
|
|
func randIntSlice(n int) []int {
|
|
ret := make([]int, n)
|
|
for i := 0; i < n; i++ {
|
|
ret[i] = rand.Int()
|
|
}
|
|
return ret
|
|
}
|
|
|
|
func BenchmarkBubble1100(b *testing.B) {
|
|
arr := sortArr100
|
|
for i := 0; i < b.N; i++ {
|
|
bubble_1(arr)
|
|
}
|
|
}
|
|
|
|
func BenchmarkBubble11000(b *testing.B) {
|
|
arr := sortArr1000
|
|
for i := 0; i < b.N; i++ {
|
|
bubble_1(arr)
|
|
}
|
|
}
|
|
|
|
func BenchmarkBubble2100(b *testing.B) {
|
|
arr := sortArr100
|
|
for i := 0; i < b.N; i++ {
|
|
bubble_2(arr)
|
|
}
|
|
}
|
|
|
|
func BenchmarkBubble21000(b *testing.B) {
|
|
arr := sortArr1000
|
|
for i := 0; i < b.N; i++ {
|
|
bubble_2(arr)
|
|
}
|
|
}
|
|
|
|
func Test_insert(t *testing.T) {
|
|
arr := []int{5, 3, 4, 1, 2}
|
|
ret := insert(arr)
|
|
assert.Equal(t, []int{1, 2, 3, 4, 5}, ret)
|
|
arr = randIntSlice(10)
|
|
ret = bubble_1(arr)
|
|
ret2 := insert(arr)
|
|
assert.Equal(t, ret, ret2)
|
|
}
|
|
|
|
func BenchmarkInsert100(b *testing.B) {
|
|
arr := sortArr100
|
|
for i := 0; i < b.N; i++ {
|
|
insert(arr)
|
|
}
|
|
}
|
|
|
|
func BenchmarkInsert1000(b *testing.B) {
|
|
arr := sortArr1000
|
|
for i := 0; i < b.N; i++ {
|
|
insert(arr)
|
|
}
|
|
}
|
|
|
|
func Test_selection(t *testing.T) {
|
|
arr := []int{5, 3, 4, 1, 2}
|
|
ret := selection(arr)
|
|
assert.Equal(t, []int{1, 2, 3, 4, 5}, ret)
|
|
arr = randIntSlice(10)
|
|
ret = bubble_1(arr)
|
|
ret2 := selection(arr)
|
|
assert.Equal(t, ret, ret2)
|
|
}
|
|
|
|
func BenchmarkSelect100(b *testing.B) {
|
|
arr := sortArr100
|
|
for i := 0; i < b.N; i++ {
|
|
selection(arr)
|
|
}
|
|
}
|
|
|
|
func BenchmarkSelect1000(b *testing.B) {
|
|
arr := sortArr1000
|
|
for i := 0; i < b.N; i++ {
|
|
selection(arr)
|
|
}
|
|
}
|
|
|
|
func Test_merge_sort(t *testing.T) {
|
|
arr := []int{5, 3, 4, 1, 2, 6}
|
|
ret := merge_sort(arr)
|
|
assert.Equal(t, []int{1, 2, 3, 4, 5, 6}, ret)
|
|
arr = randIntSlice(10)
|
|
ret = bubble_1(arr)
|
|
ret2 := merge_sort(arr)
|
|
assert.Equal(t, ret, ret2)
|
|
}
|
|
|
|
func BenchmarkMerge100(b *testing.B) {
|
|
arr := sortArr100
|
|
for i := 0; i < b.N; i++ {
|
|
merge_sort(arr)
|
|
}
|
|
}
|
|
|
|
func BenchmarkMerge1000(b *testing.B) {
|
|
arr := sortArr1000
|
|
for i := 0; i < b.N; i++ {
|
|
merge_sort(arr)
|
|
}
|
|
}
|
|
|
|
func Test_qsort(t *testing.T) {
|
|
arr := []int{5, 3, 4, 1, 2, 6}
|
|
ret := qsort(arr)
|
|
assert.Equal(t, []int{1, 2, 3, 4, 5, 6}, ret)
|
|
arr = randIntSlice(10)
|
|
ret = bubble_1(arr)
|
|
ret2 := qsort(arr)
|
|
assert.Equal(t, ret, ret2)
|
|
}
|
|
|
|
func BenchmarkQuickSort100(b *testing.B) {
|
|
arr := sortArr100
|
|
for i := 0; i < b.N; i++ {
|
|
qsort(arr)
|
|
}
|
|
}
|
|
|
|
func BenchmarkQuickSort1000(b *testing.B) {
|
|
arr := sortArr1000
|
|
for i := 0; i < b.N; i++ {
|
|
qsort(arr)
|
|
}
|
|
}
|