1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-06-02 22:11:10 +00:00
OpenDiablo2/d2game/d2player/inventory_grid_test.go

113 lines
2.4 KiB
Go

package d2player
import (
"testing"
"github.com/stretchr/testify/assert"
)
type TestItem struct {
width int
height int
inventorySlotX int
inventorySlotY int
}
func (t *TestItem) InventoryGridSize() (int, int) {
return t.width, t.height
}
func (t *TestItem) ItemCode() string {
return ""
}
func (t *TestItem) InventoryGridSlot() (int, int) {
return t.inventorySlotX, t.inventorySlotY
}
func (t *TestItem) SetInventoryGridSlot(x int, y int) {
t.inventorySlotX, t.inventorySlotY = x, y
}
func NewTestItem(width int, height int) *TestItem {
return &TestItem{width: width, height: height}
}
func TestItemGrid_Add_Basic(t *testing.T) {
grid := NewItemGrid(2, 2, 0, 0)
tl := NewTestItem(1, 1)
tr := NewTestItem(1, 1)
bl := NewTestItem(1, 1)
br := NewTestItem(1, 1)
added, err := grid.Add(tl, tr, bl, br)
assert.Equal(t, 4, added)
assert.NoError(t, err)
assert.Equal(t, tl, grid.GetSlot(0, 0))
assert.Equal(t, tr, grid.GetSlot(1, 0))
assert.Equal(t, bl, grid.GetSlot(0, 1))
assert.Equal(t, br, grid.GetSlot(1, 1))
}
func TestItemGrid_Add_OverflowBasic(t *testing.T) {
grid := NewItemGrid(2, 2, 0, 0)
tl := NewTestItem(1, 1)
tr := NewTestItem(1, 1)
bl := NewTestItem(1, 1)
br := NewTestItem(1, 1)
o := NewTestItem(1, 1)
added, err := grid.Add(tl, tr, bl, br, o)
assert.Equal(t, 4, added)
assert.Error(t, err)
assert.Equal(t, tl, grid.GetSlot(0, 0))
assert.Equal(t, tr, grid.GetSlot(1, 0))
assert.Equal(t, bl, grid.GetSlot(0, 1))
assert.Equal(t, br, grid.GetSlot(1, 1))
}
func TestItemGrid_Add_LargeItem(t *testing.T) {
grid := NewItemGrid(3, 3, 0, 0)
tl := NewTestItem(1, 1)
o := NewTestItem(2, 2)
added, err := grid.Add(tl, o)
assert.Equal(t, 2, added)
assert.NoError(t, err)
assert.Equal(t, tl, grid.GetSlot(0, 0))
assert.Equal(t, o, grid.GetSlot(1, 0))
assert.Equal(t, o, grid.GetSlot(2, 0))
assert.Nil(t, grid.GetSlot(0, 1))
assert.Equal(t, o, grid.GetSlot(1, 1))
assert.Equal(t, o, grid.GetSlot(2, 1))
assert.Nil(t, grid.GetSlot(0, 2))
assert.Nil(t, grid.GetSlot(1, 2))
assert.Nil(t, grid.GetSlot(2, 2))
}
func TestItemGrid_Add_OverflowLargeItem(t *testing.T) {
grid := NewItemGrid(2, 2, 0, 0)
tl := NewTestItem(1, 1)
o := NewTestItem(2, 2)
added, err := grid.Add(tl, o)
assert.Equal(t, 1, added)
assert.Error(t, err)
assert.Equal(t, tl, grid.GetSlot(0, 0))
assert.Nil(t, grid.GetSlot(1, 0))
assert.Nil(t, grid.GetSlot(0, 1))
assert.Nil(t, grid.GetSlot(1, 1))
}