Files
questshock/modding/hacked/ss1/resource/Blocks_test.go
T

60 lines
1.5 KiB
Go

package resource_test
import (
"io/ioutil"
"testing"
"github.com/inkyblackness/hacked/ss1/resource"
"github.com/stretchr/testify/assert"
)
func TestBlockCountReturnsZeroForNilInstance(t *testing.T) {
var blocks resource.Blocks
assert.Equal(t, 0, blocks.BlockCount())
}
func TestBlockCountReturnsLengthOfArray(t *testing.T) {
blocks := resource.BlocksFrom(make([][]byte, 3))
assert.Equal(t, 3, blocks.BlockCount())
}
func TestBlockReturnsArrayEntries(t *testing.T) {
blocks := resource.BlocksFrom([][]byte{{0x01}, {0x02, 0x03}})
verifyBlock := func(index int) {
reader, err := blocks.Block(index)
assert.Nil(t, err)
assert.NotNil(t, reader)
}
verifyBlock(0)
verifyBlock(1)
}
func TestBlockReturnsErrorForInvalidIndex(t *testing.T) {
blocks := resource.BlocksFrom([][]byte{{0x01}, {0x02, 0x03}})
verifyError := func(index int) {
_, err := blocks.Block(index)
assert.NotNil(t, err, "Error expected for index ", index)
}
verifyError(-1)
verifyError(2)
verifyError(3)
}
func TestBlockSetting(t *testing.T) {
var blocks resource.Blocks
blocks.Set(make([][]byte, 3))
assert.Equal(t, 3, blocks.BlockCount(), "block count should have been set")
blocks.SetBlock(1, []byte{0x01, 0x02})
block, err := blocks.Block(1)
assert.Nil(t, err, "block should be known")
storedData, err := ioutil.ReadAll(block)
assert.Nil(t, err, "data should be read")
assert.Equal(t, []byte{0x01, 0x02}, storedData, "stored data mismatch")
blocks.SetBlock(5, []byte{0xAA})
assert.Equal(t, 6, blocks.BlockCount(), "block count should have been updated")
}