84 lines
3.2 KiB
Go
84 lines
3.2 KiB
Go
package regression
|
|
|
|
import (
|
|
"modify/processor"
|
|
"testing"
|
|
)
|
|
|
|
func TestTalentsMechanicOutOfRange(t *testing.T) {
|
|
given := `<Talent identifier="quickfixer">
|
|
<Icon texture="Content/UI/TalentsIcons2.png" sheetindex="5,2" sheetelementsize="128,128"/>
|
|
<Description tag="talentdescription.quickfixer">
|
|
<Replace tag="[amount]" value="20" color="gui.green"/>
|
|
<Replace tag="[duration]" value="10" color="gui.green"/>
|
|
</Description>
|
|
<Description tag="talentdescription.repairmechanicaldevicestwiceasfast"/>
|
|
<AbilityGroupEffect abilityeffecttype="None">
|
|
<Abilities>
|
|
<CharacterAbilityGiveStat stattype="MechanicalRepairSpeed" value="1"/>
|
|
</Abilities>
|
|
</AbilityGroupEffect>
|
|
<AbilityGroupEffect abilityeffecttype="OnRepairComplete">
|
|
<Conditions>
|
|
<AbilityConditionItem tags="fabricator,door,engine,oxygengenerator,pump,turretammosource,deconstructor,medicalfabricator,ductblock"/>
|
|
</Conditions>
|
|
<Abilities>
|
|
<CharacterAbilityApplyStatusEffects>
|
|
<StatusEffects>
|
|
<StatusEffect type="OnAbility" target="Character" disabledeltatime="true">
|
|
<Affliction identifier="quickfixer" amount="10.0"/>
|
|
</StatusEffect>
|
|
</StatusEffects>
|
|
</CharacterAbilityApplyStatusEffects>
|
|
</Abilities>
|
|
</AbilityGroupEffect>
|
|
</Talent>`
|
|
|
|
actual := `<Talent identifier="quickfixer">
|
|
<Icon texture="Content/UI/TalentsIcons2.png" sheetindex="5,2" sheetelementsize="128,128"/>
|
|
<Description tag="talentdescription.quickfixer">
|
|
<Replace tag="[amount]" value="30" color="gui.green"/>
|
|
<Replace tag="[duration]" value="20" color="gui.green"/>
|
|
</Description>
|
|
<Description tag="talentdescription.repairmechanicaldevicestwiceasfast"/>
|
|
<AbilityGroupEffect abilityeffecttype="None">
|
|
<Abilities>
|
|
<CharacterAbilityGiveStat stattype="MechanicalRepairSpeed" value="2"/>
|
|
</Abilities>
|
|
</AbilityGroupEffect>
|
|
<AbilityGroupEffect abilityeffecttype="OnRepairComplete">
|
|
<Conditions>
|
|
<AbilityConditionItem tags="fabricator,door,engine,oxygengenerator,pump,turretammosource,deconstructor,medicalfabricator,ductblock"/>
|
|
</Conditions>
|
|
<Abilities>
|
|
<CharacterAbilityApplyStatusEffects>
|
|
<StatusEffects>
|
|
<StatusEffect type="OnAbility" target="Character" disabledeltatime="true">
|
|
<Affliction identifier="quickfixer" amount="20"/>
|
|
</StatusEffect>
|
|
</StatusEffects>
|
|
</CharacterAbilityApplyStatusEffects>
|
|
</Abilities>
|
|
</AbilityGroupEffect>
|
|
</Talent>`
|
|
|
|
p := &processor.RegexProcessor{}
|
|
result, mods, matches, err := p.ProcessContent(given, `<Talent identifier="quickfixer">!anyvalue="(?<movementspeed>!num)"!anyvalue="(?<duration>!num)"!anyvalue="(?<repairspeed>!num)"!anyamount="(?<durationv>!num)"`, "movementspeed=round(movementspeed*1.5, 2) duration=round(duration*2, 2) repairspeed=round(repairspeed*2, 2) durationv=duration")
|
|
|
|
if err != nil {
|
|
t.Fatalf("Error processing content: %v", err)
|
|
}
|
|
|
|
if matches != 1 {
|
|
t.Errorf("Expected 1 match, got %d", matches)
|
|
}
|
|
|
|
if mods != 1 {
|
|
t.Errorf("Expected 1 modification, got %d", mods)
|
|
}
|
|
|
|
if result != actual {
|
|
t.Errorf("expected %s, got %s", actual, result)
|
|
}
|
|
}
|