forked from TrueCloudLab/rclone
lib/encoder: add string rendering and parsing for encodings
This commit is contained in:
parent
1ba5e99152
commit
0a5c83ece1
2 changed files with 166 additions and 0 deletions
|
@ -1,12 +1,68 @@
|
|||
package encoder
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/spf13/pflag"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
// Check it satisfies the interfaces
|
||||
var (
|
||||
_ pflag.Value = (*MultiEncoder)(nil)
|
||||
_ fmt.Scanner = (*MultiEncoder)(nil)
|
||||
)
|
||||
|
||||
func TestEncodeString(t *testing.T) {
|
||||
for _, test := range []struct {
|
||||
mask uint
|
||||
want string
|
||||
}{
|
||||
{0, "None"},
|
||||
{EncodeZero, "None"},
|
||||
{EncodeDoubleQuote, "DoubleQuote"},
|
||||
{EncodeDot, "Dot"},
|
||||
{EncodeWin, "LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe"},
|
||||
{EncodeHashPercent, "Hash,Percent"},
|
||||
{EncodeSlash | EncodeDollar | EncodeColon, "Slash,Dollar,Colon"},
|
||||
{EncodeSlash | (1 << 31), "Slash,0x80000000"},
|
||||
} {
|
||||
got := MultiEncoder(test.mask).String()
|
||||
assert.Equal(t, test.want, got)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestEncodeSet(t *testing.T) {
|
||||
for _, test := range []struct {
|
||||
in string
|
||||
want uint
|
||||
wantErr bool
|
||||
}{
|
||||
{"", 0, true},
|
||||
{"None", 0, false},
|
||||
{"None", EncodeZero, false},
|
||||
{"DoubleQuote", EncodeDoubleQuote, false},
|
||||
{"Dot", EncodeDot, false},
|
||||
{"LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe", EncodeWin, false},
|
||||
{"Hash,Percent", EncodeHashPercent, false},
|
||||
{"Slash,Dollar,Colon", EncodeSlash | EncodeDollar | EncodeColon, false},
|
||||
{"Slash,0x80000000", EncodeSlash | (1 << 31), false},
|
||||
{"Blerp", 0, true},
|
||||
{"0xFGFFF", 0, true},
|
||||
} {
|
||||
var got MultiEncoder
|
||||
err := got.Set(test.in)
|
||||
assert.Equal(t, test.wantErr, err != nil, err)
|
||||
assert.Equal(t, MultiEncoder(test.want), got, test.in)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
type testCase struct {
|
||||
mask uint
|
||||
in string
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue