You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
1.6 KiB

package removeelement_test
import (
"sort"
"testing"
"git.jxs.me/leetgo/removeelement"
"github.com/stretchr/testify/require"
)
func TestEmpty(t *testing.T) {
size := removeelement.Remove([]int{}, 0)
require.Equal(t, 0, size)
}
func TestSingle(t *testing.T) {
nums := []int{1, 2, 3}
expected := []int{1, 3}
size := removeelement.Remove(nums, 2)
require.Equal(t, 2, size)
require.Equal(t, expected, nums[:size])
}
func TestExample1(t *testing.T) {
nums := []int{3, 2, 2, 3}
expected := []int{2, 2}
size := removeelement.Remove(nums, 3)
require.Equal(t, 2, size)
require.Equal(t, expected, nums[:size])
}
func TestExample2(t *testing.T) {
nums := []int{0, 1, 2, 2, 3, 0, 4, 2}
expected := []int{0, 0, 1, 3, 4}
size := removeelement.Remove(nums, 2)
require.Equal(t, 5, size)
actual := nums[:size]
sort.Ints(actual)
require.Equal(t, expected, actual)
}
func TestExample3(t *testing.T) {
nums := []int{0, 1, 2, 2, 3, 0, 4, 2}
expected := []int{0, 0, 1, 3, 4}
size := removeelement.Remove(nums, 2)
require.Equal(t, 5, size)
actual := nums[:size]
sort.Ints(actual)
require.Equal(t, expected, actual)
}
func FuzzRemove(f *testing.F) {
f.Add([]byte{}, byte(0))
f.Add([]byte{3, 2, 2, 3}, byte(3))
f.Add([]byte{0, 1, 2, 2, 3, 0, 4, 2}, byte(2))
f.Add([]byte{0, 1, 2, 2, 3, 0, 4, 2}, byte(2))
f.Fuzz(func(t *testing.T, bnums []byte, bval byte) {
val := int(bval)
nums := make([]int, len(bnums))
for i, b := range bnums {
nums[i] = int(b)
}
size := removeelement.Remove(nums, val)
actual := nums[:size]
require.NotContains(t, actual, val)
})
}