mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-30 23:16:52 +00:00
Move orders into its own package
This commit is contained in:
69
exchanges/orders/orders.go
Normal file
69
exchanges/orders/orders.go
Normal 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
|
||||
}
|
||||
37
exchanges/orders/orders_test.go
Normal file
37
exchanges/orders/orders_test.go
Normal 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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user