diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2024-08-22 21:18:57 -0400 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2024-08-22 21:18:57 -0400 |
| commit | 67e43f976e2e07252b786e584e0290a516630df6 (patch) | |
| tree | ec68f96aa6247280b395d0949c08bbc684d00826 /val_test.go | |
| parent | 4f0f92e1a7fc67ec2521e2acb5ba7c60f0d6dcc6 (diff) | |
| download | share-67e43f976e2e07252b786e584e0290a516630df6.zip | |
test Val
Diffstat (limited to 'val_test.go')
| -rw-r--r-- | val_test.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/val_test.go b/val_test.go new file mode 100644 index 0000000..188f8a8 --- /dev/null +++ b/val_test.go @@ -0,0 +1,42 @@ +package share_test + +import ( + "testing" + + "git.samanthony.xyz/share" +) + +// Set value in local goroutine, verify in remote goroutine. +func TestValSetLocal(t *testing.T) { + val := "foo" + sharedVal := share.NewVal[string]() + sharedVal.Set <- val + verifySameVal(sharedVal, val, t) + go func() { + defer sharedVal.Close() + verifySameVal(sharedVal, val, t) + }() +} + +// Set value in remote goroutine, verify in local goroutine. +func TestValSetRemote(t *testing.T) { + val := "foo" + sharedVal := share.NewVal[string]() + defer sharedVal.Close() + done := make(chan bool) + defer close(done) + go func() { + sharedVal.Set <- val + verifySameVal(sharedVal, val, t) + done <- true + }() + verifySameVal(sharedVal, val, t) + <-done +} + +func verifySameVal[T comparable](sv share.Val[T], v T, t *testing.T) { + ret := sv.Get() + if ret != v { + t.Errorf("Val.Get() = %v; expected %v", ret, v) + } +} |