go-ircevent/irc_test.go

122 lines
2.9 KiB
Go
Raw Normal View History

2012-11-05 22:46:47 +00:00
package irc
import (
2013-03-13 11:50:29 +00:00
// "github.com/thoj/go-ircevent"
2012-11-05 22:46:47 +00:00
"testing"
)
func TestConnection(t *testing.T) {
2012-11-05 23:40:00 +00:00
irccon := IRC("go-eventirc", "go-eventirc")
irccon.VerboseCallbackHandler = true
2012-11-05 22:46:47 +00:00
err := irccon.Connect("irc.freenode.net:6667")
if err != nil {
t.Fatal("Can't connect to freenode.")
}
2012-11-05 23:40:00 +00:00
irccon.AddCallback("001", func(e *Event) { irccon.Join("#go-eventirc") })
2012-11-05 22:46:47 +00:00
2013-03-13 11:50:29 +00:00
irccon.AddCallback("366", func(e *Event) {
2012-11-05 23:40:00 +00:00
irccon.Privmsg("#go-eventirc", "Test Message\n")
2013-03-13 11:50:29 +00:00
irccon.Nick("go-eventnewnick")
})
irccon.AddCallback("NICK", func(e *Event) {
irccon.Quit()
if irccon.nickcurrent == "go-eventnewnick" {
t.Fatal("Nick change did not work!")
}
2012-11-05 22:46:47 +00:00
})
irccon.Loop()
2012-11-05 23:40:00 +00:00
}
2012-11-05 22:46:47 +00:00
2012-11-05 23:40:00 +00:00
func TestConnectionSSL(t *testing.T) {
irccon := IRC("go-eventirc", "go-eventirc")
irccon.VerboseCallbackHandler = true
2012-11-11 09:51:02 +00:00
irccon.UseTLS = true
2012-11-05 23:40:00 +00:00
err := irccon.Connect("irc.freenode.net:7000")
if err != nil {
t.Fatal("Can't connect to freenode.")
}
irccon.AddCallback("001", func(e *Event) { irccon.Join("#go-eventirc") })
2012-11-05 22:46:47 +00:00
2013-03-13 11:50:29 +00:00
irccon.AddCallback("366", func(e *Event) {
2012-11-05 23:40:00 +00:00
irccon.Privmsg("#go-eventirc", "Test Message\n")
2013-03-13 11:50:29 +00:00
irccon.Quit()
2012-11-05 23:40:00 +00:00
})
irccon.Loop()
2012-11-05 22:46:47 +00:00
}
func TestRemoveCallback(t *testing.T) {
irccon := IRC("go-eventirc", "go-eventirc")
irccon.VerboseCallbackHandler = true
done := make(chan int, 10)
irccon.AddCallback("TEST", func(e *Event) { done <- 1 })
id := irccon.AddCallback("TEST", func(e *Event) { done <- 2 })
irccon.AddCallback("TEST", func(e *Event) { done <- 3 })
// Should remove callback at index 1
irccon.RemoveCallback("TEST", id)
irccon.RunCallbacks(&Event{
Code: "TEST",
})
var results []int
results = append(results, <-done)
results = append(results, <-done)
if len(results) != 2 || !(results[0] == 1 && results[1] == 3) {
t.Error("Callback 2 not removed")
}
}
func TestWildcardCallback(t *testing.T) {
irccon := IRC("go-eventirc", "go-eventirc")
irccon.VerboseCallbackHandler = true
done := make(chan int, 10)
irccon.AddCallback("TEST", func(e *Event) { done <- 1 })
irccon.AddCallback("*", func(e *Event) { done <- 2 })
irccon.RunCallbacks(&Event{
Code: "TEST",
})
var results []int
results = append(results, <-done)
results = append(results, <-done)
if len(results) != 2 || !(results[0] == 1 && results[1] == 2) {
t.Error("Wildcard callback not called")
}
}
func TestClearCallback(t *testing.T) {
irccon := IRC("go-eventirc", "go-eventirc")
irccon.VerboseCallbackHandler = true
done := make(chan int, 10)
irccon.AddCallback("TEST", func(e *Event) { done <- 0 })
irccon.AddCallback("TEST", func(e *Event) { done <- 1 })
irccon.ClearCallback("TEST")
irccon.AddCallback("TEST", func(e *Event) { done <- 2 })
irccon.AddCallback("TEST", func(e *Event) { done <- 3 })
irccon.RunCallbacks(&Event{
Code: "TEST",
})
var results []int
results = append(results, <-done)
results = append(results, <-done)
if len(results) != 2 || !(results[0] == 2 && results[1] == 3) {
t.Error("Callbacks not cleared")
}
}