github.com/consensys/gnark@v0.11.0/backend/groth16/bn254/utils_test.go (about) 1 package groth16 2 3 import ( 4 "testing" 5 6 "github.com/consensys/gnark-crypto/ecc/bn254/fr" 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func assertSliceEquals[T any](t *testing.T, expected []T, seen []T) { 11 assert.Equal(t, len(expected), len(seen)) 12 for i := range expected { 13 assert.Equal(t, expected[i], seen[i]) 14 } 15 } 16 17 func TestFilterHeap(t *testing.T) { 18 elems := []fr.Element{{0}, {1}, {2}, {3}} 19 20 r := filterHeap(elems, 0, []int{1, 2}) 21 expected := []fr.Element{{0}, {3}} 22 assertSliceEquals(t, expected, r) 23 24 r = filterHeap(elems[1:], 1, []int{1, 2}) 25 expected = []fr.Element{{3}} 26 assertSliceEquals(t, expected, r) 27 } 28 29 func TestFilterRepeated(t *testing.T) { 30 elems := []fr.Element{{0}, {1}, {2}, {3}} 31 r := filterHeap(elems, 0, []int{1, 1, 2}) 32 expected := []fr.Element{{0}, {3}} 33 assertSliceEquals(t, expected, r) 34 35 r = filterHeap(elems[1:], 1, []int{1, 1, 2}) 36 expected = []fr.Element{{3}} 37 assertSliceEquals(t, expected, r) 38 }