Move orders into its own package

This commit is contained in:
Adrian Gallagher
2018-03-01 16:11:35 +11:00
parent 046b4dc348
commit 966cfc7512
2 changed files with 2 additions and 2 deletions

View File

@@ -0,0 +1,69 @@
package orders
const (
limitOrder = iota
marketOrder
)
// Orders variable holds an array of pointers to order structs
var Orders []*Order
// Order struct holds order values
type Order struct {
OrderID int
Exchange string
Type int
Amount float64
Price float64
}
// NewOrder creates a new order and returns a an orderID
func NewOrder(Exchange string, amount, price float64) int {
order := &Order{}
if len(Orders) == 0 {
order.OrderID = 0
} else {
order.OrderID = len(Orders)
}
order.Exchange = Exchange
order.Amount = amount
order.Price = price
Orders = append(Orders, order)
return order.OrderID
}
// DeleteOrder deletes orders by ID and returns state
func DeleteOrder(orderID int) bool {
for i := range Orders {
if Orders[i].OrderID == orderID {
Orders = append(Orders[:i], Orders[i+1:]...)
return true
}
}
return false
}
// GetOrdersByExchange returns order pointer grouped by exchange
func GetOrdersByExchange(exchange string) []*Order {
orders := []*Order{}
for i := range Orders {
if Orders[i].Exchange == exchange {
orders = append(orders, Orders[i])
}
}
if len(orders) > 0 {
return orders
}
return nil
}
// GetOrderByOrderID returns order pointer by ID
func GetOrderByOrderID(orderID int) *Order {
for i := range Orders {
if Orders[i].OrderID == orderID {
return Orders[i]
}
}
return nil
}

View File

@@ -0,0 +1,37 @@
package orders
import (
"testing"
)
func TestNewOrder(t *testing.T) {
ID := NewOrder("ANX", 2000, 20.00)
if ID != 0 {
t.Error("Test Failed - Orders_test.go NewOrder() - Error")
}
ID = NewOrder("BATMAN", 400, 25.00)
if ID != 1 {
t.Error("Test Failed - Orders_test.go NewOrder() - Error")
}
}
func TestDeleteOrder(t *testing.T) {
if value := DeleteOrder(0); !value {
t.Error("Test Failed - Orders_test.go DeleteOrder() - Error")
}
if value := DeleteOrder(100); value {
t.Error("Test Failed - Orders_test.go DeleteOrder() - Error")
}
}
func TestGetOrdersByExchange(t *testing.T) {
if value := GetOrdersByExchange("ANX"); len(value) != 0 {
t.Error("Test Failed - Orders_test.go GetOrdersByExchange() - Error")
}
}
func TestGetOrderByOrderID(t *testing.T) {
if value := GetOrderByOrderID(69); value != nil {
t.Error("Test Failed - Orders_test.go GetOrdersByExchange() - Error")
}
}