Adding modding folder with a hacked build.
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
package rle_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
"github.com/inkyblackness/hacked/ss1/serial/rle"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestDecompressEmptyArrayReturnsError(t *testing.T) {
|
||||
err := rle.Decompress(bytes.NewReader(nil), make([]byte, 100))
|
||||
|
||||
assert.NotNil(t, err)
|
||||
}
|
||||
|
||||
func TestDecompress800000IsEndOfStream(t *testing.T) {
|
||||
var result []byte
|
||||
err := rle.Decompress(bytes.NewReader([]byte{0x80, 0x00, 0x00}), result)
|
||||
|
||||
assert.Nil(t, err)
|
||||
}
|
||||
|
||||
func TestDecompress800000AppendsRemainingZeroes(t *testing.T) {
|
||||
result := make([]byte, 10)
|
||||
err := rle.Decompress(bytes.NewReader([]byte{0x80, 0x00, 0x00}), result)
|
||||
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, make([]byte, 10), result)
|
||||
}
|
||||
|
||||
func TestDecompress800000IsConsumedAtEnd(t *testing.T) {
|
||||
var result []byte
|
||||
reader := bytes.NewReader([]byte{0x80, 0x00, 0x00})
|
||||
err := rle.Decompress(reader, result)
|
||||
|
||||
require.Nil(t, err)
|
||||
pos, _ := reader.Seek(0, 1)
|
||||
assert.Equal(t, int64(3), pos)
|
||||
}
|
||||
|
||||
func TestDecompress00WritesNNBytesOfColorZZ(t *testing.T) {
|
||||
result := make([]byte, 5)
|
||||
err := rle.Decompress(bytes.NewReader([]byte{0x00, 0x05, 0xCC, 0x80, 0x00, 0x00}), result)
|
||||
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, []byte{0xCC, 0xCC, 0xCC, 0xCC, 0xCC}, result)
|
||||
}
|
||||
|
||||
func TestDecompress00ReturnsErrorIfZZIsMissing(t *testing.T) {
|
||||
err := rle.Decompress(bytes.NewReader([]byte{0x00, 0x05}), make([]byte, 5))
|
||||
|
||||
assert.NotNil(t, err)
|
||||
}
|
||||
|
||||
func TestDecompress00ReturnsErrorIfNNIsMissing(t *testing.T) {
|
||||
err := rle.Decompress(bytes.NewReader([]byte{0x00}), make([]byte, 5))
|
||||
|
||||
assert.NotNil(t, err)
|
||||
}
|
||||
|
||||
func TestDecompressNNLess80WritesNNFollowingBytes(t *testing.T) {
|
||||
result := make([]byte, 2)
|
||||
err := rle.Decompress(bytes.NewReader([]byte{0x02, 0xAA, 0xBB, 0x80, 0x00, 0x00}), result)
|
||||
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, []byte{0xAA, 0xBB}, result)
|
||||
}
|
||||
|
||||
func TestDecompressNNLess80ReturnsErrorIfEndOfFile(t *testing.T) {
|
||||
err := rle.Decompress(bytes.NewReader([]byte{0x02, 0xAA}), make([]byte, 2))
|
||||
|
||||
assert.NotNil(t, err)
|
||||
}
|
||||
|
||||
func TestDecompress80NNNNSkipsBytes(t *testing.T) {
|
||||
expected := make([]byte, 0x123)
|
||||
result := make([]byte, 0x123)
|
||||
for i := 0; i < len(result); i++ {
|
||||
result[i] = byte(i)
|
||||
}
|
||||
copy(expected, result)
|
||||
err := rle.Decompress(bytes.NewReader([]byte{0x80, 0x23, 0x01, 0x80, 0x00, 0x00}), result)
|
||||
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, expected, result)
|
||||
}
|
||||
|
||||
func TestDecompress80CopiesNNBytes(t *testing.T) {
|
||||
input := bytes.NewBuffer(nil)
|
||||
input.Write([]byte{0x80, 0x04, 0x80})
|
||||
input.Write([]byte{0x01, 0x02, 0x03, 0x04})
|
||||
input.Write([]byte{0x80, 0x00, 0x00})
|
||||
result := make([]byte, 4)
|
||||
err := rle.Decompress(bytes.NewReader(input.Bytes()), result)
|
||||
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, []byte{0x01, 0x02, 0x03, 0x04}, result)
|
||||
}
|
||||
|
||||
func TestDecompress80CopiesNNBytesExtended(t *testing.T) {
|
||||
input := bytes.NewBuffer(nil)
|
||||
expected := make([]byte, 0x3FFF)
|
||||
input.Write([]byte{0x80, 0xFF, 0xBF})
|
||||
input.Write(expected)
|
||||
input.Write([]byte{0x80, 0x00, 0x00})
|
||||
result := make([]byte, len(expected))
|
||||
err := rle.Decompress(bytes.NewReader(input.Bytes()), result)
|
||||
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, expected, result)
|
||||
}
|
||||
|
||||
func TestDecompress80ReturnsErrorForUndefinedCase(t *testing.T) {
|
||||
input := bytes.NewBuffer(nil)
|
||||
input.Write([]byte{0x80, 0x00, 0xC0})
|
||||
input.Write([]byte{0x80, 0x00, 0x00})
|
||||
err := rle.Decompress(bytes.NewReader(input.Bytes()), make([]byte, 1))
|
||||
|
||||
assert.NotNil(t, err)
|
||||
}
|
||||
|
||||
func TestDecompress80WritesNNBytesOfValue(t *testing.T) {
|
||||
input := bytes.NewBuffer(nil)
|
||||
expected := make([]byte, 0x3FFF)
|
||||
for index := range expected {
|
||||
expected[index] = 0xCD
|
||||
}
|
||||
input.Write([]byte{0x80, 0xFF, 0xFF, 0xCD})
|
||||
input.Write([]byte{0x80, 0x00, 0x00})
|
||||
result := make([]byte, len(expected))
|
||||
err := rle.Decompress(bytes.NewReader(input.Bytes()), result)
|
||||
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, expected, result)
|
||||
}
|
||||
|
||||
func TestDecompressNNMore80WritesZeroes(t *testing.T) {
|
||||
result := make([]byte, 3)
|
||||
err := rle.Decompress(bytes.NewReader([]byte{0x83, 0x80, 0x00, 0x00}), result)
|
||||
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, []byte{0, 0, 0}, result)
|
||||
}
|
||||
Reference in New Issue
Block a user