portfolio_test.go 804 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package main
  2. import (
  3. "git.beejay.kim/Gshopper/sentio"
  4. "github.com/samber/lo"
  5. )
  6. type PortfolioStub []PositionStub
  7. func newStubPortfolio(elem ...PositionStub) sentio.Portfolio {
  8. var p PortfolioStub
  9. p = append(p, elem...)
  10. return p
  11. }
  12. func (p PortfolioStub) Get(symbol string) (sentio.Position, bool) {
  13. return lo.Find(p, func(item PositionStub) bool {
  14. return item.symbol == symbol
  15. })
  16. }
  17. func (p PortfolioStub) Positions() []sentio.Position {
  18. return lo.Map(p, func(item PositionStub, _ int) sentio.Position {
  19. return item
  20. })
  21. }
  22. type PositionStub struct {
  23. symbol string
  24. size float64
  25. price float64
  26. }
  27. func (p PositionStub) GetSize() float64 {
  28. return p.size
  29. }
  30. func (p PositionStub) GetAvgPrice() float64 {
  31. return p.price
  32. }
  33. func (p PositionStub) GetSymbol() string {
  34. return p.symbol
  35. }