summaryrefslogtreecommitdiffstats
path: root/val_test.go
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-08-22 21:18:57 -0400
committerSam Anthony <sam@samanthony.xyz>2024-08-22 21:18:57 -0400
commit67e43f976e2e07252b786e584e0290a516630df6 (patch)
treeec68f96aa6247280b395d0949c08bbc684d00826 /val_test.go
parent4f0f92e1a7fc67ec2521e2acb5ba7c60f0d6dcc6 (diff)
downloadshare-67e43f976e2e07252b786e584e0290a516630df6.zip
test Val
Diffstat (limited to 'val_test.go')
-rw-r--r--val_test.go42
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)
+ }
+}