1package funk
2
3import (
4	"github.com/stretchr/testify/assert"
5	"testing"
6)
7
8func TestFillMismatchedTypes(t *testing.T) {
9	_, err := Fill([]string{"a", "b"}, 1)
10	assert.EqualError(t, err, "Cannot fill '[]string' with 'int'")
11}
12
13func TestFillUnfillableTypes(t *testing.T) {
14	var stringVariable string
15	var uint32Variable uint32
16	var boolVariable bool
17
18	types := [](interface{}){
19		stringVariable,
20		uint32Variable,
21		boolVariable,
22	}
23
24	for _, unfillable := range types {
25		_, err := Fill(unfillable, 1)
26		assert.EqualError(t, err, "Can only fill slices and arrays")
27	}
28}
29
30func TestFillSlice(t *testing.T) {
31	input := []int{1, 2, 3}
32	result, err := Fill(input, 1)
33	assert.NoError(t, err)
34	assert.Equal(t, []int{1, 1, 1}, result)
35
36	// Assert that input does not change
37	assert.Equal(t, []int{1, 2, 3}, input)
38}
39
40func TestFillArray(t *testing.T) {
41	input := [...]int{1, 2, 3}
42	result, err := Fill(input, 2)
43	assert.NoError(t, err)
44	assert.Equal(t, []int{2, 2, 2}, result)
45
46	// Assert that input does not change
47	assert.Equal(t, [...]int{1, 2, 3}, input)
48}
49