Download internal/csync/value_test.go from SaylorTwift/crush: direct link, hf CLI and curl.
- Browser
- Download file 1.54 kB
-
https://huggingface.co/SaylorTwift/crush/resolve/main/internal/csync/value_test.go
- Command line
-
hf download hf://SaylorTwift/crush/internal/csync/value_test.go
-
curl -L -o value_test.go https://huggingface.co/SaylorTwift/crush/resolve/main/internal/csync/value_test.go
1.54 kB
| package csync | |
| import ( | |
| "sync" | |
| "testing" | |
| "github.com/stretchr/testify/require" | |
| ) | |
| func TestValue_GetSet(t *testing.T) { | |
| t.Parallel() | |
| v := NewValue(42) | |
| require.Equal(t, 42, v.Get()) | |
| v.Set(100) | |
| require.Equal(t, 100, v.Get()) | |
| } | |
| func TestValue_ZeroValue(t *testing.T) { | |
| t.Parallel() | |
| v := NewValue("") | |
| require.Equal(t, "", v.Get()) | |
| v.Set("hello") | |
| require.Equal(t, "hello", v.Get()) | |
| } | |
| func TestValue_Struct(t *testing.T) { | |
| t.Parallel() | |
| type config struct { | |
| Name string | |
| Count int | |
| } | |
| v := NewValue(config{Name: "test", Count: 1}) | |
| require.Equal(t, config{Name: "test", Count: 1}, v.Get()) | |
| v.Set(config{Name: "updated", Count: 2}) | |
| require.Equal(t, config{Name: "updated", Count: 2}, v.Get()) | |
| } | |
| func TestValue_PointerPanics(t *testing.T) { | |
| t.Parallel() | |
| require.Panics(t, func() { | |
| NewValue(&struct{}{}) | |
| }) | |
| } | |
| func TestValue_SlicePanics(t *testing.T) { | |
| t.Parallel() | |
| require.Panics(t, func() { | |
| NewValue([]string{"a", "b"}) | |
| }) | |
| } | |
| func TestValue_MapPanics(t *testing.T) { | |
| t.Parallel() | |
| require.Panics(t, func() { | |
| NewValue(map[string]int{"a": 1}) | |
| }) | |
| } | |
| func TestValue_ConcurrentAccess(t *testing.T) { | |
| t.Parallel() | |
| v := NewValue(0) | |
| var wg sync.WaitGroup | |
| // Concurrent writers. | |
| for i := range 100 { | |
| wg.Add(1) | |
| go func(val int) { | |
| defer wg.Done() | |
| v.Set(val) | |
| }(i) | |
| } | |
| // Concurrent readers. | |
| for range 100 { | |
| wg.Go(func() { | |
| _ = v.Get() | |
| }) | |
| } | |
| wg.Wait() | |
| // Value should be one of the set values (0-99). | |
| got := v.Get() | |
| require.GreaterOrEqual(t, got, 0) | |
| require.Less(t, got, 100) | |
| } | |