60 lines
1.8 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")
}
}