aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/vlib/sync/channel_push_or_2_test.v
diff options
context:
space:
mode:
Diffstat (limited to 'v_windows/v/vlib/sync/channel_push_or_2_test.v')
-rw-r--r--v_windows/v/vlib/sync/channel_push_or_2_test.v25
1 files changed, 25 insertions, 0 deletions
diff --git a/v_windows/v/vlib/sync/channel_push_or_2_test.v b/v_windows/v/vlib/sync/channel_push_or_2_test.v
new file mode 100644
index 0000000..451d9e7
--- /dev/null
+++ b/v_windows/v/vlib/sync/channel_push_or_2_test.v
@@ -0,0 +1,25 @@
+const n = 1000
+
+fn f(ch chan f64) {
+ mut s := 0.0
+ for _ in 0 .. n {
+ s += <-ch
+ }
+ assert s == f64(n * (n + 1) / 2)
+ ch.close()
+}
+
+fn do_send(ch chan f64, val f64) ?f64 {
+ ch <- val ?
+ return val + 1.0
+}
+
+fn test_push_propargate() {
+ ch := chan f64{}
+ go f(ch)
+ mut s := 1.0
+ for {
+ s = do_send(ch, s) or { break }
+ }
+ assert s == f64(n + 1)
+}