Adding modding folder with a hacked build.
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
package voc_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/inkyblackness/hacked/ss1/content/audio/voc"
|
||||
)
|
||||
|
||||
func TestLoadReturnsErrorOnNil(t *testing.T) {
|
||||
_, err := voc.Load(nil)
|
||||
|
||||
assert.Errorf(t, err, "source is nil")
|
||||
}
|
||||
|
||||
func newHeader() *bytes.Buffer {
|
||||
writer := bytes.NewBufferString(voc.FileHeader)
|
||||
version := uint16(0x010A)
|
||||
headerSize := uint16(0x001A)
|
||||
|
||||
_ = binary.Write(writer, binary.LittleEndian, headerSize)
|
||||
_ = binary.Write(writer, binary.LittleEndian, version)
|
||||
versionValidity := ^version + uint16(0x1234)
|
||||
_ = binary.Write(writer, binary.LittleEndian, versionValidity)
|
||||
|
||||
return writer
|
||||
}
|
||||
|
||||
func TestLoadReturnsErrorOnInvalidVersion(t *testing.T) {
|
||||
writer := newHeader()
|
||||
|
||||
writer.Write([]byte{0x00}) // Terminator
|
||||
|
||||
data := writer.Bytes()
|
||||
data[24] = 0x00
|
||||
source := bytes.NewReader(data)
|
||||
_, err := voc.Load(source)
|
||||
|
||||
assert.Errorf(t, err, "Version validity failed: 0x1129 != 0x1100")
|
||||
}
|
||||
|
||||
func TestLoadReturnsErrorOnValidButEmptyFile(t *testing.T) {
|
||||
writer := newHeader()
|
||||
|
||||
writer.Write([]byte{0x00}) // Terminator
|
||||
|
||||
source := bytes.NewReader(writer.Bytes())
|
||||
_, err := voc.Load(source)
|
||||
|
||||
assert.Errorf(t, err, "No audio found")
|
||||
}
|
||||
|
||||
func TestLoadReturnsSoundDataOnSampleData(t *testing.T) {
|
||||
writer := newHeader()
|
||||
|
||||
writer.Write([]byte{0x01}) // sound data
|
||||
writer.Write([]byte{0x03, 0x00, 0x00}) // block size
|
||||
writer.Write([]byte{0x64, 0x00}) // divisor, sound type
|
||||
writer.Write([]byte{0x80}) // one sample
|
||||
|
||||
writer.Write([]byte{0x00}) // Terminator
|
||||
|
||||
source := bytes.NewReader(writer.Bytes())
|
||||
data, err := voc.Load(source)
|
||||
|
||||
require.Nil(t, err)
|
||||
assert.NotNil(t, data)
|
||||
}
|
||||
|
||||
func TestLoadReturnsSoundDataWithSampleRate(t *testing.T) {
|
||||
writer := newHeader()
|
||||
|
||||
writer.Write([]byte{0x01}) // sound data
|
||||
writer.Write([]byte{0x03, 0x00, 0x00}) // block size
|
||||
writer.Write([]byte{0x9C, 0x00}) // divisor, sound type
|
||||
writer.Write([]byte{0x80}) // one sample
|
||||
|
||||
writer.Write([]byte{0x00}) // Terminator
|
||||
|
||||
source := bytes.NewReader(writer.Bytes())
|
||||
data, err := voc.Load(source)
|
||||
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, float32(10000.0), data.SampleRate)
|
||||
}
|
||||
|
||||
func TestLoadReturnsSoundDataWithSamples(t *testing.T) {
|
||||
writer := newHeader()
|
||||
samples := []byte{0x80, 0xFF, 0x00, 0xC0, 0x40, 0x7F, 0x81}
|
||||
|
||||
writer.Write([]byte{0x01}) // sound data
|
||||
writer.Write([]byte{0x09, 0x00, 0x00}) // block size
|
||||
writer.Write([]byte{0x9C, 0x00}) // divisor, sound type
|
||||
writer.Write(samples) // samples
|
||||
|
||||
writer.Write([]byte{0x00}) // Terminator
|
||||
|
||||
source := bytes.NewReader(writer.Bytes())
|
||||
data, err := voc.Load(source)
|
||||
|
||||
require.Nil(t, err)
|
||||
assert.Equal(t, samples, data.Samples)
|
||||
}
|
||||
Reference in New Issue
Block a user