htlcswitch/hodl_mask_test: tests HodlMask active flags
This commit is contained in:
parent
8f786bb860
commit
137ec37450
110
htlcswitch/hodl/mask_test.go
Normal file
110
htlcswitch/hodl/mask_test.go
Normal file
@ -0,0 +1,110 @@
|
||||
package hodl_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/lightningnetwork/lnd/htlcswitch/hodl"
|
||||
)
|
||||
|
||||
var hodlMaskTests = []struct {
|
||||
mask hodl.Mask
|
||||
flags map[hodl.Flag]struct{}
|
||||
}{
|
||||
{
|
||||
// Check that the empty mask has no active flags.
|
||||
mask: hodl.MaskNone,
|
||||
flags: map[hodl.Flag]struct{}{},
|
||||
},
|
||||
{
|
||||
// Check that passing no arguments to MaskFromFlags is
|
||||
// equivalent to MaskNone.
|
||||
mask: hodl.MaskFromFlags(),
|
||||
flags: map[hodl.Flag]struct{}{},
|
||||
},
|
||||
|
||||
{
|
||||
// Check using Mask to convert a single flag into a Mask only
|
||||
// reports that flag active.
|
||||
mask: hodl.ExitSettle.Mask(),
|
||||
flags: map[hodl.Flag]struct{}{
|
||||
hodl.ExitSettle: {},
|
||||
},
|
||||
},
|
||||
{
|
||||
// Check that using MaskFromFlags on a single flag only reports
|
||||
// that flag active.
|
||||
mask: hodl.MaskFromFlags(hodl.Commit),
|
||||
flags: map[hodl.Flag]struct{}{
|
||||
hodl.Commit: {},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
// Check that using MaskFromFlags on some-but-not-all flags
|
||||
// reports the correct subset of flags as active.
|
||||
mask: hodl.MaskFromFlags(
|
||||
hodl.ExitSettle,
|
||||
hodl.Commit,
|
||||
hodl.AddIncoming,
|
||||
hodl.SettleOutgoing,
|
||||
),
|
||||
flags: map[hodl.Flag]struct{}{
|
||||
hodl.ExitSettle: {},
|
||||
hodl.Commit: {},
|
||||
hodl.AddIncoming: {},
|
||||
hodl.SettleOutgoing: {},
|
||||
},
|
||||
},
|
||||
{
|
||||
// Check that using MaskFromFlags on all known flags reports
|
||||
// those an no other flags.
|
||||
mask: hodl.MaskFromFlags(
|
||||
hodl.ExitSettle,
|
||||
hodl.AddIncoming,
|
||||
hodl.SettleIncoming,
|
||||
hodl.FailIncoming,
|
||||
hodl.AddOutgoing,
|
||||
hodl.SettleOutgoing,
|
||||
hodl.FailOutgoing,
|
||||
hodl.Commit,
|
||||
),
|
||||
flags: map[hodl.Flag]struct{}{
|
||||
hodl.ExitSettle: {},
|
||||
hodl.AddIncoming: {},
|
||||
hodl.SettleIncoming: {},
|
||||
hodl.FailIncoming: {},
|
||||
hodl.AddOutgoing: {},
|
||||
hodl.SettleOutgoing: {},
|
||||
hodl.FailOutgoing: {},
|
||||
hodl.Commit: {},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
// TestMask iterates through all of the hodlMaskTests, checking that the mask
|
||||
// correctly reports active for flags in the tests' expected flags, and inactive
|
||||
// for all others.
|
||||
func TestMask(t *testing.T) {
|
||||
if !hodl.DebugBuild {
|
||||
t.Fatalf("htlcswitch tests must be run with '-tags debug'")
|
||||
}
|
||||
|
||||
for i, test := range hodlMaskTests {
|
||||
for j := uint32(0); i < 32; i++ {
|
||||
flag := hodl.Flag(1 << j)
|
||||
_, shouldBeActive := test.flags[flag]
|
||||
|
||||
switch {
|
||||
case shouldBeActive && !test.mask.Active(flag):
|
||||
t.Fatalf("hodl mask test #%d -- "+
|
||||
"expected flag %s to be active",
|
||||
i, flag)
|
||||
|
||||
case !shouldBeActive && test.mask.Active(flag):
|
||||
t.Fatalf("hodl mask test #%d -- "+
|
||||
"expected flag %s to be inactive",
|
||||
i, flag)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user