mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 09:53:54 +01:00
a252cb4528
When the numTweaks is zero, we should return a nil instead of initializing an empty map as we'd get the following error, ``` Diff: --- Expected +++ Actual @@ -11007,4 +11007,3 @@ }, - BreachedHtlcTweaks: (contractcourt.htlcTapTweaks) { - }, + BreachedHtlcTweaks: (contractcourt.htlcTapTweaks) <nil>, ```
95 lines
2.0 KiB
Go
95 lines
2.0 KiB
Go
package contractcourt
|
|
|
|
import (
|
|
"bytes"
|
|
"math/rand"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func randResolverCtrlBlocks(t *testing.T) resolverCtrlBlocks {
|
|
numBlocks := rand.Int() % 256
|
|
blocks := make(resolverCtrlBlocks, numBlocks)
|
|
|
|
for i := 0; i < numBlocks; i++ {
|
|
var id resolverID
|
|
_, err := rand.Read(id[:])
|
|
require.NoError(t, err)
|
|
|
|
var block [200]byte
|
|
_, err = rand.Read(block[:])
|
|
require.NoError(t, err)
|
|
|
|
blocks[id] = block[:]
|
|
}
|
|
|
|
return blocks
|
|
}
|
|
|
|
func randHtlcTweaks(t *testing.T) htlcTapTweaks {
|
|
numTweaks := rand.Int() % 256
|
|
|
|
// If the numTweaks happens to be zero, we return a nil to avoid
|
|
// initializing the map.
|
|
if numTweaks == 0 {
|
|
return nil
|
|
}
|
|
|
|
tweaks := make(htlcTapTweaks, numTweaks)
|
|
for i := 0; i < numTweaks; i++ {
|
|
var id resolverID
|
|
_, err := rand.Read(id[:])
|
|
require.NoError(t, err)
|
|
|
|
var tweak [32]byte
|
|
_, err = rand.Read(tweak[:])
|
|
require.NoError(t, err)
|
|
|
|
tweaks[id] = tweak
|
|
}
|
|
|
|
return tweaks
|
|
}
|
|
|
|
// TestTaprootBriefcase tests the encode/decode methods of the taproot
|
|
// briefcase extension.
|
|
func TestTaprootBriefcase(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
var sweepCtrlBlock [200]byte
|
|
_, err := rand.Read(sweepCtrlBlock[:])
|
|
require.NoError(t, err)
|
|
|
|
var revokeCtrlBlock [200]byte
|
|
_, err = rand.Read(revokeCtrlBlock[:])
|
|
require.NoError(t, err)
|
|
|
|
var anchorTweak [32]byte
|
|
_, err = rand.Read(anchorTweak[:])
|
|
require.NoError(t, err)
|
|
|
|
testCase := &taprootBriefcase{
|
|
CtrlBlocks: &ctrlBlocks{
|
|
CommitSweepCtrlBlock: sweepCtrlBlock[:],
|
|
RevokeSweepCtrlBlock: revokeCtrlBlock[:],
|
|
OutgoingHtlcCtrlBlocks: randResolverCtrlBlocks(t),
|
|
IncomingHtlcCtrlBlocks: randResolverCtrlBlocks(t),
|
|
SecondLevelCtrlBlocks: randResolverCtrlBlocks(t),
|
|
},
|
|
TapTweaks: &tapTweaks{
|
|
AnchorTweak: anchorTweak[:],
|
|
BreachedHtlcTweaks: randHtlcTweaks(t),
|
|
BreachedSecondLevelHltcTweaks: randHtlcTweaks(t),
|
|
},
|
|
}
|
|
|
|
var b bytes.Buffer
|
|
require.NoError(t, testCase.Encode(&b))
|
|
|
|
var decodedCase taprootBriefcase
|
|
require.NoError(t, decodedCase.Decode(&b))
|
|
|
|
require.Equal(t, testCase, &decodedCase)
|
|
}
|