ci-platforms / darwin arm64 smoke (push) Skipped
ci / build (amd64, linux, ubuntu-24.04) (push) Failing after 12m19s
ci-platforms / darwin amd64 smoke (push) Skipped
ci-platforms / windows amd64 smoke (push) Skipped
github-native / gitea-pending (push) Skipped
github-native / darwin amd64 native (push) Skipped
github-native / linux amd64 native (push) Skipped
github-native / windows amd64 native (push) Skipped
github-native / darwin arm64 native (push) Skipped
github-native / gitea-result (push) Skipped
ci / checks (push) Failing after 23m57s
ci / release (push) Skipped
GitHub / windows amd64 native GitHub-hosted native CI: failure
GitHub / darwin arm64 native GitHub-hosted native CI: failure
GitHub / darwin amd64 native GitHub-hosted native CI: failure
GitHub / linux amd64 native GitHub-hosted native CI: success
40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
package particles
|
|
|
|
import (
|
|
"reflect"
|
|
"slices"
|
|
"testing"
|
|
)
|
|
|
|
// FullClone must be revisited if a mutable reference is added to the emitter.
|
|
func TestParticleSnapshotCloneCoversMutableFields(t *testing.T) {
|
|
var found []string
|
|
var walk func(reflect.Type, string)
|
|
walk = func(typ reflect.Type, name string) {
|
|
switch typ.Kind() {
|
|
case reflect.Slice:
|
|
found = append(found, name)
|
|
walk(typ.Elem(), name+"[]")
|
|
case reflect.Array:
|
|
walk(typ.Elem(), name+"[]")
|
|
case reflect.Struct:
|
|
for i := 0; i < typ.NumField(); i++ {
|
|
f := typ.Field(i)
|
|
field := f.Name
|
|
if name != "" {
|
|
field = name + "." + field
|
|
}
|
|
walk(f.Type, field)
|
|
}
|
|
case reflect.Map, reflect.Pointer, reflect.Interface, reflect.Chan, reflect.Func, reflect.UnsafePointer:
|
|
found = append(found, name+" ("+typ.Kind().String()+")")
|
|
}
|
|
}
|
|
walk(reflect.TypeFor[ParticleSystem2D](), "")
|
|
slices.Sort(found)
|
|
want := []string{"AlphaOverLife.Keys", "Bursts", "ColorOverLife", "Frames", "SizeOverLife.Keys", "VelocityOverLife.Keys"}
|
|
if !slices.Equal(found, want) {
|
|
t.Fatalf("mutable emitter fields changed: %v; update cloneParticleSystem and the snapshot tests", found)
|
|
}
|
|
}
|