61 lines
1.9 KiB
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)
|
|
}
|
|
}
|