This commit is contained in:
thloyi
2026-04-28 18:26:43 +08:00
parent cddfcc3eef
commit 7b2a9af978
2 changed files with 107 additions and 41 deletions

View File

@@ -8,7 +8,6 @@ import (
"github.com/gagliardetto/solana-go"
"github.com/gagliardetto/solana-go/rpc"
"github.com/near/borsh-go"
)
func TestDecodeAxiomArgs(t *testing.T) {
@@ -49,8 +48,8 @@ func TestDecodeAxiomArgs(t *testing.T) {
t.Fatalf("failed to decode hex string: %v", err)
return
}
var args flasArgs
if err := borsh.Deserialize(&args, data[1:]); err != nil {
args, err := decodeFlasArgs(data)
if err != nil {
t.Fatalf("failed to decode Axiom args: %v", err)
return
}
@@ -59,6 +58,41 @@ func TestDecodeAxiomArgs(t *testing.T) {
}
}
func TestDecodeAxiomUpdatedRouteMarkers(t *testing.T) {
tests := []struct {
name string
marker []byte
match func([]byte) bool
}{
{name: "pump buy 0021", marker: []byte{0x00, 0x01, 0x21}, match: func(marker []byte) bool { return matchFlasMethod(marker, flasBuyTokensIXs) }},
{name: "pump buy 001b", marker: []byte{0x00, 0x01, 0x1b}, match: func(marker []byte) bool { return matchFlasMethod(marker, flasBuyTokensIXs) }},
{name: "pump sell", marker: []byte{0x01, 0x01, 0x1a}, match: func(marker []byte) bool { return matchFlasMethod(marker, flasSellTokensIXs) }},
{name: "pump amm buy", marker: []byte{0x00, 0x02, 0x1f}, match: func(marker []byte) bool { return matchFlasMethod(marker, flasAmmBuyTokensIXs) }},
{name: "pump amm sell", marker: []byte{0x01, 0x02, 0x1f}, match: func(marker []byte) bool { return matchFlasMethod(marker, flasAmmSellTokensIXs) }},
{name: "legacy bonk buy", marker: []byte{0x00, 0x02, 0x07}, match: func(marker []byte) bool { return matchFlasMethod(marker, flasBonkBuyTokensIXs) }},
{name: "legacy bonk sell", marker: []byte{0x01, 0x02, 0x07}, match: func(marker []byte) bool { return matchFlasMethod(marker, flasBonkSellTokensIXs) }},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
data := make([]byte, 20)
data[0] = 0
copy(data[17:20], tt.marker)
args, err := decodeFlasArgs(data)
if err != nil {
t.Fatalf("failed to decode args: %v", err)
}
expected := [3]uint8{tt.marker[0], tt.marker[1], tt.marker[2]}
if args.Placeholder != expected {
t.Fatalf("expected marker %x, got %x", tt.marker, args.Placeholder)
}
if !tt.match(tt.marker) {
t.Fatalf("marker %x did not match route", tt.marker)
}
})
}
}
func toUpdata(slot uint64, tx *solana.Transaction) *SubscribeUpdateTransaction {
signatures := make([][]byte, len(tx.Signatures))
for i, sig := range tx.Signatures {