Adding modding folder with a hacked build.

This commit is contained in:
ml
2026-09-26 08:53:08 +02:00
parent cdb960dc71
commit c91080aba7
755 changed files with 50424 additions and 0 deletions
@@ -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)
}