feat: add module and decimal wire helpers
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
package wire_test
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
decimal "github.com/alpacahq/alpacadecimal"
|
||||
"s1d3sw1ped/robinhood-agentic-mcp/internal/wire"
|
||||
)
|
||||
|
||||
func TestUnwrap_dataEnvelope(t *testing.T) {
|
||||
t.Parallel()
|
||||
in := json.RawMessage(`{"data":{"cash":"1000"}}`)
|
||||
got := wire.Unwrap(in)
|
||||
if string(got) != `{"cash":"1000"}` {
|
||||
t.Fatalf("got %s", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDec_table(t *testing.T) {
|
||||
t.Parallel()
|
||||
zero := decimal.Zero
|
||||
tests := []struct {
|
||||
name string
|
||||
in any
|
||||
want decimal.Decimal
|
||||
wantErr bool
|
||||
}{
|
||||
{"number", float64(99.6), decimal.RequireFromString("99.6"), false},
|
||||
{"string", "99.60", decimal.RequireFromString("99.60"), false},
|
||||
{"zeroNum", float64(0), zero, false},
|
||||
{"zeroStr", "0", zero, false},
|
||||
{"emptyStr", "", zero, false},
|
||||
{"nil", nil, zero, false},
|
||||
{"bad", "n/a", zero, true},
|
||||
{"obj", map[string]any{"x": 1}, zero, true},
|
||||
{"bool", true, zero, true},
|
||||
}
|
||||
for _, tc := range tests {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
got, err := wire.Dec(tc.in)
|
||||
if tc.wantErr {
|
||||
if err == nil {
|
||||
t.Fatalf("want error")
|
||||
}
|
||||
return
|
||||
}
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !got.Equal(tc.want) {
|
||||
t.Fatalf("got %s want %s", got, tc.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDecOpt_nullIsNil(t *testing.T) {
|
||||
t.Parallel()
|
||||
got, err := wire.DecOpt(nil)
|
||||
if err != nil || got != nil {
|
||||
t.Fatalf("got %v err %v", got, err)
|
||||
}
|
||||
got, err = wire.DecOpt("")
|
||||
if err != nil || got != nil {
|
||||
t.Fatalf("empty string: %v %v", got, err)
|
||||
}
|
||||
got, err = wire.DecOpt("0")
|
||||
if err != nil || got == nil || !got.IsZero() {
|
||||
t.Fatalf("zero: %v %v", got, err)
|
||||
}
|
||||
_, err = wire.DecOpt("n/a")
|
||||
if err == nil {
|
||||
t.Fatal("unparseable must error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestEncode(t *testing.T) {
|
||||
t.Parallel()
|
||||
d := decimal.RequireFromString("99.6")
|
||||
if wire.Encode(d) != d.String() {
|
||||
t.Fatalf("%q", wire.Encode(d))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user