ident: implement system identifier

Signed-off-by: Yonah <contrib@gensokyo.uk>
This commit is contained in:
2026-03-21 17:05:55 +09:00
parent 3f5c3c8ff9
commit f609d5bb62
4 changed files with 272 additions and 0 deletions

55
ident/system_test.go Normal file
View File

@@ -0,0 +1,55 @@
package ident_test
import (
"encoding/base64"
"strings"
"testing"
"time"
"git.gensokyo.uk/cofront/cof-spec/ident"
)
func TestS(t *testing.T) {
t.Parallel()
rTestCases[ident.S, *ident.S]{
{"short", ident.S{}, nil, &ident.UnexpectedSizeError{
Data: nil,
Want: ident.EncodedSizeSystem,
}},
{"malformed", ident.S{}, []byte{
0xfe, 0xe1, 0xde, 0xad,
0xfe, 0xe1, 0xde, 0xad,
0xfe, 0xe1, 0xde, 0xad,
0xfe, 0xe1, 0xde, 0xad,
0xfe, 0xe1, 0xde, 0xad,
0xfe, 0xe1, 0xde, 0xad,
0xfe, 0xe1, 0xde, 0xad,
0xfe, 0xe1, 0xde, 0xad,
}, base64.CorruptInputError(0)},
{"newline", ident.S{}, []byte(
"AAAA" + strings.Repeat("\n", ident.EncodedSizeSystem-4),
), ident.ErrNewline},
{"valid", ident.S{
Site: ident.TrivialSite,
Host: ident.TrivialHost,
Time: uint64(time.Date(
0xfd, 7, 15,
23, 59, 59, 0xcafe,
time.UTC,
).UnixNano()),
ID: 0xfee1dead0badf00d,
}, base64.URLEncoding.AppendEncode(nil, []byte{
/* site: */ 0xfe, 0xca, 0xed, 0xfe,
/* host: */ 0xbe, 0xba, 0xfe, 0xca,
/* time: */ 0xfe, 0, 0x43, 0xce, 0xf1, 0x92, 0x4a, 0x10,
/* id: */ 0xd, 0xf0, 0xad, 0xb, 0xad, 0xde, 0xe1, 0xfe,
}), nil},
}.run(t)
}