49 lines
1.4 KiB
Go
49 lines
1.4 KiB
Go
package domain
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestMapDraftAlternatesAndLeavesOneMap(t *testing.T) {
|
|
d, err := NewMapDraft([]string{"A", "B", "C"}, "red", [2]string{"red", "blue"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := d.Ban("blue", "A", "actor", time.Now()); err == nil {
|
|
t.Fatal("accepted out-of-turn ban")
|
|
}
|
|
if err := d.Ban("red", "A", "actor", time.Now()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := d.Ban("blue", "B", "actor", time.Now()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if selected, ok := d.Selected(); !ok || selected != "C" {
|
|
t.Fatalf("selected=%q ok=%v", selected, ok)
|
|
}
|
|
}
|
|
|
|
func TestHeroDraftRoleAndRepeatedBanRules(t *testing.T) {
|
|
heroes := []Hero{{Name: "DVa", Role: Tank}, {Name: "Sigma", Role: Tank}, {Name: "Tracer", Role: Damage}, {Name: "Ana", Role: Support}}
|
|
d, err := NewHeroDraft(heroes, [2]string{"a", "b"}, "a", 2, map[string][]string{"a": {"Ana"}})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := d.Ban("a", "Ana", "x", time.Now()); err == nil {
|
|
t.Fatal("accepted team's repeated series ban")
|
|
}
|
|
if err := d.Ban("a", "DVa", "x", time.Now()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := d.Ban("b", "Ana", "y", time.Now()); err != nil {
|
|
t.Fatal("opponent should be allowed to ban Ana:", err)
|
|
}
|
|
if err := d.Ban("a", "Sigma", "x", time.Now()); err == nil {
|
|
t.Fatal("accepted same-role bans by one team")
|
|
}
|
|
if err := d.Ban("a", "Tracer", "x", time.Now()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|