1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-09-01 08:54:20 -04:00
OpenDiablo2/d2player/inventory_grid_test.go
nicholas-eden d6769975cd Initial inventory handling (#270)
Add struct to display inventory panel.
Add struct to handle inventory and merchant grids.

Hook up `i` key to toggle inventory panel.
2019-12-28 23:32:53 -05:00

112 lines
2.4 KiB
Go

package d2player
import (
"github.com/stretchr/testify/assert"
"testing"
)
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))
}