package events // // import ( // "testing" // // "github.com/thrasher-/gocryptotrader/config" // "github.com/thrasher-/gocryptotrader/currency/pair" // "github.com/thrasher-/gocryptotrader/exchanges/ticker" // "github.com/thrasher-/gocryptotrader/smsglobal" // ) // // var ( // loaded = false // ) // // func testSetup(t *testing.T) { // if !loaded { // cfg := config.GetConfig() // err := cfg.LoadConfig("") // if err != nil { // t.Fatalf("Test failed. Failed to load config %s", err) // } // smsglobal.New(cfg.SMS.Username, cfg.SMS.Password, cfg.Name, cfg.SMS.Contacts) // loaded = true // } // } // // func TestAddEvent(t *testing.T) { // testSetup(t) // // pair := pair.NewCurrencyPair("BTC", "USD") // eventID, err := AddEvent("ANX", "price", ">,==", pair, "SPOT", actionTest) // if err != nil && eventID != 0 { // t.Errorf("Test Failed. AddEvent: Error, %s", err) // } // eventID, err = AddEvent("ANXX", "price", ">,==", pair, "SPOT", actionTest) // if err == nil && eventID == 0 { // t.Error("Test Failed. AddEvent: Error, error not captured in Exchange") // } // eventID, err = AddEvent("ANX", "prices", ">,==", pair, "SPOT", actionTest) // if err == nil && eventID == 0 { // t.Error("Test Failed. AddEvent: Error, error not captured in Item") // } // eventID, err = AddEvent("ANX", "price", "3===D", pair, "SPOT", actionTest) // if err == nil && eventID == 0 { // t.Error("Test Failed. AddEvent: Error, error not captured in Condition") // } // eventID, err = AddEvent("ANX", "price", ">,==", pair, "SPOT", "console_prints") // if err == nil && eventID == 0 { // t.Error("Test Failed. AddEvent: Error, error not captured in Action") // } // // if !RemoveEvent(eventID) { // t.Error("Test Failed. RemoveEvent: Error, error removing event") // } // } // // func TestRemoveEvent(t *testing.T) { // testSetup(t) // // pair := pair.NewCurrencyPair("BTC", "USD") // eventID, err := AddEvent("ANX", "price", ">,==", pair, "SPOT", actionTest) // if err != nil && eventID != 0 { // t.Errorf("Test Failed. RemoveEvent: Error, %s", err) // } // if !RemoveEvent(eventID) { // t.Error("Test Failed. RemoveEvent: Error, error removing event") // } // if RemoveEvent(1234) { // t.Error("Test Failed. RemoveEvent: Error, error removing event") // } // } // // func TestGetEventCounter(t *testing.T) { // testSetup(t) // // pair := pair.NewCurrencyPair("BTC", "USD") // one, err := AddEvent("ANX", "price", ">,==", pair, "SPOT", actionTest) // if err != nil { // t.Errorf("Test Failed. GetEventCounter: Error, %s", err) // } // two, err := AddEvent("ANX", "price", ">,==", pair, "SPOT", actionTest) // if err != nil { // t.Errorf("Test Failed. GetEventCounter: Error, %s", err) // } // three, err := AddEvent("ANX", "price", ">,==", pair, "SPOT", actionTest) // if err != nil { // t.Errorf("Test Failed. GetEventCounter: Error, %s", err) // } // // Events[three-1].Executed = true // // total, _ := GetEventCounter() // if total <= 0 { // t.Errorf("Test Failed. GetEventCounter: Total = %d", total) // } // if !RemoveEvent(one) { // t.Error("Test Failed. GetEventCounter: Error, error removing event") // } // if !RemoveEvent(two) { // t.Error("Test Failed. GetEventCounter: Error, error removing event") // } // if !RemoveEvent(three) { // t.Error("Test Failed. GetEventCounter: Error, error removing event") // } // // total2, _ := GetEventCounter() // if total2 != 0 { // t.Errorf("Test Failed. GetEventCounter: Total = %d", total2) // } // } // // func TestExecuteAction(t *testing.T) { // testSetup(t) // // pair := pair.NewCurrencyPair("BTC", "USD") // one, err := AddEvent("ANX", "price", ">,==", pair, "SPOT", actionTest) // if err != nil { // t.Fatalf("Test Failed. ExecuteAction: Error, %s", err) // } // isExecuted := Events[one].ExecuteAction() // if !isExecuted { // t.Error("Test Failed. ExecuteAction: Error, error removing event") // } // if !RemoveEvent(one) { // t.Error("Test Failed. ExecuteAction: Error, error removing event") // } // // action := actionSMSNotify + "," + "ALL" // one, err = AddEvent("ANX", "price", ">,==", pair, "SPOT", action) // if err != nil { // t.Fatalf("Test Failed. ExecuteAction: Error, %s", err) // } // // isExecuted = Events[one].ExecuteAction() // if !isExecuted { // t.Error("Test Failed. ExecuteAction: Error, error removing event") // } // if !RemoveEvent(one) { // t.Error("Test Failed. ExecuteAction: Error, error removing event") // } // // action = actionSMSNotify + "," + "StyleGherkin" // one, err = AddEvent("ANX", "price", ">,==", pair, "SPOT", action) // if err != nil { // t.Fatalf("Test Failed. ExecuteAction: Error, %s", err) // } // // isExecuted = Events[one].ExecuteAction() // if !isExecuted { // t.Error("Test Failed. ExecuteAction: Error, error removing event") // } // if !RemoveEvent(one) { // t.Error("Test Failed. ExecuteAction: Error, error removing event") // } // // More tests when ExecuteAction is expanded // } // // func TestEventToString(t *testing.T) { // testSetup(t) // // pair := pair.NewCurrencyPair("BTC", "USD") // one, err := AddEvent("ANX", "price", ">,==", pair, "SPOT", actionTest) // if err != nil { // t.Errorf("Test Failed. EventToString: Error, %s", err) // } // // eventString := Events[one].String() // if eventString != "If the BTCUSD [SPOT] price on ANX is > == then ACTION_TEST." { // t.Error("Test Failed. EventToString: Error, incorrect return string") // } // // if !RemoveEvent(one) { // t.Error("Test Failed. EventToString: Error, error removing event") // } // } // // func TestCheckCondition(t *testing.T) { // testSetup(t) // // // Test invalid currency pair // newPair := pair.NewCurrencyPair("A", "B") // one, err := AddEvent("ANX", "price", ">=,10", newPair, "SPOT", actionTest) // if err != nil { // t.Errorf("Test Failed. CheckCondition: Error, %s", err) // } // conditionBool := Events[one].CheckCondition() // if conditionBool { // t.Error("Test Failed. CheckCondition: Error, wrong conditional.") // } // // // Test last price == 0 // var tickerNew ticker.Price // tickerNew.Last = 0 // newPair = pair.NewCurrencyPair("BTC", "USD") // ticker.ProcessTicker("ANX", newPair, tickerNew, ticker.Spot) // Events[one].Pair = newPair // conditionBool = Events[one].CheckCondition() // if conditionBool { // t.Error("Test Failed. CheckCondition: Error, wrong conditional.") // } // // // Test last pricce > 0 and conditional logic // tickerNew.Last = 11 // ticker.ProcessTicker("ANX", newPair, tickerNew, ticker.Spot) // Events[one].Condition = ">,10" // conditionBool = Events[one].CheckCondition() // if !conditionBool { // t.Error("Test Failed. CheckCondition: Error, wrong conditional.") // } // // // Test last price >= 10 // Events[one].Condition = ">=,10" // conditionBool = Events[one].CheckCondition() // if !conditionBool { // t.Error("Test Failed. CheckCondition: Error, wrong conditional.") // } // // // Test last price <= 10 // Events[one].Condition = "<,100" // conditionBool = Events[one].CheckCondition() // if !conditionBool { // t.Error("Test Failed. CheckCondition: Error, wrong conditional.") // } // // // Test last price <= 10 // Events[one].Condition = "<=,100" // conditionBool = Events[one].CheckCondition() // if !conditionBool { // t.Error("Test Failed. CheckCondition: Error, wrong conditional.") // } // // Events[one].Condition = "==,11" // conditionBool = Events[one].CheckCondition() // if !conditionBool { // t.Error("Test Failed. CheckCondition: Error, wrong conditional.") // } // // Events[one].Condition = "^,11" // conditionBool = Events[one].CheckCondition() // if conditionBool { // t.Error("Test Failed. CheckCondition: Error, wrong conditional.") // } // // if !RemoveEvent(one) { // t.Error("Test Failed. CheckCondition: Error, error removing event") // } // } // // func TestIsValidEvent(t *testing.T) { // testSetup(t) // // err := IsValidEvent("ANX", "price", ">,==", actionTest) // if err != nil { // t.Errorf("Test Failed. IsValidEvent: %s", err) // } // err = IsValidEvent("ANX", "price", ">,", actionTest) // if err == nil { // t.Errorf("Test Failed. IsValidEvent: %s", err) // } // err = IsValidEvent("ANX", "Testy", ">,==", actionTest) // if err == nil { // t.Errorf("Test Failed. IsValidEvent: %s", err) // } // err = IsValidEvent("Testys", "price", ">,==", actionTest) // if err == nil { // t.Errorf("Test Failed. IsValidEvent: %s", err) // } // // action := "blah,blah" // err = IsValidEvent("ANX", "price", ">=,10", action) // if err == nil { // t.Errorf("Test Failed. IsValidEvent: %s", err) // } // // action = "SMS,blah" // err = IsValidEvent("ANX", "price", ">=,10", action) // if err == nil { // t.Errorf("Test Failed. IsValidEvent: %s", err) // } // // //Function tests need to appended to this function when more actions are // //implemented // } // // func TestCheckEvents(t *testing.T) { // testSetup(t) // // pair := pair.NewCurrencyPair("BTC", "USD") // _, err := AddEvent("ANX", "price", ">=,10", pair, "SPOT", actionTest) // if err != nil { // t.Fatal("Test failed. TestChcheckEvents add event") // } // // go CheckEvents() // } // // func TestIsValidExchange(t *testing.T) { // testSetup(t) // // boolean := IsValidExchange("ANX") // if !boolean { // t.Error("Test Failed. IsValidExchange: Error, incorrect Exchange") // } // boolean = IsValidExchange("OBTUSE") // if boolean { // t.Error("Test Failed. IsValidExchange: Error, incorrect return") // } // } // // func TestIsValidCondition(t *testing.T) { // testSetup(t) // // boolean := IsValidCondition(">") // if !boolean { // t.Error("Test Failed. IsValidCondition: Error, incorrect Condition") // } // boolean = IsValidCondition(">=") // if !boolean { // t.Error("Test Failed. IsValidCondition: Error, incorrect Condition") // } // boolean = IsValidCondition("<") // if !boolean { // t.Error("Test Failed. IsValidCondition: Error, incorrect Condition") // } // boolean = IsValidCondition("<=") // if !boolean { // t.Error("Test Failed. IsValidCondition: Error, incorrect Condition") // } // boolean = IsValidCondition("==") // if !boolean { // t.Error("Test Failed. IsValidCondition: Error, incorrect Condition") // } // boolean = IsValidCondition("**********") // if boolean { // t.Error("Test Failed. IsValidCondition: Error, incorrect return") // } // } // // func TestIsValidAction(t *testing.T) { // testSetup(t) // // boolean := IsValidAction("sms") // if !boolean { // t.Error("Test Failed. IsValidAction: Error, incorrect Action") // } // boolean = IsValidAction(actionTest) // if !boolean { // t.Error("Test Failed. IsValidAction: Error, incorrect Action") // } // boolean = IsValidAction("randomstring") // if boolean { // t.Error("Test Failed. IsValidAction: Error, incorrect return") // } // } // // func TestIsValidItem(t *testing.T) { // testSetup(t) // // boolean := IsValidItem("price") // if !boolean { // t.Error("Test Failed. IsValidItem: Error, incorrect Item") // } // boolean = IsValidItem("obtuse") // if boolean { // t.Error("Test Failed. IsValidItem: Error, incorrect return") // } // }