mirror of
https://github.com/status-im/nim-chronos.git
synced 2025-01-18 23:31:13 +00:00
0035f4fa66
* move `Future[T]` into its own module along with some basic accessors * mark all fields internal, exposing only read-only versions under the old names * introduce `init`/`completed`/etc as a way of creating a future (vs newFuture) * introduce `LocationKind` for `SrcLoc` access * don't expose `FutureList` unless future tracking is enabled * introduce `chronosStrictFutureAccess` which controls a number of additional `Defect` being raised when accessing Future fields in the wrong state - this will become true in a future version In this version, `Future[T]` backwards compatibility code remains in `asyncfutures2` meaning that if only `chronos/futures` is imported, only "new" API is available. This branch is a refinement / less invasive / minimal version of https://github.com/status-im/nim-chronos/pull/373.
27 lines
641 B
Nim
27 lines
641 B
Nim
# Chronos Test Suite
|
|
# (c) Copyright 2018-Present
|
|
# Status Research & Development GmbH
|
|
#
|
|
# Licensed under either of
|
|
# Apache License, version 2.0, (LICENSE-APACHEv2)
|
|
# MIT license (LICENSE-MIT)
|
|
|
|
{.used.}
|
|
|
|
import unittest2
|
|
import ../chronos/futures
|
|
|
|
suite "Futures":
|
|
test "Future constructors":
|
|
let
|
|
completed = Future.completed(42)
|
|
failed = Future[int].failed((ref ValueError)(msg: "msg"))
|
|
|
|
check:
|
|
completed.value == 42
|
|
completed.state == FutureState.Completed
|
|
|
|
check:
|
|
failed.error of ValueError
|
|
failed.state == FutureState.Failed
|