lnwire/channel_update: add String method for ChanUpdate[Chan|Msg]Flags
In this commit, we fix the problem where it's annoying to parse a bitfield printed out in decimal by writing a String method for the ChanUpdate[Chan|Msg]Flags bitfield. Co-authored-by: Johan T. Halseth <johanth@gmail.com>
This commit is contained in:
parent
0fd6004958
commit
f0ba4b454c
@ -2,6 +2,7 @@ package lnwire
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
|
||||||
@ -12,6 +13,11 @@ import (
|
|||||||
// present in the ChannelUpdate.
|
// present in the ChannelUpdate.
|
||||||
type ChanUpdateMsgFlags uint8
|
type ChanUpdateMsgFlags uint8
|
||||||
|
|
||||||
|
// String returns the bitfield flags as a string.
|
||||||
|
func (c ChanUpdateMsgFlags) String() string {
|
||||||
|
return fmt.Sprintf("%08b", c)
|
||||||
|
}
|
||||||
|
|
||||||
// ChanUpdateChanFlags is a bitfield that signals various options concerning a
|
// ChanUpdateChanFlags is a bitfield that signals various options concerning a
|
||||||
// particular channel edge. Each bit is to be examined in order to determine
|
// particular channel edge. Each bit is to be examined in order to determine
|
||||||
// how the ChannelUpdate message is to be interpreted.
|
// how the ChannelUpdate message is to be interpreted.
|
||||||
@ -29,6 +35,11 @@ const (
|
|||||||
ChanUpdateDisabled
|
ChanUpdateDisabled
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// String returns the bitfield flags as a string.
|
||||||
|
func (c ChanUpdateChanFlags) String() string {
|
||||||
|
return fmt.Sprintf("%08b", c)
|
||||||
|
}
|
||||||
|
|
||||||
// ChannelUpdate message is used after channel has been initially announced.
|
// ChannelUpdate message is used after channel has been initially announced.
|
||||||
// Each side independently announces its fees and minimum expiry for HTLCs and
|
// Each side independently announces its fees and minimum expiry for HTLCs and
|
||||||
// other parameters. Also this message is used to redeclare initially set
|
// other parameters. Also this message is used to redeclare initially set
|
||||||
|
@ -178,6 +178,50 @@ func randAddrs(r *rand.Rand) ([]net.Addr, error) {
|
|||||||
return []net.Addr{tcp4Addr, tcp6Addr, v2OnionAddr, v3OnionAddr}, nil
|
return []net.Addr{tcp4Addr, tcp6Addr, v2OnionAddr, v3OnionAddr}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestChanUpdateChanFlags ensures that converting the ChanUpdateChanFlags and
|
||||||
|
// ChanUpdateMsgFlags bitfields to a string behaves as expected.
|
||||||
|
func TestChanUpdateChanFlags(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
testCases := []struct {
|
||||||
|
flags uint8
|
||||||
|
expected string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
flags: 0,
|
||||||
|
expected: "00000000",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
flags: 1,
|
||||||
|
expected: "00000001",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
flags: 3,
|
||||||
|
expected: "00000011",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
flags: 255,
|
||||||
|
expected: "11111111",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range testCases {
|
||||||
|
chanFlag := ChanUpdateChanFlags(test.flags)
|
||||||
|
toStr := chanFlag.String()
|
||||||
|
if toStr != test.expected {
|
||||||
|
t.Fatalf("expected %v, got %v",
|
||||||
|
test.expected, toStr)
|
||||||
|
}
|
||||||
|
|
||||||
|
msgFlag := ChanUpdateMsgFlags(test.flags)
|
||||||
|
toStr = msgFlag.String()
|
||||||
|
if toStr != test.expected {
|
||||||
|
t.Fatalf("expected %v, got %v",
|
||||||
|
test.expected, toStr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestMaxOutPointIndex(t *testing.T) {
|
func TestMaxOutPointIndex(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user