package utils

import (
	"fmt"
	"reflect"
	"testing"
)

func TestPagination(t *testing.T) {

	cases := []struct {
		Slice    []int
		Offset   int
		Limit    int
		Expected []int
	}{
		{
			Slice:    []int{1, 2, 3, 4, 5},
			Offset:   1,
			Limit:    4,
			Expected: []int{2, 3, 4, 5},
		},
	}
	for _, tc := range cases {
		t.Run(
			fmt.Sprintf("%v %d %d %v", tc.Slice, tc.Offset, tc.Limit, tc.Expected),
			func(t *testing.T) {
				got := Paginate(tc.Slice, tc.Offset, tc.Limit)

				if !reflect.DeepEqual(got, tc.Expected) {
					t.Errorf("Expected %v, but got %v", tc.Expected, got)
				}

			})
	}

}
