1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*!
Framework code for making it easier to write test cases.
If you want to create a common test setup that is shared
by multiple test cases, the best way is to define them as
new traits within the [`framework`](crate::framework) module.
The actual operations for bootstrapping the test setup
should *not* be implemented in this module. Instead, they
should be implemented as functions in the
[`bootstrap`](crate::bootstrap) module. This is so that
test writers can still have the option to manually
bootstrap the test setup without getting locked-in to
using the test framework.
We can think of the test framework as being a DSL for
making it easier to write _declarative_ tests. On the
other hand, the [`bootstrap`](crate::bootstrap) module
allows the same test setup to be done in an _imperative_ way.
## Common Test Cases
Here is a short list of common traits that are used for
defining simple test scenarios:
- [`BinaryNodeTest`](binary::node::BinaryNodeTest) -
Test with two full nodes running without setting up the relayer.
- [`BinaryChainTest`](binary::chain::BinaryChainTest) -
Test with two full nodes running with the relayer setup with chain handles.
- [`BinaryChannelTest`](binary::channel::BinaryChannelTest) -
Test with two full nodes running with the relayer setup with chain handles
together with channels that are already connected.
*/