package sort

import (
	"reflect"
	"testing"
)

func TestUniq(t *testing.T) {
	type args struct {
		labels []interface{}
	}

	tests := []struct {
		name string
		args args
		want []interface{}
	}{
		{
			name: "test#1",
			args: args{
				labels: append(make([]interface{}, 0), "test-1", 1, "test-2", 2),
			},
			want: append(make([]interface{}, 0), "test-1", 1, "test-2", 2),
		},
		{
			name: "test#2",
			args: args{
				labels: append(make([]interface{}, 0), "test-1", 1, "test-2", 2, "test-2", 2),
			},
			want: append(make([]interface{}, 0), "test-1", 1, "test-2", 2),
		},
		{
			name: "test#3",
			args: args{
				labels: append(make([]interface{}, 0), "test-1", 1, "test-2", 2, "test-2", 3),
			},
			want: append(make([]interface{}, 0), "test-1", 1, "test-2", 3),
		},
		{
			name: "test#4",
			args: args{
				labels: append(make([]interface{}, 0),
					"test-1", 1, "test-1", 2,
					"test-2", 3, "test-2", 2,
					"test-3", 5, "test-3", 3,
					"test-1", 4, "test-1", 1),
			},
			want: append(make([]interface{}, 0), "test-1", 1, "test-2", 2, "test-3", 3),
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			var got []interface{}
			if got = Uniq(tt.args.labels); !reflect.DeepEqual(got, tt.want) {
				t.Errorf("Uniq() = %v, want %v", got, tt.want)
			}
			t.Logf("got-%#v", got)
		})
	}
}