1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-06-25 00:25:23 +00:00
OpenDiablo2/d2core/d2stats/diablo2stats/statlist_test.go

111 lines
2.7 KiB
Go

package diablo2stats
import (
"testing"
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2asset"
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2records"
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2stats"
)
// nolint:gochecknoglobals // just a test
var testAssetManager *d2asset.AssetManager
// nolint:gochecknoglobals // just a test
var testStatFactory *StatFactory
func TestSetup_StatList(t *testing.T) {
testAssetManager = &d2asset.AssetManager{}
testAssetManager.Records = &d2records.RecordManager{}
testStatFactory, _ = NewStatFactory(testAssetManager)
testAssetManager.Records.Item.Stats = itemStatCosts
testAssetManager.Records.Character.Stats = charStats
testAssetManager.Records.Skill.Details = skillDetails
testAssetManager.Records.Monster.Stats = monStats
}
func TestDiablo2StatList_Index(t *testing.T) {
strength := testStatFactory.NewStat("strength", 10)
list1 := &Diablo2StatList{stats: []d2stats.Stat{strength}}
if list1.Index(0) != strength {
t.Error("list should contain a stat")
}
}
func TestStatList_Clone(t *testing.T) {
strength := testStatFactory.NewStat("strength", 10)
list1 := &Diablo2StatList{}
list1.Push(strength)
list2 := list1.Clone()
str1 := list1.Index(0).String()
str2 := list2.Index(0).String()
if str1 != str2 {
t.Errorf("Stats of cloned stat list should be identitcal")
}
list2.Index(0).Values()[0].SetInt(0)
if list1.Index(0).String() == list2.Index(0).String() {
t.Errorf("Stats of cloned stat list should be different")
}
}
func TestStatList_Reduce(t *testing.T) {
stats := []d2stats.Stat{
testStatFactory.NewStat("strength", 1),
testStatFactory.NewStat("strength", 1),
testStatFactory.NewStat("strength", 1),
testStatFactory.NewStat("strength", 1),
}
list := testStatFactory.NewStatList(stats...)
reduction := list.ReduceStats()
if len(reduction.Stats()) != 1 || reduction.Index(0).String() != "+4 to Strength" {
t.Errorf("diablo2Stat reduction failed")
}
stats = []d2stats.Stat{
testStatFactory.NewStat("strength", 1),
testStatFactory.NewStat("energy", 1),
testStatFactory.NewStat("dexterity", 1),
testStatFactory.NewStat("vitality", 1),
}
list = testStatFactory.NewStatList(stats...)
reduction = list.ReduceStats()
if len(reduction.Stats()) != 4 {
t.Errorf("diablo2Stat reduction failed")
}
}
func TestStatList_Append(t *testing.T) {
list1 := &Diablo2StatList{
[]d2stats.Stat{
testStatFactory.NewStat("strength", 1),
testStatFactory.NewStat("energy", 1),
testStatFactory.NewStat("dexterity", 1),
testStatFactory.NewStat("vitality", 1),
},
}
list2 := list1.Clone()
list3 := list1.AppendStatList(list2)
if len(list3.Stats()) != 8 {
t.Errorf("diablo2Stat append failed")
}
if len(list3.ReduceStats().Stats()) != 4 {
t.Errorf("diablo2Stat append failed")
}
}