37 lines
1.3 KiB
Go
37 lines
1.3 KiB
Go
package eventplay
|
|
|
|
import (
|
|
"bd2server/internal/server/events"
|
|
"bd2server/internal/server/gamedata"
|
|
"bd2server/internal/server/wire"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestLostCoinPeriodFollowsCalendarIdentityPackAndWindow(t *testing.T) {
|
|
registry := events.NewRegistry()
|
|
row := wire.AppendVarint(wire.AppendVarint(nil, 4, 9), 1, 21)
|
|
s := &Service{registry: registry, design: &gamedata.EventPlayCatalog{Tables: map[string][][]byte{"EventLostCoinTable": {row}}}, now: func() time.Time { return time.UnixMilli(150) }}
|
|
if err := registry.Replace([]events.Schedule{{UID: 1, Type: 14, ID: 9, Start: 100, End: 200}}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
first, end, err := s.FieldObjectEventPeriod(21)
|
|
if err != nil || end != 200 || first == "" {
|
|
t.Fatal(first, end, err)
|
|
}
|
|
if _, _, err = s.FieldObjectEventPeriod(22); err == nil {
|
|
t.Fatal("event applied to unlisted pack")
|
|
}
|
|
s.now = func() time.Time { return time.UnixMilli(200) }
|
|
if _, _, err = s.FieldObjectEventPeriod(21); err == nil {
|
|
t.Fatal("event remained open at end boundary")
|
|
}
|
|
if err = registry.Replace([]events.Schedule{{UID: 2, Type: 14, ID: 9, Start: 200, End: 300}}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
next, _, err := s.FieldObjectEventPeriod(21)
|
|
if err != nil || first == next {
|
|
t.Fatal("new calendar reused old claim period", err)
|
|
}
|
|
}
|