lnd/contractcourt/taproot_briefcase_test.go
yyforyongyu a252cb4528
contractcourt: fix test flake in TestTaprootBriefcase
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>,
```
2023-09-05 07:44:02 +08:00

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)
}