aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/vlib/sync/channel_3_test.v
diff options
context:
space:
mode:
authorIndrajith K L2022-12-03 17:00:20 +0530
committerIndrajith K L2022-12-03 17:00:20 +0530
commitf5c4671bfbad96bf346bd7e9a21fc4317b4959df (patch)
tree2764fc62da58f2ba8da7ed341643fc359873142f /v_windows/v/vlib/sync/channel_3_test.v
downloadcli-tools-windows-f5c4671bfbad96bf346bd7e9a21fc4317b4959df.tar.gz
cli-tools-windows-f5c4671bfbad96bf346bd7e9a21fc4317b4959df.tar.bz2
cli-tools-windows-f5c4671bfbad96bf346bd7e9a21fc4317b4959df.zip
Adds most of the toolsHEADmaster
Diffstat (limited to 'v_windows/v/vlib/sync/channel_3_test.v')
-rw-r--r--v_windows/v/vlib/sync/channel_3_test.v32
1 files changed, 32 insertions, 0 deletions
diff --git a/v_windows/v/vlib/sync/channel_3_test.v b/v_windows/v/vlib/sync/channel_3_test.v
new file mode 100644
index 0000000..d07276b
--- /dev/null
+++ b/v_windows/v/vlib/sync/channel_3_test.v
@@ -0,0 +1,32 @@
+fn do_rec(ch chan int, resch chan i64) {
+ mut sum := i64(0)
+ for _ in 0 .. 2000 {
+ sum += <-ch
+ }
+ println(sum)
+ resch <- sum
+}
+
+fn do_send(ch chan int) {
+ for i in 0 .. 2000 {
+ ch <- i
+ }
+}
+
+fn test_channel_multi_unbuffered() {
+ ch := chan int{}
+ resch := chan i64{}
+ go do_rec(ch, resch)
+ go do_rec(ch, resch)
+ go do_rec(ch, resch)
+ go do_rec(ch, resch)
+ go do_send(ch)
+ go do_send(ch)
+ go do_send(ch)
+ go do_send(ch)
+ mut sum := i64(0)
+ for _ in 0 .. 4 {
+ sum += <-resch
+ }
+ assert sum == i64(4) * 2000 * (2000 - 1) / 2
+}