Files
sanspie a46347e2c6
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
editor: add art studio and stage 12.5 workflows
2026-11-08 18:47:57 +03:00

61 lines
1.3 KiB
Go

package playground
import (
"io/fs"
"sync"
"testing"
)
func TestMemoryUserConcurrentReadWriteAndList(t *testing.T) {
m := &memUser{files: map[string][]byte{}}
start := make(chan struct{})
var wg sync.WaitGroup
for worker := range 4 {
wg.Go(func() {
<-start
for i := range 1000 {
if worker == 0 {
if err := m.WriteFile("saves/slot", []byte{byte(i)}); err != nil {
t.Error(err)
}
if i%2 == 0 {
if err := m.Remove("saves/slot"); err != nil {
t.Error(err)
}
}
} else {
if _, err := m.ReadFile("saves/slot"); err != nil && err != fs.ErrNotExist {
t.Error(err)
}
if _, err := m.Stat("saves/slot"); err != nil && err != fs.ErrNotExist {
t.Error(err)
}
if _, err := m.List("saves"); err != nil {
t.Error(err)
}
}
}
})
}
close(start)
wg.Wait()
}
func TestMemoryUserCopiesBytes(t *testing.T) {
m := &memUser{files: map[string][]byte{}}
data := []byte("save")
if err := m.WriteFile("saves/slot", data); err != nil {
t.Fatal(err)
}
data[0] = 'X'
read, err := m.ReadFile("saves/slot")
if err != nil || string(read) != "save" {
t.Fatalf("write did not retain a copy: %q %v", read, err)
}
read[0] = 'Y'
read, err = m.ReadFile("saves/slot")
if err != nil || string(read) != "save" {
t.Fatalf("read exposed the stored bytes: %q %v", read, err)
}
}