|
1 | 1 | (ns clojure.test-clojure.clr.async.task |
2 | 2 | (:require [clojure.test :refer [deftest is testing]] |
3 | | - [clojure.clr.async.task :as t]) |
| 3 | + [clojure.clr.async.task.alpha :as t]) |
4 | 4 | (:import [System.Threading.Tasks Task])) |
5 | 5 |
|
6 | 6 | (set! *warn-on-reflection* true) |
|
46 | 46 | (is (t/task? task)) |
47 | 47 | (is (= 6 (t/result task)))))) |
48 | 48 |
|
49 | | -;; ── Async tests (require .NET 11+ runtime async) ───────────────────── |
| 49 | +;; ── wait-XXX tests ───────────────────── |
50 | 50 |
|
51 | | -(deftest await-all-returns-results |
| 51 | +(deftest wait-all-results-returns-results |
52 | 52 | (when async-supported? |
53 | | - (testing "await-all returns array of results from multiple tasks" |
54 | | - (let [result (t/result |
55 | | - (t/async |
56 | | - (vec (t/await (t/await-all |
57 | | - [(t/->task "a") |
58 | | - (t/->task "b") |
59 | | - (t/->task "c")])))))] |
| 53 | + (testing "wait-all-results returns array of results from multiple tasks" |
| 54 | + (let [result (vec (t/wait-all-results [(t/->task "a") |
| 55 | + (t/->task "b") |
| 56 | + (t/->task "c")]))] |
60 | 57 | (is (= ["a" "b" "c"] result)))))) |
61 | 58 |
|
62 | | -(deftest await-all-with-async-work |
63 | | - (when async-supported? |
64 | | - (testing "await-all with tasks that actually do work" |
65 | | - (let [result (t/result |
66 | | - (t/async |
67 | | - (let [tasks [(t/run (fn [] (System.Threading.Thread/Sleep 50) "a")) |
68 | | - (t/run (fn [] (System.Threading.Thread/Sleep 50) "b")) |
69 | | - (t/run (fn [] (System.Threading.Thread/Sleep 50) "c"))] |
70 | | - results (t/await (t/await-all tasks))] |
71 | | - (vec results))))] |
72 | | - (is (= ["a" "b" "c"] result)))))) |
| 59 | +(deftest wait-all-runs-all-tasks-to-completion |
| 60 | + (when async-supported? |
| 61 | + (testing "wait-all runs all tasks to completion" |
| 62 | + (let [tasks [(t/delay-task 100) |
| 63 | + (t/delay-task 200) |
| 64 | + (t/delay-task 300)]] |
| 65 | + (t/wait-all tasks) |
| 66 | + (is (every? #(.IsCompleted ^Task %) tasks)))))) |
73 | 67 |
|
74 | | -(deftest await-any-returns-first |
| 68 | + |
| 69 | +(deftest wait-any-returns-first-task |
75 | 70 | (when async-supported? |
76 | | - (testing "await-any returns the first completed task" |
77 | | - (let [result (t/result |
78 | | - (t/async |
79 | | - (let [fast (t/->task "fast") |
80 | | - slow (t/delay-task 5000) |
81 | | - ^Task winner (t/await (t/await-any [fast slow]))] |
82 | | - (t/result winner))))] |
83 | | - (is (= "fast" result)))))) |
| 71 | + (testing "wait-any returns the first completed task" |
| 72 | + (let [fast (t/->task "fast") |
| 73 | + slow (t/delay-task 5000) |
| 74 | + ^Task winner (t/wait-any [fast slow])] |
| 75 | + (is (= fast winner)))))) |
84 | 76 |
|
85 | 77 | (deftest delay-task-waits |
86 | 78 | (when async-supported? |
|
105 | 97 | (deftest await-all-mixed-task-types |
106 | 98 | (when async-supported? |
107 | 99 | (testing "await-all works with Task<string> and other Task<T> types" |
108 | | - (let [result (t/result |
109 | | - (t/async |
110 | | - (vec (t/await (t/await-all |
111 | | - [(Task/FromResult (type-args String) "a") |
112 | | - (t/->task "b") |
113 | | - (Task/FromResult (type-args String) "c")])))))] |
| 100 | + (let [result (t/wait-all-results |
| 101 | + [(Task/FromResult (type-args String) "a") |
| 102 | + (t/->task "b") |
| 103 | + (Task/FromResult (type-args String) "c")])] |
114 | 104 | (is (= ["a" "b" "c"] result)))))) |
115 | 105 |
|
116 | 106 | (deftest result-blocks-until-complete |
|
0 commit comments