X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/a6216dd89252fa01dc176f98f1e4ecfd3f637566..8cd28eb8cede1c6888cbbcd319a9617304bfc4c1:/hotline/server_blackbox_test.go diff --git a/hotline/server_blackbox_test.go b/hotline/server_blackbox_test.go index 27ac4a7..888ca3f 100644 --- a/hotline/server_blackbox_test.go +++ b/hotline/server_blackbox_test.go @@ -1,11 +1,13 @@ package hotline import ( - "bytes" + "cmp" + "encoding/binary" "encoding/hex" "github.com/stretchr/testify/assert" "log/slog" "os" + "slices" "testing" ) @@ -23,26 +25,37 @@ func assertTransferBytesEqual(t *testing.T, wantHexDump string, got []byte) bool return true } - var clean []byte - clean = append(clean, got[:92]...) // keep the first 92 bytes - clean = append(clean, make([]byte, 16)...) // replace the next 16 bytes for create/modify timestamps - clean = append(clean, got[108:]...) // keep the rest - + clean := slices.Concat( + got[:92], + make([]byte, 16), + got[108:], + ) return assert.Equal(t, wantHexDump, hex.Dump(clean)) } -// tranAssertEqual compares equality of transactions slices after stripping out the random ID -func tranAssertEqual(t *testing.T, tran1, tran2 []Transaction) bool { +var tranSortFunc = func(a, b Transaction) int { + return cmp.Compare( + binary.BigEndian.Uint16(a.ClientID[:]), + binary.BigEndian.Uint16(b.ClientID[:]), + ) +} + +// TranAssertEqual compares equality of transactions slices after stripping out the random transaction Type +func TranAssertEqual(t *testing.T, tran1, tran2 []Transaction) bool { var newT1 []Transaction var newT2 []Transaction for _, trans := range tran1 { - trans.ID = []byte{0, 0, 0, 0} + trans.ID = [4]byte{0, 0, 0, 0} var fs []Field for _, field := range trans.Fields { - if bytes.Equal(field.ID, []byte{0x00, 0x6b}) { + if field.Type == FieldRefNum { // FieldRefNum + continue + } + if field.Type == FieldChatID { // FieldChatID continue } + fs = append(fs, field) } trans.Fields = fs @@ -50,17 +63,24 @@ func tranAssertEqual(t *testing.T, tran1, tran2 []Transaction) bool { } for _, trans := range tran2 { - trans.ID = []byte{0, 0, 0, 0} + trans.ID = [4]byte{0, 0, 0, 0} var fs []Field for _, field := range trans.Fields { - if bytes.Equal(field.ID, []byte{0x00, 0x6b}) { + if field.Type == FieldRefNum { // FieldRefNum + continue + } + if field.Type == FieldChatID { // FieldChatID continue } + fs = append(fs, field) } trans.Fields = fs newT2 = append(newT2, trans) } + slices.SortFunc(newT1, tranSortFunc) + slices.SortFunc(newT2, tranSortFunc) + return assert.Equal(t, newT1, newT2) }