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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
//! Contract checks for `Vista` drivers (feature `contract`).
//!
//! Every driver runs these against its own fixture, so the promises a
//! [`Vista`](crate::Vista) makes are stated once and held everywhere. A check
//! runs every probe, then panics once, listing every broken rule.
//!
//! - [`check_advertised`]: every advertised read, narrowing and traversal
//! [`Capability`] is backed by a working method. Reads
//! and narrowing must succeed on a valid fixture; traversal and native
//! conditions only must not be refused (a missing join value or a foreign
//! condition type is not a contract break). On a fixture with rows, search,
//! order and operator filters must also change what is read. A condition
//! on a dotted path into a declared column narrows or is refused as
//! `Unimplemented`, never failing with a plain error; whether an
//! accepted one narrows is checked only on a fixture with a row holding a
//! map in a declared column. Every shell that lists must answer the
//! leading window, advertised `Window` or not: when `list` works,
//! `fetch_window(0, n)` returns `min(n, listed)` rows of the set, the first
//! in the set's order when an order is applied. Narrowing probes run on
//! clones, so the vista passed in is left as it was.
//! - [`check_narrowing`]: the narrowing half of `check_advertised` alone.
//! - [`check_advertised_writes`]: the write capabilities, held to the lenient
//! rule. Run it only on a disposable fixture, since a successful probe may
//! store a row.
//! - [`check_clone`]: a clone carries its narrowing, and narrowing a clone
//! leaves the original alone.
//!
//! - [`check_transactions`]: writes through a [`Transaction`](crate::Transaction)
//! land together or not at all, on tables a [`TxFixture`] hands out fresh.
//! Each probe has its own deadline, so a hang names the probe that hung.
//!
//! Each driver's contract test file runs `check_clone` and
//! `check_advertised`, plus `check_advertised_writes` where its fixture is
//! disposable, and `check_transactions` where its backend has transactions.
pub use check_advertised;
pub use check_clone;
pub use check_narrowing;
pub use ;
pub use check_advertised_writes;
use Result;
use crateCapability;
/// Collects the broken rules of one check, so a driver sees all of them in
/// one run.