- Removed the `--disable-hiprt` flag from the runner command, simplifying the rendering options for users. - Updated the `jiggablend-runner` script and README to reflect the removal of the HIPRT control flag, enhancing clarity in usage instructions. - Enhanced the installation script to provide clearer examples for running the jiggablend manager and runner, improving user experience during setup. - Implemented a more robust GPU backend detection mechanism, allowing for better compatibility with various hardware configurations.
97 lines
2.1 KiB
Go
97 lines
2.1 KiB
Go
package blendfile
|
|
|
|
import (
|
|
"bytes"
|
|
"compress/gzip"
|
|
"testing"
|
|
)
|
|
|
|
func makeBlendHeader(major, minor int) []byte {
|
|
header := make([]byte, 12)
|
|
copy(header[:7], "BLENDER")
|
|
header[7] = '-'
|
|
header[8] = 'v'
|
|
header[9] = byte('0' + major)
|
|
header[10] = byte('0' + minor/10)
|
|
header[11] = byte('0' + minor%10)
|
|
return header
|
|
}
|
|
|
|
func TestParseVersionFromReader_Uncompressed(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
major int
|
|
minor int
|
|
wantMajor int
|
|
wantMinor int
|
|
}{
|
|
{"Blender 4.02", 4, 2, 4, 2},
|
|
{"Blender 3.06", 3, 6, 3, 6},
|
|
{"Blender 2.79", 2, 79, 2, 79},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
header := makeBlendHeader(tt.major, tt.minor)
|
|
r := bytes.NewReader(header)
|
|
|
|
major, minor, err := ParseVersionFromReader(r)
|
|
if err != nil {
|
|
t.Fatalf("ParseVersionFromReader: %v", err)
|
|
}
|
|
if major != tt.wantMajor || minor != tt.wantMinor {
|
|
t.Errorf("got %d.%d, want %d.%d", major, minor, tt.wantMajor, tt.wantMinor)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestParseVersionFromReader_GzipCompressed(t *testing.T) {
|
|
header := makeBlendHeader(4, 2)
|
|
// Pad to ensure gzip has enough data for a full read
|
|
data := make([]byte, 128)
|
|
copy(data, header)
|
|
|
|
var buf bytes.Buffer
|
|
gz := gzip.NewWriter(&buf)
|
|
gz.Write(data)
|
|
gz.Close()
|
|
|
|
r := bytes.NewReader(buf.Bytes())
|
|
major, minor, err := ParseVersionFromReader(r)
|
|
if err != nil {
|
|
t.Fatalf("ParseVersionFromReader (gzip): %v", err)
|
|
}
|
|
if major != 4 || minor != 2 {
|
|
t.Errorf("got %d.%d, want 4.2", major, minor)
|
|
}
|
|
}
|
|
|
|
func TestParseVersionFromReader_InvalidMagic(t *testing.T) {
|
|
data := []byte("NOT_BLEND_DATA_HERE")
|
|
r := bytes.NewReader(data)
|
|
|
|
_, _, err := ParseVersionFromReader(r)
|
|
if err == nil {
|
|
t.Fatal("expected error for invalid magic, got nil")
|
|
}
|
|
}
|
|
|
|
func TestParseVersionFromReader_TooShort(t *testing.T) {
|
|
data := []byte("SHORT")
|
|
r := bytes.NewReader(data)
|
|
|
|
_, _, err := ParseVersionFromReader(r)
|
|
if err == nil {
|
|
t.Fatal("expected error for short data, got nil")
|
|
}
|
|
}
|
|
|
|
func TestVersionString(t *testing.T) {
|
|
got := VersionString(4, 2)
|
|
want := "4.2"
|
|
if got != want {
|
|
t.Errorf("VersionString(4, 2) = %q, want %q", got, want)
|
|
}
|
|
}
|