源码索引 / CURRENT IMPLEMENTATION
cmd/trade-demo/market_test.go
27 行 · 点击行号可定位;函数链接随声明位置更新,不手填行号。
跳到函数 / 声明
package main
import (
"context"
"encoding/json"
"io"
"testing"
)
func TestMarketRechecksCashAtEveryOrder(t *testing.T) {
m := newMarket("ACME", 100, 2000, true, 0, newTrace(io.Discard))
manifest := m.tools()
args := json.RawMessage(`{"symbol":"ACME","quantity":15}`)
if _, err := manifest["buy"].Call(context.Background(), args); err != nil {
t.Fatal(err)
}
if _, err := manifest["buy"].Call(context.Background(), args); err == nil {
t.Fatal("overspending accepted")
}
if len(m.orders) != 1 || m.remainingCash != 500 {
t.Fatalf("orders=%v cash=%d", m.orders, m.remainingCash)
}
snapshot, err := manifest["cash"].Call(context.Background(), json.RawMessage(`{}`))
if err != nil || snapshot != 2000 {
t.Fatalf("snapshot changed: %v %v", snapshot, err)
}
}