|
|
|
package medianofarrays_test
|
|
|
|
|
|
|
|
import (
|
|
|
|
"math"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"git.jxs.me/leetgo/medianofarrays"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestEmpty(t *testing.T) {
|
|
|
|
actual := medianofarrays.FindMedianSortedArrays([]int{}, []int{})
|
|
|
|
require.InDelta(t, math.NaN(), actual, 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestRightEmpty(t *testing.T) {
|
|
|
|
actual := medianofarrays.FindMedianSortedArrays([]int{1, 2, 3}, []int{})
|
|
|
|
require.Equal(t, 2.0, actual)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestLeftEmpty(t *testing.T) {
|
|
|
|
actual := medianofarrays.FindMedianSortedArrays([]int{4, 5, 6}, []int{})
|
|
|
|
require.Equal(t, 5.0, actual)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestEven(t *testing.T) {
|
|
|
|
actual := medianofarrays.FindMedianSortedArrays([]int{1, 3, 5}, []int{7, 11, 13})
|
|
|
|
require.Equal(t, 6.0, actual)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestOverlap(t *testing.T) {
|
|
|
|
actual := medianofarrays.FindMedianSortedArrays([]int{1, 7, 23}, []int{1, 7, 11, 17})
|
|
|
|
require.Equal(t, 7.0, actual)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestExample1(t *testing.T) {
|
|
|
|
actual := medianofarrays.FindMedianSortedArrays([]int{1, 2}, []int{3, 4})
|
|
|
|
require.Equal(t, 2.5, actual)
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
goos: darwin
|
|
|
|
goarch: arm64
|
|
|
|
pkg: git.jxs.me/leetgo/medianofarrays
|
|
|
|
BenchmarkReal-8 95113045 63.64 ns/op
|
|
|
|
BenchmarkLazy-8 18085866 324.3 ns/op
|
|
|
|
*/
|
|
|
|
|
|
|
|
func BenchmarkReal(b *testing.B) {
|
|
|
|
left, right := []int{1, 7, 23, 29, 83, 107, 8000, 9000}, []int{2, 4, 6, 7, 9, 73, 84, 106, 108, 109, 8000, 8521, 9000}
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
|
|
medianofarrays.FindMedianSortedArrays(left, right)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func BenchmarkLazy(b *testing.B) {
|
|
|
|
left, right := []int{1, 7, 23, 29, 83, 107, 8000, 9000}, []int{2, 4, 6, 7, 9, 73, 84, 106, 108, 109, 8000, 8521, 9000}
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
|
|
medianofarrays.Lazy(left, right)
|
|
|
|
}
|
|
|
|
}
|