7 "github.com/stretchr/testify/assert"
14 func NewTestLogger() *slog.Logger {
15 return slog.New(slog.NewTextHandler(os.Stdout, nil))
18 // assertTransferBytesEqual takes a string with a hexdump in the same format that `hexdump -C` produces and compares with
19 // a hexdump for the bytes in got, after stripping the create/modify timestamps.
20 // I don't love this, but as git does not preserve file create/modify timestamps, we either need to fully mock the
21 // filesystem interactions or work around in this way.
22 // TODO: figure out a better solution
23 func assertTransferBytesEqual(t *testing.T, wantHexDump string, got []byte) bool {
24 if wantHexDump == "" {
28 clean := slices.Concat(
33 return assert.Equal(t, wantHexDump, hex.Dump(clean))
36 var tranSortFunc = func(a, b Transaction) int {
38 binary.BigEndian.Uint16(a.clientID[:]),
39 binary.BigEndian.Uint16(b.clientID[:]),
43 // tranAssertEqual compares equality of transactions slices after stripping out the random transaction Type
44 func tranAssertEqual(t *testing.T, tran1, tran2 []Transaction) bool {
45 var newT1 []Transaction
46 var newT2 []Transaction
48 for _, trans := range tran1 {
49 trans.ID = [4]byte{0, 0, 0, 0}
51 for _, field := range trans.Fields {
52 if field.Type == FieldRefNum { // FieldRefNum
55 if field.Type == FieldChatID { // FieldChatID
59 fs = append(fs, field)
62 newT1 = append(newT1, trans)
65 for _, trans := range tran2 {
66 trans.ID = [4]byte{0, 0, 0, 0}
68 for _, field := range trans.Fields {
69 if field.Type == FieldRefNum { // FieldRefNum
72 if field.Type == FieldChatID { // FieldChatID
76 fs = append(fs, field)
79 newT2 = append(newT2, trans)
82 slices.SortFunc(newT1, tranSortFunc)
83 slices.SortFunc(newT2, tranSortFunc)
85 return assert.Equal(t, newT1, newT2)