github.com/dusk-network/dusk-crypto@v0.1.3/rangeproof/bitCommitment_test.go (about)

     1  package rangeproof_test
     2  
     3  import (
     4  	"math/big"
     5  	"testing"
     6  
     7  	"github.com/dusk-network/dusk-crypto/rangeproof"
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestBitCommitToValue(t *testing.T) {
    12  
    13  	expectedValues := []int64{200, 400, 5670, 1234, 4567, 890}
    14  
    15  	for _, expected := range expectedValues {
    16  		value := big.NewInt(expected)
    17  		Commitment := rangeproof.BitCommit(value)
    18  
    19  		val := big.NewInt(0)
    20  
    21  		for i := len(Commitment.AL) - 1; i >= 0; i-- {
    22  			var basePow, e = big.NewInt(2), big.NewInt(int64(i))
    23  			basePow.Exp(basePow, e, nil)
    24  
    25  			base10val := big.NewInt(0)
    26  			base10val.Mul(basePow, Commitment.AL[i].BigInt())
    27  
    28  			val.Add(val, base10val)
    29  		}
    30  		assert.Equal(t, expected, val.Int64())
    31  	}
    32  
    33  }
    34  
    35  func TestEnsure(t *testing.T) {
    36  	expectedValues := []int64{200, 400, 5670, 1234, 4567, 890}
    37  
    38  	for _, expected := range expectedValues {
    39  
    40  		value := big.NewInt(expected)
    41  		Commitment := rangeproof.BitCommit(value)
    42  		err := Commitment.Debug(value)
    43  
    44  		assert.Equal(t, nil, err)
    45  
    46  	}
    47  }