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  }