ident: implement full representation
This can be used with both system and member identifiers. Signed-off-by: Yonah <contrib@gensokyo.uk>
This commit is contained in:
@@ -5,7 +5,9 @@ import (
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"git.gensokyo.uk/cofront/cof-spec/ident"
|
||||
)
|
||||
@@ -76,6 +78,74 @@ func (testCases rTestCases[V, S]) run(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestFS(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
rTestCases[ident.F[ident.S, *ident.S], *ident.F[ident.S, *ident.S]]{
|
||||
{"separator", ident.F[ident.S, *ident.S]{}, nil, ident.ErrSeparator},
|
||||
{"bad ident", ident.F[ident.S, *ident.S]{}, []byte(
|
||||
strings.Repeat("=", ident.EncodedSizeSystem) + ":",
|
||||
), base64.CorruptInputError(0)},
|
||||
|
||||
{"valid", ident.F[ident.S, *ident.S]{
|
||||
I: &ident.S{
|
||||
Site: ident.TrivialSite,
|
||||
Host: ident.TrivialHost,
|
||||
|
||||
Time: uint64(time.Date(
|
||||
0xfd, 7, 15,
|
||||
23, 59, 59, 0xcafe,
|
||||
time.UTC,
|
||||
).UnixNano()),
|
||||
|
||||
ID: 0xfee1dead0badf00d,
|
||||
},
|
||||
|
||||
Remote: mustNewRemote("gensokyo.uk"),
|
||||
}, []byte("_srt_r66_sr-AEPO8ZJKEA3wrQut3uH-:gensokyo.uk"), nil},
|
||||
}.run(t)
|
||||
}
|
||||
|
||||
func TestFM(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
rTestCases[ident.F[ident.M, *ident.M], *ident.F[ident.M, *ident.M]]{
|
||||
{"separator", ident.F[ident.M, *ident.M]{}, nil, ident.ErrSeparator},
|
||||
{"bad ident", ident.F[ident.M, *ident.M]{}, []byte(
|
||||
strings.Repeat("=", ident.EncodedSizeMember) + ":",
|
||||
), base64.CorruptInputError(0)},
|
||||
|
||||
{"valid", ident.F[ident.M, *ident.M]{
|
||||
I: &ident.M{
|
||||
Serial: 0xfdfdfdfdfdfdfdfd,
|
||||
|
||||
Time: uint64(time.Date(
|
||||
0xfd, 7, 15,
|
||||
23, 59, 59, 0xcab,
|
||||
time.UTC,
|
||||
).UnixNano()),
|
||||
|
||||
ID: 0x2e736e64,
|
||||
|
||||
System: ident.S{
|
||||
Site: ident.TrivialSite,
|
||||
Host: ident.TrivialHost,
|
||||
|
||||
Time: uint64(time.Date(
|
||||
0xfd, 7, 15,
|
||||
23, 59, 59, 0xcafe,
|
||||
time.UTC,
|
||||
).UnixNano()),
|
||||
|
||||
ID: 0xfee1dead0badf00d,
|
||||
},
|
||||
},
|
||||
|
||||
Remote: mustNewRemote("gensokyo.uk"),
|
||||
}, []byte("_f39_f39_f2rQkLO8ZJKEGRucy4AAAAA_srt_r66_sr-AEPO8ZJKEA3wrQut3uH-:gensokyo.uk"), nil},
|
||||
}.run(t)
|
||||
}
|
||||
|
||||
func TestErrors(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user