package set

import (
	"math/rand"
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestSorted(t *testing.T) {
	t.Parallel()

	want := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
	in := append(want, want...)
	rand.Shuffle(len(in), func(i, j int) {
		in[i], in[j] = in[j], in[i]
	})
	assert.Equal(t, want, Sorted(in))
}

func TestSortedFiltered(t *testing.T) {
	t.Parallel()

	in := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
	in = append(in, in...)
	rand.Shuffle(len(in), func(i, j int) {
		in[i], in[j] = in[j], in[i]
	})

	want := []int{2, 4, 6, 8, 10}
	assert.Equal(t, want, SortedFiltered(in, func(i int) bool {
		return i%2 == 0
	}))

	assert.Equal(t, []int{}, SortedFiltered([]int{}, func(i int) bool { return true }))
}
