73 lines
2.2 KiB
Go
73 lines
2.2 KiB
Go
package luckygift
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestDefaultRuleConfigPassesValidation(t *testing.T) {
|
|
config := DefaultRuleConfig("hyapp", "pool_v2")
|
|
config.Enabled = true
|
|
|
|
if err := validateRuleConfig(config); err != nil {
|
|
t.Fatalf("default v2 lucky gift config should be publishable: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestValidateRuleConfigRejectsPercentSubmittedAsPPM(t *testing.T) {
|
|
config := DefaultRuleConfig("hyapp", "pool_bad_rtp")
|
|
config.TargetRTPPPM = 95
|
|
|
|
if err := validateRuleConfig(config); err == nil {
|
|
t.Fatalf("expected raw percent value in ppm field to be rejected")
|
|
}
|
|
}
|
|
|
|
func TestValidateRuleConfigRejectsStageWeightMismatch(t *testing.T) {
|
|
config := DefaultRuleConfig("hyapp", "pool_bad_weight")
|
|
config.Stages[0].Tiers[0].BaseWeightPPM = 299_999
|
|
|
|
if err := validateRuleConfig(config); err == nil {
|
|
t.Fatalf("expected stage probability sum mismatch to be rejected")
|
|
}
|
|
}
|
|
|
|
func TestValidateRuleConfigRejectsMissingRiskCaps(t *testing.T) {
|
|
config := DefaultRuleConfig("hyapp", "pool_bad_cap")
|
|
config.RoomHourlyPayoutCap = 0
|
|
|
|
if err := validateRuleConfig(config); err == nil {
|
|
t.Fatalf("expected missing v2 risk cap to be rejected")
|
|
}
|
|
}
|
|
|
|
func TestValidateRuleConfigRejectsInvalidEquivalentDrawThresholds(t *testing.T) {
|
|
config := DefaultRuleConfig("hyapp", "pool_bad_stage_threshold")
|
|
config.NormalMaxEquivalentDraws = config.NoviceMaxEquivalentDraws - 1
|
|
|
|
if err := validateRuleConfig(config); err == nil {
|
|
t.Fatalf("expected invalid equivalent draw thresholds to be rejected")
|
|
}
|
|
}
|
|
|
|
func TestValidateRuleConfigRequiresExplicitZeroTier(t *testing.T) {
|
|
config := DefaultRuleConfig("hyapp", "pool_no_zero")
|
|
config.Stages[1].Tiers = config.Stages[1].Tiers[1:]
|
|
|
|
if err := validateRuleConfig(config); err == nil {
|
|
t.Fatalf("expected stage without 0x tier to be rejected")
|
|
}
|
|
}
|
|
|
|
func TestValidateRuleConfigRejectsDuplicatedStageTierID(t *testing.T) {
|
|
config := DefaultRuleConfig("hyapp", "pool_duplicate_tier")
|
|
advanced := &config.Stages[2]
|
|
duplicate := advanced.Tiers[len(advanced.Tiers)-1]
|
|
duplicate.MultiplierPPM = 10_000_000
|
|
duplicate.BaseWeightPPM = 0
|
|
advanced.Tiers = append(advanced.Tiers, duplicate)
|
|
|
|
if err := validateRuleConfig(config); err == nil {
|
|
t.Fatalf("expected duplicate tier id inside one stage to be rejected")
|
|
}
|
|
}
|