Files
bl/modules/player/service/sign_test.go

61 lines
1.9 KiB
Go

package service
import (
"blazing/modules/player/model"
"testing"
"github.com/pointernil/bitset32"
)
func TestParseRewardDays(t *testing.T) {
rewards, err := parseRewardDays(`{"days":[{"day":2,"coins":10,"items":[{"item_id":1001,"count":1}],"gift_item_ids":[8]},{"day":1,"gold":2},{"day":2,"coins":5,"items":[{"item_id":1001,"count":2}]}]}`)
if err != nil {
t.Fatalf("parseRewardDays returned error: %v", err)
}
if len(rewards) != 2 {
t.Fatalf("expected 2 reward days, got %d", len(rewards))
}
if rewards[0].Day != 1 || rewards[0].Gold != 2 {
t.Fatalf("unexpected first reward: %+v", rewards[0])
}
if rewards[1].Day != 2 {
t.Fatalf("unexpected second reward day: %+v", rewards[1])
}
if rewards[1].Coins != 15 {
t.Fatalf("expected merged coins to be 15, got %d", rewards[1].Coins)
}
if len(rewards[1].Items) != 1 || rewards[1].Items[0].Count != 3 {
t.Fatalf("expected merged item count to be 3, got %+v", rewards[1].Items)
}
}
func TestParseRewardDaysMapFormat(t *testing.T) {
rewards, err := parseRewardDays(`{"1":{"coins":1},"3":{"ev_pool":9}}`)
if err != nil {
t.Fatalf("parseRewardDays returned error: %v", err)
}
if len(rewards) != 2 {
t.Fatalf("expected 2 reward days, got %d", len(rewards))
}
if rewards[0].Day != 1 || rewards[0].Coins != 1 {
t.Fatalf("unexpected day 1 reward: %+v", rewards[0])
}
if rewards[1].Day != 3 || rewards[1].EVPool != 9 {
t.Fatalf("unexpected day 3 reward: %+v", rewards[1])
}
}
func TestNextRewardDay(t *testing.T) {
rewards := []SignRewardDay{{Day: 1}, {Day: 2}, {Day: 3}}
progress := bitset32.New(0).Set(0).Set(1)
record := &model.SignInRecord{SignInProgress: progress.Bytes()}
day, reward := nextRewardDay(rewards, record)
if reward == nil {
t.Fatal("expected next reward, got nil")
}
if day != 3 || reward.Day != 3 {
t.Fatalf("expected next day to be 3, got day=%d reward=%+v", day, reward)
}
}