package sim import "testing" func TestDebuffEffectsAndProfile(t *testing.T) { if DefaultStats() != (Stats{1, 1, 1, 1, 1}) { t.Fatal("default") } for kind, e := range DebuffEffects { changed := false for i := range e { if e[i] != 1 { changed = true } } if !changed { t.Errorf("%s påverkar inget", kind) } } st := CombinedStats([]Debuff{{SoreFeet, 1}, {Blisters, 1}}) if st[StatSpeed] < 0.67 || st[StatSpeed] > 0.69 || st[StatThirst] != 1 { t.Fatalf("kombinerad fart %.3f", st[StatSpeed]) } var p Profile p.Add(Tired, 1) p.Add(DOMS, 3) p.Add(Tired, 2) // förlängs, inte dubbleras if len(p.Debuffs) != 2 || !p.Has(Tired) || p.Debuffs[0].LevelsLeft != 2 { t.Fatalf("debuffs=%v", p.Debuffs) } if p.Stats()[StatSpeed] != 0.9*0.9 { t.Fatalf("stats=%v", p.Stats()) } if exp := p.EndLevel(); len(exp) != 0 || len(p.Debuffs) != 2 { t.Fatalf("efter bana 1: exp=%v debuffs=%v", exp, p.Debuffs) } if exp := p.EndLevel(); len(exp) != 1 || exp[0] != Tired || len(p.Debuffs) != 1 || p.Debuffs[0].Kind != DOMS { t.Fatalf("efter bana 2: exp=%v debuffs=%v", exp, p.Debuffs) } p.EndLevel() if len(p.Debuffs) != 0 || p.Has(DOMS) { t.Fatal("DOMS ska ha gått ut efter tre banor") } }