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  }