IN: concurrency.flags.tests USING: tools.test concurrency.flags concurrency.combinators kernel threads locals accessors calendar ; :: flag-test-1 ( -- ) [let | f [ ] | [ f raise-flag ] "Flag test" spawn drop f lower-flag f value>> ] ; [ f ] [ flag-test-1 ] unit-test :: flag-test-2 ( -- ) [let | f [ ] | [ 1 seconds sleep f raise-flag ] "Flag test" spawn drop f lower-flag f value>> ] ; [ f ] [ flag-test-2 ] unit-test :: flag-test-3 ( -- ) [let | f [ ] | f raise-flag f value>> ] ; [ t ] [ flag-test-3 ] unit-test :: flag-test-4 ( -- ) [let | f [ ] | [ f raise-flag ] "Flag test" spawn drop f wait-for-flag f value>> ] ; [ t ] [ flag-test-4 ] unit-test :: flag-test-5 ( -- ) [let | f [ ] | [ 1 seconds sleep f raise-flag ] "Flag test" spawn drop f wait-for-flag f value>> ] ; [ t ] [ flag-test-5 ] unit-test [ ] [ { 1 2 } [ [ 1 seconds sleep raise-flag ] curry "Flag test" spawn drop ] [ [ wait-for-flag drop ] curry parallel-each ] bi ] unit-test