]> git.r.bdr.sh - rbdr/mobius/blobdiff - hotline/server_blackbox_test.go
Extensive refactor, quality of life enhancements
[rbdr/mobius] / hotline / server_blackbox_test.go
index 28aecf08875c195772f6d88ba5c9f89577c0f63e..888ca3f0ac86aa6bda2f8f72e348c1e58dc38f82 100644 (file)
@@ -1,10 +1,13 @@
 package hotline
 
 import (
+       "cmp"
+       "encoding/binary"
        "encoding/hex"
        "github.com/stretchr/testify/assert"
        "log/slog"
        "os"
+       "slices"
        "testing"
 )
 
@@ -22,16 +25,23 @@ 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 transaction 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
 
@@ -39,13 +49,14 @@ func tranAssertEqual(t *testing.T, tran1, tran2 []Transaction) bool {
                trans.ID = [4]byte{0, 0, 0, 0}
                var fs []Field
                for _, field := range trans.Fields {
-                       if field.ID == [2]byte{0x00, 0x6b} { // FieldRefNum
+                       if field.Type == FieldRefNum { // FieldRefNum
                                continue
                        }
-                       if field.ID == [2]byte{0x00, 0x72} { // FieldChatID
+                       if field.Type == FieldChatID { // FieldChatID
                                continue
                        }
-                       trans.Fields = append(trans.Fields, field)
+
+                       fs = append(fs, field)
                }
                trans.Fields = fs
                newT1 = append(newT1, trans)
@@ -55,17 +66,21 @@ func tranAssertEqual(t *testing.T, tran1, tran2 []Transaction) bool {
                trans.ID = [4]byte{0, 0, 0, 0}
                var fs []Field
                for _, field := range trans.Fields {
-                       if field.ID == [2]byte{0x00, 0x6b} { // FieldRefNum
+                       if field.Type == FieldRefNum { // FieldRefNum
                                continue
                        }
-                       if field.ID == [2]byte{0x00, 0x72} { // FieldChatID
+                       if field.Type == FieldChatID { // FieldChatID
                                continue
                        }
-                       trans.Fields = append(trans.Fields, field)
+
+                       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)
 }