mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2025-02-02 22:57:04 -05:00
add missing unit tests for ds1 layers
This commit is contained in:
parent
738e1ba7d6
commit
f832c2a809
@ -4,21 +4,99 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Test_ds1Layers_DeleteFloor(t *testing.T) {}
|
func Test_ds1Layers_Delete(t *testing.T) {
|
||||||
|
t.Run("Floors", func(t *testing.T) {
|
||||||
|
ds1LayersDelete(t, floorLayerGroup)
|
||||||
|
})
|
||||||
|
t.Run("Walls", func(t *testing.T) {
|
||||||
|
ds1LayersDelete(t, wallLayerGroup)
|
||||||
|
})
|
||||||
|
t.Run("Shadows", func(t *testing.T) {
|
||||||
|
ds1LayersDelete(t, shadowLayerGroup)
|
||||||
|
})
|
||||||
|
t.Run("Substitution", func(t *testing.T) {
|
||||||
|
ds1LayersDelete(t, substitutionLayerGroup)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func Test_ds1Layers_DeleteShadow(t *testing.T) {}
|
func ds1LayersDelete(t *testing.T, lt layerGroupType) {
|
||||||
|
ds1 := DS1{}
|
||||||
|
|
||||||
func Test_ds1Layers_DeleteSubstitution(t *testing.T) {}
|
ds1.ds1Layers = &ds1Layers{
|
||||||
|
width: 1,
|
||||||
|
height: 1,
|
||||||
|
Floors: make(layerGroup, 1),
|
||||||
|
Walls: make(layerGroup, 1),
|
||||||
|
Shadows: make(layerGroup, 1),
|
||||||
|
Substitutions: make(layerGroup, 1),
|
||||||
|
}
|
||||||
|
|
||||||
func Test_ds1Layers_DeleteWall(t *testing.T) {}
|
var lg layerGroup
|
||||||
|
|
||||||
func Test_ds1Layers_GetFloor(t *testing.T) {}
|
var del func(i int)
|
||||||
|
|
||||||
func Test_ds1Layers_GetShadow(t *testing.T) {}
|
switch lt {
|
||||||
|
case floorLayerGroup:
|
||||||
|
del = func(i int) { ds1.DeleteFloor(0) }
|
||||||
|
case wallLayerGroup:
|
||||||
|
del = func(i int) { ds1.DeleteWall(0) }
|
||||||
|
case shadowLayerGroup:
|
||||||
|
del = func(i int) { ds1.DeleteShadow(0) }
|
||||||
|
case substitutionLayerGroup:
|
||||||
|
del = func(i int) { ds1.DeleteSubstitution(0) }
|
||||||
|
default:
|
||||||
|
t.Fatal("unknown layer type given")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func Test_ds1Layers_GetSubstitution(t *testing.T) {}
|
del(0)
|
||||||
|
|
||||||
func Test_ds1Layers_GetWall(t *testing.T) {}
|
if len(lg) > 0 {
|
||||||
|
t.Errorf("unexpected layer present after deletion")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_ds1Layers_Get(t *testing.T) {
|
||||||
|
t.Run("Floors", func(t *testing.T) {
|
||||||
|
ds1LayersGet(t, floorLayerGroup)
|
||||||
|
})
|
||||||
|
t.Run("Walls", func(t *testing.T) {
|
||||||
|
ds1LayersGet(t, wallLayerGroup)
|
||||||
|
})
|
||||||
|
t.Run("Shadows", func(t *testing.T) {
|
||||||
|
ds1LayersGet(t, shadowLayerGroup)
|
||||||
|
})
|
||||||
|
t.Run("Substitution", func(t *testing.T) {
|
||||||
|
ds1LayersGet(t, substitutionLayerGroup)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func ds1LayersGet(t *testing.T, lt layerGroupType) {
|
||||||
|
ds1 := exampleData()
|
||||||
|
|
||||||
|
var get func(i int) *layer
|
||||||
|
|
||||||
|
switch lt {
|
||||||
|
case floorLayerGroup:
|
||||||
|
get = func(i int) *layer { return ds1.GetFloor(0) }
|
||||||
|
case wallLayerGroup:
|
||||||
|
get = func(i int) *layer { return ds1.GetWall(0) }
|
||||||
|
case shadowLayerGroup:
|
||||||
|
get = func(i int) *layer { return ds1.GetShadow(0) }
|
||||||
|
case substitutionLayerGroup:
|
||||||
|
get = func(i int) *layer { return ds1.GetSubstitution(0) }
|
||||||
|
default:
|
||||||
|
t.Fatal("unknown layer type given")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
layer := get(0)
|
||||||
|
|
||||||
|
// example has nil substitution layer, maybe we need another test
|
||||||
|
if layer == nil && lt != substitutionLayerGroup {
|
||||||
|
t.Errorf("layer expected")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func Test_ds1Layers_Insert(t *testing.T) {
|
func Test_ds1Layers_Insert(t *testing.T) {
|
||||||
t.Run("Floors", func(t *testing.T) {
|
t.Run("Floors", func(t *testing.T) {
|
||||||
@ -85,29 +163,101 @@ func ds1LayersInsert(t *testing.T, lt layerGroupType) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_ds1Layers_PopFloor(t *testing.T) {}
|
func Test_ds1Layers_Pop(t *testing.T) {
|
||||||
|
|
||||||
func Test_ds1Layers_PopShadow(t *testing.T) {}
|
|
||||||
|
|
||||||
func Test_ds1Layers_PopSubstitution(t *testing.T) {}
|
|
||||||
|
|
||||||
func Test_ds1Layers_PopWall(t *testing.T) {}
|
|
||||||
|
|
||||||
func Test_ds1Layers_Push(t *testing.T) {
|
|
||||||
t.Run("Floor", func(t *testing.T) {
|
t.Run("Floor", func(t *testing.T) {
|
||||||
ds1layerTest(floorLayerGroup, t)
|
ds1layerPop(floorLayerGroup, t)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Wall", func(t *testing.T) {
|
t.Run("Wall", func(t *testing.T) {
|
||||||
ds1layerTest(wallLayerGroup, t)
|
ds1layerPop(wallLayerGroup, t)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Shadow", func(t *testing.T) {
|
t.Run("Shadow", func(t *testing.T) {
|
||||||
ds1layerTest(shadowLayerGroup, t)
|
ds1layerPop(shadowLayerGroup, t)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Substitution", func(t *testing.T) {
|
t.Run("Substitution", func(t *testing.T) {
|
||||||
ds1layerTest(substitutionLayerGroup, t)
|
ds1layerPop(substitutionLayerGroup, t)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func ds1layerPop(lt layerGroupType, t *testing.T) {
|
||||||
|
ds1 := exampleData()
|
||||||
|
|
||||||
|
var pop func() *layer
|
||||||
|
|
||||||
|
var numBefore, numAfter int
|
||||||
|
|
||||||
|
switch lt {
|
||||||
|
case floorLayerGroup:
|
||||||
|
numBefore = len(ds1.Floors)
|
||||||
|
pop = func() *layer {
|
||||||
|
l := ds1.PopFloor()
|
||||||
|
numAfter = len(ds1.Floors)
|
||||||
|
|
||||||
|
return l
|
||||||
|
}
|
||||||
|
case wallLayerGroup:
|
||||||
|
numBefore = len(ds1.Walls)
|
||||||
|
pop = func() *layer {
|
||||||
|
l := ds1.PopWall()
|
||||||
|
numAfter = len(ds1.Walls)
|
||||||
|
|
||||||
|
return l
|
||||||
|
}
|
||||||
|
case shadowLayerGroup:
|
||||||
|
numBefore = len(ds1.Shadows)
|
||||||
|
pop = func() *layer {
|
||||||
|
l := ds1.PopShadow()
|
||||||
|
numAfter = len(ds1.Shadows)
|
||||||
|
|
||||||
|
return l
|
||||||
|
}
|
||||||
|
case substitutionLayerGroup:
|
||||||
|
numBefore = len(ds1.Substitutions)
|
||||||
|
pop = func() *layer {
|
||||||
|
l := ds1.PopSubstitution()
|
||||||
|
numAfter = len(ds1.Substitutions)
|
||||||
|
|
||||||
|
return l
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
t.Fatal("unknown layer type given")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
attempts := 10
|
||||||
|
|
||||||
|
for attempts > 0 {
|
||||||
|
attempts--
|
||||||
|
|
||||||
|
l := pop()
|
||||||
|
|
||||||
|
if l == nil && numBefore < numAfter {
|
||||||
|
t.Fatal("popped nil layer, expected layer count to remain the same")
|
||||||
|
}
|
||||||
|
|
||||||
|
if l != nil && numBefore <= numAfter {
|
||||||
|
t.Fatal("popped non-nil, expected layer count to be lower")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_ds1Layers_Push(t *testing.T) {
|
||||||
|
t.Run("Floor", func(t *testing.T) {
|
||||||
|
ds1layerPush(floorLayerGroup, t)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Wall", func(t *testing.T) {
|
||||||
|
ds1layerPush(wallLayerGroup, t)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Shadow", func(t *testing.T) {
|
||||||
|
ds1layerPush(shadowLayerGroup, t)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Substitution", func(t *testing.T) {
|
||||||
|
ds1layerPush(substitutionLayerGroup, t)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,7 +265,7 @@ func Test_ds1Layers_Push(t *testing.T) {
|
|||||||
// when we push a layer, we expect an increment, and when we push a bunch of times,
|
// when we push a layer, we expect an increment, and when we push a bunch of times,
|
||||||
// we expect to never exceed the max. we also expect to be able to retrieve a non-nil
|
// we expect to never exceed the max. we also expect to be able to retrieve a non-nil
|
||||||
// layer after we push.
|
// layer after we push.
|
||||||
func ds1layerTest(lt layerGroupType, t *testing.T) { //nolint:funlen // no biggie
|
func ds1layerPush(lt layerGroupType, t *testing.T) { //nolint:funlen // no biggie
|
||||||
layers := &ds1Layers{}
|
layers := &ds1Layers{}
|
||||||
|
|
||||||
// we need to set up some shit to handle the test in a generic way
|
// we need to set up some shit to handle the test in a generic way
|
||||||
|
@ -178,7 +178,6 @@ func exampleData() *DS1 { //nolint:funlen // not a big deal if this is long func
|
|||||||
version: 17,
|
version: 17,
|
||||||
Act: 1,
|
Act: 1,
|
||||||
SubstitutionType: 0,
|
SubstitutionType: 0,
|
||||||
unknown1: make([]byte, 8),
|
|
||||||
unknown2: 20,
|
unknown2: 20,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user