github.com/anchore/syft@v1.38.2/internal/cmptest/set.go (about) 1 package cmptest 2 3 type slicer[T any] interface { 4 ToSlice(sorter ...func(a, b T) int) []T 5 } 6 7 func buildSetComparer[T any, S slicer[T]](l func(x, y T) bool, sorters ...func(a, b T) int) func(x, y S) bool { 8 return func(x, y S) bool { 9 xs := x.ToSlice(sorters...) 10 ys := y.ToSlice(sorters...) 11 12 if len(xs) != len(ys) { 13 return false 14 } 15 for i, xe := range xs { 16 ye := ys[i] 17 if !l(xe, ye) { 18 return false 19 } 20 } 21 22 return true 23 } 24 }