assertron 7.1.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -23
- package/{dist-es2015 → cjs}/assert-order/AssertOrder.d.ts +3 -2
- package/cjs/assert-order/AssertOrder.d.ts.map +1 -0
- package/cjs/assert-order/AssertOrder.js +148 -0
- package/cjs/assert-order/InvalidOrder.d.ts +10 -0
- package/cjs/assert-order/InvalidOrder.d.ts.map +1 -0
- package/cjs/assert-order/InvalidOrder.js +44 -0
- package/{dist-es5 → cjs}/assert-order/StateMachine.d.ts +4 -5
- package/cjs/assert-order/StateMachine.d.ts.map +1 -0
- package/cjs/assert-order/StateMachine.js +111 -0
- package/{dist-es2015 → cjs}/assert-order/index.d.ts +1 -0
- package/cjs/assert-order/index.d.ts.map +1 -0
- package/cjs/assert-order/index.js +6 -0
- package/{dist-es2015 → cjs}/assert-order/interfaces.d.ts +1 -0
- package/cjs/assert-order/interfaces.d.ts.map +1 -0
- package/cjs/assert-order/interfaces.js +3 -0
- package/{dist-es2015 → cjs}/assertron/assertron.d.ts +1 -0
- package/cjs/assertron/assertron.d.ts.map +1 -0
- package/cjs/assertron/assertron.js +32 -0
- package/{dist-es2015 → cjs}/assertron/falsy.d.ts +1 -0
- package/cjs/assertron/falsy.d.ts.map +1 -0
- package/cjs/assertron/falsy.js +11 -0
- package/cjs/assertron/index.d.ts +2 -0
- package/cjs/assertron/index.d.ts.map +1 -0
- package/cjs/assertron/index.js +5 -0
- package/{dist-es2015 → cjs}/assertron/pathEqual.d.ts +1 -0
- package/cjs/assertron/pathEqual.d.ts.map +1 -0
- package/cjs/assertron/pathEqual.js +13 -0
- package/{dist-es2015 → cjs}/assertron/rejects.d.ts +1 -0
- package/cjs/assertron/rejects.d.ts.map +1 -0
- package/cjs/assertron/rejects.js +14 -0
- package/{dist-es2015 → cjs}/assertron/repeat.d.ts +9 -0
- package/cjs/assertron/repeat.d.ts.map +1 -0
- package/cjs/assertron/repeat.js +44 -0
- package/{dist-es2015 → cjs}/assertron/resolves.d.ts +1 -0
- package/cjs/assertron/resolves.d.ts.map +1 -0
- package/cjs/assertron/resolves.js +17 -0
- package/cjs/assertron/satisfies.d.ts +10 -0
- package/cjs/assertron/satisfies.d.ts.map +1 -0
- package/cjs/assertron/satisfies.js +19 -0
- package/{dist-es2015 → cjs}/assertron/throws.d.ts +2 -0
- package/cjs/assertron/throws.d.ts.map +1 -0
- package/cjs/assertron/throws.js +62 -0
- package/{dist-es2015 → cjs}/assertron/truthy.d.ts +1 -0
- package/cjs/assertron/truthy.d.ts.map +1 -0
- package/cjs/assertron/truthy.js +11 -0
- package/{dist-es2015 → cjs}/errors/NotSatisfied.d.ts +1 -0
- package/cjs/errors/NotSatisfied.d.ts.map +1 -0
- package/cjs/errors/NotSatisfied.js +28 -0
- package/{dist-es5 → cjs}/errors/index.d.ts +1 -0
- package/cjs/errors/index.d.ts.map +1 -0
- package/cjs/errors/index.js +11 -0
- package/{dist-es2015 → cjs}/errors/interfaces.d.ts +1 -0
- package/cjs/errors/interfaces.d.ts.map +1 -0
- package/cjs/errors/interfaces.js +3 -0
- package/{dist-es2015 → cjs}/errors/notEqualMessage.d.ts +1 -0
- package/cjs/errors/notEqualMessage.d.ts.map +1 -0
- package/cjs/errors/notEqualMessage.js +8 -0
- package/{dist-es2015 → cjs}/errors/notRejectedMessage.d.ts +1 -0
- package/cjs/errors/notRejectedMessage.d.ts.map +1 -0
- package/cjs/errors/notRejectedMessage.js +8 -0
- package/{dist-es2015 → cjs}/errors/notThrownMessage.d.ts +1 -0
- package/cjs/errors/notThrownMessage.d.ts.map +1 -0
- package/cjs/errors/notThrownMessage.js +9 -0
- package/{dist-es2015 → cjs}/errors/returnNotRejectedMessage.d.ts +1 -0
- package/cjs/errors/returnNotRejectedMessage.d.ts.map +1 -0
- package/cjs/errors/returnNotRejectedMessage.js +8 -0
- package/{dist-es2015 → cjs}/errors/unexpectedErrorMessage.d.ts +1 -0
- package/cjs/errors/unexpectedErrorMessage.d.ts.map +1 -0
- package/cjs/errors/unexpectedErrorMessage.js +10 -0
- package/{dist-es2015 → cjs}/errors/util.d.ts +1 -0
- package/cjs/errors/util.d.ts.map +1 -0
- package/cjs/errors/util.js +8 -0
- package/{dist-es5 → cjs}/index.d.ts +1 -0
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js +8 -0
- package/esm/assert-order/AssertOrder.js +132 -0
- package/esm/assert-order/InvalidOrder.js +31 -0
- package/esm/assert-order/StateMachine.js +103 -0
- package/esm/assert-order/index.js +3 -0
- package/esm/assert-order/interfaces.js +2 -0
- package/esm/assertron/assertron.js +28 -0
- package/esm/assertron/falsy.js +6 -0
- package/esm/assertron/index.js +2 -0
- package/esm/assertron/pathEqual.js +8 -0
- package/esm/assertron/rejects.js +9 -0
- package/esm/assertron/repeat.js +35 -0
- package/esm/assertron/resolves.js +12 -0
- package/esm/assertron/satisfies.js +14 -0
- package/esm/assertron/throws.js +57 -0
- package/esm/assertron/truthy.js +6 -0
- package/esm/errors/NotSatisfied.js +23 -0
- package/esm/errors/index.js +8 -0
- package/esm/errors/interfaces.js +2 -0
- package/esm/errors/notEqualMessage.js +4 -0
- package/esm/errors/notRejectedMessage.js +4 -0
- package/esm/errors/notThrownMessage.js +5 -0
- package/esm/errors/returnNotRejectedMessage.js +4 -0
- package/esm/errors/unexpectedErrorMessage.js +6 -0
- package/esm/errors/util.js +4 -0
- package/esm/index.js +5 -0
- package/package.json +63 -24
- package/src/assert-order/AssertOrder.spec.ts +0 -1
- package/src/assert-order/AssertOrder.ts +3 -3
- package/src/assert-order/InvalidOrder.ts +5 -8
- package/src/assert-order/StateMachine.ts +24 -28
- package/src/assert-order/interfaces.ts +5 -5
- package/src/assert-order/internalInterfaces.ts +3 -3
- package/src/assertron/assertron.spec.ts +3 -4
- package/src/assertron/assertron.ts +9 -9
- package/src/assertron/falsy.spec.ts +2 -2
- package/src/assertron/pathEqual.spec.ts +3 -3
- package/src/assertron/pathEqual.ts +3 -3
- package/src/assertron/rejects.spec.ts +7 -7
- package/src/assertron/rejects.ts +4 -6
- package/src/assertron/repeat.spec.ts +27 -1
- package/src/assertron/repeat.ts +27 -10
- package/src/assertron/resolves.spec.ts +4 -4
- package/src/assertron/resolves.ts +7 -10
- package/src/assertron/satisfies.spec.ts +8 -9
- package/src/assertron/satisfies.ts +15 -5
- package/src/assertron/throws.spec.ts +33 -13
- package/src/assertron/throws.ts +8 -5
- package/src/assertron/truthy.spec.ts +3 -3
- package/src/errors/NotSatisfied.ts +1 -1
- package/src/errors/interfaces.ts +1 -1
- package/src/errors/notThrownMessage.ts +3 -1
- package/src/errors/util.ts +2 -2
- package/src/testUtils.ts +17 -13
- package/dist-es2015/assert-order/AssertOrder.js +0 -132
- package/dist-es2015/assert-order/AssertOrder.js.map +0 -1
- package/dist-es2015/assert-order/InvalidOrder.d.ts +0 -8
- package/dist-es2015/assert-order/InvalidOrder.js +0 -31
- package/dist-es2015/assert-order/InvalidOrder.js.map +0 -1
- package/dist-es2015/assert-order/StateMachine.d.ts +0 -23
- package/dist-es2015/assert-order/StateMachine.js +0 -106
- package/dist-es2015/assert-order/StateMachine.js.map +0 -1
- package/dist-es2015/assert-order/index.js +0 -2
- package/dist-es2015/assert-order/index.js.map +0 -1
- package/dist-es2015/assert-order/interfaces.js +0 -1
- package/dist-es2015/assert-order/interfaces.js.map +0 -1
- package/dist-es2015/assertron/assertron.js +0 -28
- package/dist-es2015/assertron/assertron.js.map +0 -1
- package/dist-es2015/assertron/falsy.js +0 -6
- package/dist-es2015/assertron/falsy.js.map +0 -1
- package/dist-es2015/assertron/index.d.ts +0 -1
- package/dist-es2015/assertron/index.js +0 -2
- package/dist-es2015/assertron/index.js.map +0 -1
- package/dist-es2015/assertron/pathEqual.js +0 -8
- package/dist-es2015/assertron/pathEqual.js.map +0 -1
- package/dist-es2015/assertron/rejects.js +0 -10
- package/dist-es2015/assertron/rejects.js.map +0 -1
- package/dist-es2015/assertron/repeat.js +0 -21
- package/dist-es2015/assertron/repeat.js.map +0 -1
- package/dist-es2015/assertron/resolves.js +0 -12
- package/dist-es2015/assertron/resolves.js.map +0 -1
- package/dist-es2015/assertron/satisfies.d.ts +0 -5
- package/dist-es2015/assertron/satisfies.js +0 -14
- package/dist-es2015/assertron/satisfies.js.map +0 -1
- package/dist-es2015/assertron/throws.js +0 -55
- package/dist-es2015/assertron/throws.js.map +0 -1
- package/dist-es2015/assertron/truthy.js +0 -6
- package/dist-es2015/assertron/truthy.js.map +0 -1
- package/dist-es2015/errors/NotSatisfied.js +0 -23
- package/dist-es2015/errors/NotSatisfied.js.map +0 -1
- package/dist-es2015/errors/index.d.ts +0 -7
- package/dist-es2015/errors/index.js +0 -7
- package/dist-es2015/errors/index.js.map +0 -1
- package/dist-es2015/errors/interfaces.js +0 -1
- package/dist-es2015/errors/interfaces.js.map +0 -1
- package/dist-es2015/errors/notEqualMessage.js +0 -4
- package/dist-es2015/errors/notEqualMessage.js.map +0 -1
- package/dist-es2015/errors/notRejectedMessage.js +0 -4
- package/dist-es2015/errors/notRejectedMessage.js.map +0 -1
- package/dist-es2015/errors/notThrownMessage.js +0 -4
- package/dist-es2015/errors/notThrownMessage.js.map +0 -1
- package/dist-es2015/errors/returnNotRejectedMessage.js +0 -4
- package/dist-es2015/errors/returnNotRejectedMessage.js.map +0 -1
- package/dist-es2015/errors/unexpectedErrorMessage.js +0 -6
- package/dist-es2015/errors/unexpectedErrorMessage.js.map +0 -1
- package/dist-es2015/errors/util.js +0 -4
- package/dist-es2015/errors/util.js.map +0 -1
- package/dist-es2015/index.d.ts +0 -4
- package/dist-es2015/index.js +0 -5
- package/dist-es2015/index.js.map +0 -1
- package/dist-es5/assert-order/AssertOrder.d.ts +0 -40
- package/dist-es5/assert-order/AssertOrder.js +0 -147
- package/dist-es5/assert-order/AssertOrder.js.map +0 -1
- package/dist-es5/assert-order/InvalidOrder.d.ts +0 -8
- package/dist-es5/assert-order/InvalidOrder.js +0 -58
- package/dist-es5/assert-order/InvalidOrder.js.map +0 -1
- package/dist-es5/assert-order/StateMachine.js +0 -115
- package/dist-es5/assert-order/StateMachine.js.map +0 -1
- package/dist-es5/assert-order/index.d.ts +0 -2
- package/dist-es5/assert-order/index.js +0 -7
- package/dist-es5/assert-order/index.js.map +0 -1
- package/dist-es5/assert-order/interfaces.d.ts +0 -7
- package/dist-es5/assert-order/interfaces.js +0 -3
- package/dist-es5/assert-order/interfaces.js.map +0 -1
- package/dist-es5/assertron/assertron.d.ts +0 -20
- package/dist-es5/assertron/assertron.js +0 -33
- package/dist-es5/assertron/assertron.js.map +0 -1
- package/dist-es5/assertron/falsy.d.ts +0 -1
- package/dist-es5/assertron/falsy.js +0 -12
- package/dist-es5/assertron/falsy.js.map +0 -1
- package/dist-es5/assertron/index.d.ts +0 -1
- package/dist-es5/assertron/index.js +0 -7
- package/dist-es5/assertron/index.js.map +0 -1
- package/dist-es5/assertron/pathEqual.d.ts +0 -1
- package/dist-es5/assertron/pathEqual.js +0 -14
- package/dist-es5/assertron/pathEqual.js.map +0 -1
- package/dist-es5/assertron/rejects.d.ts +0 -1
- package/dist-es5/assertron/rejects.js +0 -16
- package/dist-es5/assertron/rejects.js.map +0 -1
- package/dist-es5/assertron/repeat.d.ts +0 -5
- package/dist-es5/assertron/repeat.js +0 -27
- package/dist-es5/assertron/repeat.js.map +0 -1
- package/dist-es5/assertron/resolves.d.ts +0 -1
- package/dist-es5/assertron/resolves.js +0 -18
- package/dist-es5/assertron/resolves.js.map +0 -1
- package/dist-es5/assertron/satisfies.d.ts +0 -5
- package/dist-es5/assertron/satisfies.js +0 -20
- package/dist-es5/assertron/satisfies.js.map +0 -1
- package/dist-es5/assertron/throws.d.ts +0 -4
- package/dist-es5/assertron/throws.js +0 -61
- package/dist-es5/assertron/throws.js.map +0 -1
- package/dist-es5/assertron/truthy.d.ts +0 -1
- package/dist-es5/assertron/truthy.js +0 -12
- package/dist-es5/assertron/truthy.js.map +0 -1
- package/dist-es5/errors/NotSatisfied.d.ts +0 -2
- package/dist-es5/errors/NotSatisfied.js +0 -26
- package/dist-es5/errors/NotSatisfied.js.map +0 -1
- package/dist-es5/errors/index.js +0 -12
- package/dist-es5/errors/index.js.map +0 -1
- package/dist-es5/errors/interfaces.d.ts +0 -2
- package/dist-es5/errors/interfaces.js +0 -3
- package/dist-es5/errors/interfaces.js.map +0 -1
- package/dist-es5/errors/notEqualMessage.d.ts +0 -1
- package/dist-es5/errors/notEqualMessage.js +0 -7
- package/dist-es5/errors/notEqualMessage.js.map +0 -1
- package/dist-es5/errors/notRejectedMessage.d.ts +0 -1
- package/dist-es5/errors/notRejectedMessage.js +0 -7
- package/dist-es5/errors/notRejectedMessage.js.map +0 -1
- package/dist-es5/errors/notThrownMessage.d.ts +0 -1
- package/dist-es5/errors/notThrownMessage.js +0 -7
- package/dist-es5/errors/notThrownMessage.js.map +0 -1
- package/dist-es5/errors/returnNotRejectedMessage.d.ts +0 -1
- package/dist-es5/errors/returnNotRejectedMessage.js +0 -7
- package/dist-es5/errors/returnNotRejectedMessage.js.map +0 -1
- package/dist-es5/errors/unexpectedErrorMessage.d.ts +0 -2
- package/dist-es5/errors/unexpectedErrorMessage.js +0 -9
- package/dist-es5/errors/unexpectedErrorMessage.js.map +0 -1
- package/dist-es5/errors/util.d.ts +0 -2
- package/dist-es5/errors/util.js +0 -7
- package/dist-es5/errors/util.js.map +0 -1
- package/dist-es5/index.js +0 -10
- package/dist-es5/index.js.map +0 -1
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { InvalidOrder } from './InvalidOrder';
|
|
2
|
+
import { StateMachine } from './StateMachine';
|
|
3
|
+
// order.atLeast(step, count) // expected to be executed at least `count` times
|
|
4
|
+
// order.atMost(step, count) // exected to be executed at most `count` times
|
|
5
|
+
export class AssertOrder {
|
|
6
|
+
constructor(plan) {
|
|
7
|
+
this.state = new StateMachine(plan);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Gets the current expecting step.
|
|
11
|
+
*/
|
|
12
|
+
get currentStep() {
|
|
13
|
+
return this.state.step;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Asserts the current step is `step`.
|
|
17
|
+
* @param step expected step.
|
|
18
|
+
*/
|
|
19
|
+
is(step) {
|
|
20
|
+
this.assert('is', step);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Asserts the current step is not `step`.
|
|
24
|
+
* @param step not expected step.
|
|
25
|
+
*/
|
|
26
|
+
not(step) {
|
|
27
|
+
if (this.state.isValid(step)) {
|
|
28
|
+
throw new InvalidOrder(this.state.get(), 'not', this.not, step);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Reset to specified step.
|
|
33
|
+
*/
|
|
34
|
+
jump(step) {
|
|
35
|
+
this.state.jump(step);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Move to next step.
|
|
39
|
+
*/
|
|
40
|
+
move() {
|
|
41
|
+
this.state.move();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Asserts the specified step will run once.
|
|
45
|
+
*/
|
|
46
|
+
once(step) {
|
|
47
|
+
this.assert('once', step);
|
|
48
|
+
this.state.move();
|
|
49
|
+
}
|
|
50
|
+
on(step, assert) {
|
|
51
|
+
this.state.on(step, () => {
|
|
52
|
+
assert(step);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
atLeastOnce(step) {
|
|
56
|
+
const nextStep = step + 1;
|
|
57
|
+
if (this.state.step === step) {
|
|
58
|
+
this.state.move();
|
|
59
|
+
return this.state.moveSubStep();
|
|
60
|
+
}
|
|
61
|
+
else if (this.state.step === nextStep && this.state.subStep > 0) {
|
|
62
|
+
return this.state.moveSubStep();
|
|
63
|
+
}
|
|
64
|
+
else
|
|
65
|
+
throw new InvalidOrder(this.state.get(), 'atLeastOnce', this.atLeastOnce, step);
|
|
66
|
+
}
|
|
67
|
+
any(steps) {
|
|
68
|
+
const index = steps.indexOf(this.state.step);
|
|
69
|
+
if (index === -1)
|
|
70
|
+
throw new InvalidOrder(this.state.get(), 'any', this.any, steps);
|
|
71
|
+
this.state.move();
|
|
72
|
+
return steps[index];
|
|
73
|
+
}
|
|
74
|
+
onAny(steps, ...asserts) {
|
|
75
|
+
steps.forEach(step => {
|
|
76
|
+
this.state.on(step, () => {
|
|
77
|
+
let firstError;
|
|
78
|
+
let hasPass = false;
|
|
79
|
+
asserts.forEach(assert => {
|
|
80
|
+
try {
|
|
81
|
+
assert(step);
|
|
82
|
+
hasPass = true;
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
if (!firstError)
|
|
86
|
+
firstError = err;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
if (!hasPass)
|
|
90
|
+
throw firstError;
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
end(timeout) {
|
|
96
|
+
if (timeout) {
|
|
97
|
+
return new Promise(r => {
|
|
98
|
+
setTimeout(r, timeout);
|
|
99
|
+
}).then(() => {
|
|
100
|
+
return this.end();
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
if (!this.state.isMaxStepDefined()) {
|
|
104
|
+
this.state.stopAccepting();
|
|
105
|
+
return this.state.getTimeTaken();
|
|
106
|
+
}
|
|
107
|
+
if (this.state.isAccepting()) {
|
|
108
|
+
throw new InvalidOrder(this.state.get(), 'end', this.end);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exactly(step, times) {
|
|
112
|
+
if (this.state.isNotValid(step))
|
|
113
|
+
throw new InvalidOrder(this.state.get(), 'exactly', this.exactly, step, times);
|
|
114
|
+
if (this.state.maxSubStep === undefined) {
|
|
115
|
+
this.state.maxSubStep = times;
|
|
116
|
+
this.state.minSubStep = times;
|
|
117
|
+
}
|
|
118
|
+
return this.state.moveSubStep();
|
|
119
|
+
}
|
|
120
|
+
wait(step, callback) {
|
|
121
|
+
if (callback)
|
|
122
|
+
this.on(step, callback);
|
|
123
|
+
else
|
|
124
|
+
return new Promise(a => { this.on(step, a); });
|
|
125
|
+
}
|
|
126
|
+
assert(method, step) {
|
|
127
|
+
if (this.state.isNotValid(step)) {
|
|
128
|
+
throw new InvalidOrder(this.state.get(), method, this[method], step);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNzZXJ0T3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXJ0LW9yZGVyL0Fzc2VydE9yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFN0MsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUU1RSxNQUFNLE9BQU8sV0FBVztJQVN0QixZQUFZLElBQWE7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBVkQ7O09BRUc7SUFDSCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFBO0lBQ3hCLENBQUM7SUFPRDs7O09BR0c7SUFDSCxFQUFFLENBQUMsSUFBWTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQUMsSUFBWTtRQUNkLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUIsTUFBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO1NBQ2hFO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxDQUFDLElBQVk7UUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFD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
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import AssertionError from 'assertion-error';
|
|
2
|
+
export class InvalidOrder extends AssertionError {
|
|
3
|
+
constructor(state, method, ssf, ...args) {
|
|
4
|
+
const message = method === 'end' ? getEndMessage(state) : getExpectingMessage(state, method, args);
|
|
5
|
+
super(message, { method, state, args }, ssf);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
function getEndMessage(state) {
|
|
9
|
+
return `Planned for ${state.maxStep} step but expecting step ${state.step} when 'end()' is called`;
|
|
10
|
+
}
|
|
11
|
+
function getExpectingMessage(state, method, args) {
|
|
12
|
+
return `Expecting ${getExpectingCalls(state)}, but received '${method}(${getMethodArgs(args)})'`;
|
|
13
|
+
}
|
|
14
|
+
function getExpectingCalls(state) {
|
|
15
|
+
let message;
|
|
16
|
+
if (state.subStep === 0) {
|
|
17
|
+
const methods = ['is', 'once', 'any'];
|
|
18
|
+
message = methods.map(m => ['any'].indexOf(m) === -1 ?
|
|
19
|
+
`'${m}(${state.step})'` :
|
|
20
|
+
`'${m}([${state.step}])'`).join(', ');
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const methods = ['exactly'];
|
|
24
|
+
message = methods.map(m => `'${m}(${state.step}, ${state.maxSubStep})'`).join(', ');
|
|
25
|
+
}
|
|
26
|
+
return message;
|
|
27
|
+
}
|
|
28
|
+
function getMethodArgs(args) {
|
|
29
|
+
return args.map(a => Array.isArray(a) ? `[${a.join(', ')}]` : a).join(', ');
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW52YWxpZE9yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydC1vcmRlci9JbnZhbGlkT3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUE7QUFHNUMsTUFBTSxPQUFPLFlBQWEsU0FBUSxjQUE2RDtJQUM3RixZQUFZLEtBQVksRUFBRSxNQUFjLEVBQUUsR0FBNEIsRUFBRSxHQUFHLElBQVc7UUFDcEYsTUFBTSxPQUFPLEdBQUcsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ2xHLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQzlDLENBQUM7Q0FDRjtBQUVELFNBQVMsYUFBYSxDQUFDLEtBQVk7SUFDakMsT0FBTyxlQUFlLEtBQUssQ0FBQyxPQUFPLDRCQUE0QixLQUFLLENBQUMsSUFBSSx5QkFBeUIsQ0FBQTtBQUNwRyxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxLQUFZLEVBQUUsTUFBYyxFQUFFLElBQVc7SUFDcEUsT0FBTyxhQUFhLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxtQkFBbUIsTUFBTSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFBO0FBQ2xHLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEtBQVk7SUFDckMsSUFBSSxPQUFlLENBQUE7SUFDbkIsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRTtRQUN2QixNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDckMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FDMUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7S0FDYjtTQUNJO1FBQ0gsTUFBTSxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUMzQixPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0tBQ3BGO0lBQ0QsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLElBQVc7SUFDaEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUM3RSxDQUFDIn0=
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import isNode from 'is-node';
|
|
2
|
+
// istanbul ignore next
|
|
3
|
+
function nodeVersionIsOrAbove(major, minor = 0, patch = 0) {
|
|
4
|
+
// without this, systemJS will complain `process is not defined`
|
|
5
|
+
if (!global.process)
|
|
6
|
+
return false;
|
|
7
|
+
const versionString = process.version.startsWith('v') ? process.version.slice(1) : process.version;
|
|
8
|
+
const [actualMajor, actualMinor, actualPatch] = versionString.split('.').map(s => parseInt(s, 10));
|
|
9
|
+
const checking = major * 1000 * 1000 + minor * 1000 + patch;
|
|
10
|
+
const actual = actualMajor * 1000 * 1000 + actualMinor * 1000 + actualPatch;
|
|
11
|
+
return actual >= checking;
|
|
12
|
+
}
|
|
13
|
+
// istanbul ignore next
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
15
|
+
const performance = isNode && nodeVersionIsOrAbove(8, 5) ? require('perf_hooks').performance : undefined;
|
|
16
|
+
let timeTracker;
|
|
17
|
+
// istanbul ignore else
|
|
18
|
+
if (process && typeof process.hrtime === 'function') {
|
|
19
|
+
let tick;
|
|
20
|
+
timeTracker = {
|
|
21
|
+
start() { tick = process.hrtime(); },
|
|
22
|
+
taken() {
|
|
23
|
+
const [second, nanoSecond] = process.hrtime(tick);
|
|
24
|
+
return second * 1000 + nanoSecond / 1e6;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
else if (performance && typeof performance.now === 'function') {
|
|
29
|
+
let tick;
|
|
30
|
+
timeTracker = {
|
|
31
|
+
start() { tick = performance.now(); },
|
|
32
|
+
taken() { return performance.now() - tick; }
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
let tick;
|
|
37
|
+
timeTracker = {
|
|
38
|
+
start() { tick = new Date().valueOf(); },
|
|
39
|
+
taken() { return new Date().valueOf() - tick; }
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export class StateMachine {
|
|
43
|
+
constructor(maxStep) {
|
|
44
|
+
this.listeners = {};
|
|
45
|
+
this.step = 1;
|
|
46
|
+
this.subStep = 0;
|
|
47
|
+
this.maxStep = maxStep;
|
|
48
|
+
timeTracker.start();
|
|
49
|
+
}
|
|
50
|
+
jump(step) {
|
|
51
|
+
this.step = step;
|
|
52
|
+
this.subStep = 0;
|
|
53
|
+
return this.step;
|
|
54
|
+
}
|
|
55
|
+
move() {
|
|
56
|
+
const listeners = this.listeners[this.step];
|
|
57
|
+
this.step = this.step + 1;
|
|
58
|
+
this.subStep = 0;
|
|
59
|
+
if (listeners) {
|
|
60
|
+
listeners.forEach(l => l());
|
|
61
|
+
}
|
|
62
|
+
return this.step;
|
|
63
|
+
}
|
|
64
|
+
moveSubStep() {
|
|
65
|
+
const subStep = ++this.subStep;
|
|
66
|
+
if (this.maxSubStep === this.subStep)
|
|
67
|
+
this.move();
|
|
68
|
+
return subStep;
|
|
69
|
+
}
|
|
70
|
+
get() {
|
|
71
|
+
const { step, subStep, maxStep, minSubStep, maxSubStep } = this;
|
|
72
|
+
return {
|
|
73
|
+
step,
|
|
74
|
+
maxStep,
|
|
75
|
+
subStep,
|
|
76
|
+
minSubStep,
|
|
77
|
+
maxSubStep
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
on(step, listener) {
|
|
81
|
+
this.listeners[step] = [listener];
|
|
82
|
+
}
|
|
83
|
+
isNotValid(step) {
|
|
84
|
+
return step !== this.step || (this.maxStep !== undefined && this.maxStep < step);
|
|
85
|
+
}
|
|
86
|
+
isValid(step) {
|
|
87
|
+
return step === this.step;
|
|
88
|
+
}
|
|
89
|
+
isMaxStepDefined() {
|
|
90
|
+
return this.maxStep !== undefined;
|
|
91
|
+
}
|
|
92
|
+
stopAccepting() {
|
|
93
|
+
this.maxStep = this.step - 1;
|
|
94
|
+
}
|
|
95
|
+
isAccepting() {
|
|
96
|
+
// istanbul ignore next
|
|
97
|
+
return this.maxStep ? this.maxStep >= this.step : true;
|
|
98
|
+
}
|
|
99
|
+
getTimeTaken() {
|
|
100
|
+
return timeTracker.taken();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhdGVNYWNoaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydC1vcmRlci9TdGF0ZU1hY2hpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sU0FBUyxDQUFBO0FBRzVCLHVCQUF1QjtBQUN2QixTQUFTLG9CQUFvQixDQUFDLEtBQWEsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDO0lBQy9ELGdFQUFnRTtJQUNoRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87UUFDakIsT0FBTyxLQUFLLENBQUE7SUFDZCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUE7SUFDbEcsTUFBTSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDbEcsTUFBTSxRQUFRLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxLQUFLLENBQUE7SUFDM0QsTUFBTSxNQUFNLEdBQUcsV0FBVyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsV0FBVyxHQUFHLElBQUksR0FBRyxXQUFXLENBQUE7SUFDM0UsT0FBTyxNQUFNLElBQUksUUFBUSxDQUFBO0FBQzNCLENBQUM7QUFFRCx1QkFBdUI7QUFDdkIsOERBQThEO0FBQzlELE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxD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
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './AssertOrder';
|
|
2
|
+
export * from './interfaces';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXJ0LW9yZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFBO0FBQzdCLGNBQWMsY0FBYyxDQUFBIn0=
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import AssertionError from 'assertion-error';
|
|
2
|
+
import { falsy } from './falsy';
|
|
3
|
+
import { pathEqual } from './pathEqual';
|
|
4
|
+
import { rejects } from './rejects';
|
|
5
|
+
import { repeat } from './repeat';
|
|
6
|
+
import { resolves } from './resolves';
|
|
7
|
+
import { satisfies } from './satisfies';
|
|
8
|
+
import { throws } from './throws';
|
|
9
|
+
import { truthy } from './truthy';
|
|
10
|
+
export const assertron = {
|
|
11
|
+
false(value) {
|
|
12
|
+
if (value !== false)
|
|
13
|
+
throw new AssertionError(`Expected value to equal false, but received ${value}`, { value }, assertron.false);
|
|
14
|
+
},
|
|
15
|
+
falsy,
|
|
16
|
+
pathEqual,
|
|
17
|
+
rejects,
|
|
18
|
+
repeat,
|
|
19
|
+
resolves,
|
|
20
|
+
satisfies,
|
|
21
|
+
throws,
|
|
22
|
+
true(value) {
|
|
23
|
+
if (value !== true)
|
|
24
|
+
throw new AssertionError(`Expected value to equal true, but received ${value}`, { value }, assertron.true);
|
|
25
|
+
},
|
|
26
|
+
truthy
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0cm9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9hc3NlcnRyb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUE7QUFDNUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixLQUFLLENBQUMsS0FBVTtRQUNkLElBQUksS0FBSyxLQUFLLEtBQUs7WUFDakIsTUFBTSxJQUFJLGNBQWMsQ0FDdEIsK0NBQStDLEtBQUssRUFBRSxFQUN0RCxFQUFFLEtBQUssRUFBRSxFQUNULFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0QixDQUFDO0lBQ0QsS0FBSztJQUNMLFNBQVM7SUFDVCxPQUFPO0lBQ1AsTUFBTTtJQUNOLFFBQVE7SUFDUixTQUFTO0lBQ1QsTUFBTTtJQUNOLElBQUksQ0FBQyxLQUFVO1FBQ2IsSUFBSSxLQUFLLEtBQUssSUFBSTtZQUFFLE1BQU0sSUFBSSxjQUFjLENBQUMsOENBQThDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2hJLENBQUM7SUFDRCxNQUFNO0NBQ1AsQ0FBQSJ9
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import AssertionError from 'assertion-error';
|
|
2
|
+
export function falsy(value) {
|
|
3
|
+
if (value)
|
|
4
|
+
throw new AssertionError(`Expected value to be falsy, but received ${value}`, { value }, falsy);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsc3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXJ0cm9uL2ZhbHN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sY0FBYyxNQUFNLGlCQUFpQixDQUFBO0FBRTVDLE1BQU0sVUFBVSxLQUFLLENBQUMsS0FBVTtJQUM5QixJQUFJLEtBQUs7UUFDUCxNQUFNLElBQUksY0FBYyxDQUN0Qiw0Q0FBNEMsS0FBSyxFQUFFLEVBQ25ELEVBQUUsS0FBSyxFQUFFLEVBQ1QsS0FBSyxDQUNOLENBQUE7QUFDTCxDQUFDIn0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import AssertionError from 'assertion-error';
|
|
2
|
+
import { pathEqual as isPathEqual } from 'path-equal';
|
|
3
|
+
import { notEqualMessage } from '../errors';
|
|
4
|
+
export function pathEqual(actual, expected) {
|
|
5
|
+
if (!isPathEqual(actual, expected))
|
|
6
|
+
throw new AssertionError(notEqualMessage(actual, expected), { actual, expected }, pathEqual);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aEVxdWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9wYXRoRXF1YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUE7QUFDNUMsT0FBTyxFQUFFLFNBQVMsSUFBSSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUUzQyxNQUFNLFVBQVUsU0FBUyxDQUFDLE1BQWMsRUFBRSxRQUFnQjtJQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7UUFDaEMsTUFBTSxJQUFJLGNBQWMsQ0FDdEIsZUFBZSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFDakMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQ3BCLFNBQVMsQ0FBQyxDQUFBO0FBQ2hCLENBQUMifQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { tersify } from 'tersify';
|
|
2
|
+
import AssertionError from 'assertion-error';
|
|
3
|
+
export function rejects(promise) {
|
|
4
|
+
return promise.then(value => {
|
|
5
|
+
throw new AssertionError(`Expected promise to reject, but it resolves with ${typeof value === 'string' ?
|
|
6
|
+
`'${value}'` : tersify(value, { maxLength: Infinity })}`, { value }, rejects);
|
|
7
|
+
}, () => { });
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVqZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hc3NlcnRyb24vcmVqZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2pDLE9BQU8sY0FBYyxNQUFNLGlCQUFpQixDQUFBO0FBRTVDLE1BQU0sVUFBVSxPQUFPLENBQUMsT0FBcUI7SUFDM0MsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUNqQixLQUFLLENBQUMsRUFBRTtRQUNOLE1BQU0sSUFBSSxjQUFjLENBQ3RCLG9EQUFvRCxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQztZQUM3RSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFDMUQsRUFBRSxLQUFLLEVBQUUsRUFDVCxPQUFPLENBQUMsQ0FBQTtJQUNaLENBQUMsRUFDRCxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQ1YsQ0FBQTtBQUNILENBQUMifQ==
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import isPromise from 'is-promise';
|
|
2
|
+
import AssertionError from 'assertion-error';
|
|
3
|
+
/**
|
|
4
|
+
* Repeat the specified function n times and return the last result.
|
|
5
|
+
* If the result is a promise, it will run the function sequentially.
|
|
6
|
+
*/
|
|
7
|
+
export function repeat(fn, times) {
|
|
8
|
+
return repeatRecur(fn, 1, times);
|
|
9
|
+
}
|
|
10
|
+
function repeatRecur(fn, i, times) {
|
|
11
|
+
try {
|
|
12
|
+
const result = fn();
|
|
13
|
+
if (i === times)
|
|
14
|
+
return result;
|
|
15
|
+
if (isPromise(result)) {
|
|
16
|
+
return result.then(() => repeatRecur(fn, i + 1, times), (e) => { throw new FailOnOccurrence(i, e); });
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
return repeatRecur(fn, i + 1, times);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
if (e instanceof FailOnOccurrence)
|
|
24
|
+
throw e;
|
|
25
|
+
throw new FailOnOccurrence(i, e);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export class FailOnOccurrence extends AssertionError {
|
|
29
|
+
constructor(occurrence, error) {
|
|
30
|
+
super(`Failed on ${occurrence} occurrence`);
|
|
31
|
+
this.occurrence = occurrence;
|
|
32
|
+
this.error = error;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9yZXBlYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sY0FBYyxNQUFNLGlCQUFpQixDQUFBO0FBRTVDOzs7R0FHRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUksRUFBZ0MsRUFBRSxLQUFhO0lBQ3ZFLE9BQU8sV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDbEMsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFJLEVBQWdDLEVBQUUsQ0FBUyxFQUFFLEtBQWE7SUFDaEYsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFBO1FBQ25CLElBQUksQ0FBQyxLQUFLLEtBQUs7WUFBRSxPQUFPLE1BQWEsQ0FBQTtRQUVyQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNyQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsRUFDbkMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQ3JDLENBQUE7U0FDVDthQUNJO1lBQ0gsT0FBTyxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7U0FDckM7S0FDRjtJQUNELE9BQU8sQ0FBQyxFQUFFO1FBQ1IsSUFBSSxDQUFDLFlBQVksZ0JBQWdCO1lBQUUsTUFBTSxDQUFDLENBQUE7UUFDMUMsTUFBTSxJQUFJLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtLQUNqQztBQUNILENBQUM7QUFFRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsY0FBc0M7SUFDMUUsWUFBbUIsVUFBa0IsRUFBUyxLQUFVO1FBQ3RELEtBQUssQ0FBQyxhQUFhLFVBQVUsYUFBYSxDQUFDLENBQUE7UUFEMUIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUFTLFVBQUssR0FBTCxLQUFLLENBQUs7SUFFeEQsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { tersify } from 'tersify';
|
|
2
|
+
import AssertionError from 'assertion-error';
|
|
3
|
+
export function resolves(promise) {
|
|
4
|
+
return promise.then(() => { }, error => {
|
|
5
|
+
throw new AssertionError(`Expected promise to resolve, but it rejects with ${typeof error === 'string' ?
|
|
6
|
+
`'${error}'` :
|
|
7
|
+
error instanceof Error ?
|
|
8
|
+
error :
|
|
9
|
+
tersify(error, { maxLength: Infinity })}`, { error }, resolves);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXNzZXJ0cm9uL3Jlc29sdmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDakMsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUE7QUFFNUMsTUFBTSxVQUFVLFFBQVEsQ0FBQyxPQUFxQjtJQUM1QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQ2pCLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFDVCxLQUFLLENBQUMsRUFBRTtRQUNOLE1BQU0sSUFBSSxjQUFjLENBQUMsb0RBQW9ELE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQ3RHLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNkLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQztnQkFDdEIsS0FBSyxDQUFDLENBQUM7Z0JBQ1AsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxRQUFRLENBQ2pFLENBQUE7SUFDSCxDQUFDLENBQ0YsQ0FBQTtBQUNILENBQUMifQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import AssertionError from 'assertion-error';
|
|
2
|
+
import { createSatisfier } from 'satisfier';
|
|
3
|
+
import { notSatisfiedMessage } from '../errors';
|
|
4
|
+
/**
|
|
5
|
+
* Check if `actual` satisfies criteria in `expected`.
|
|
6
|
+
* @param expected All properties can be a value which will be compared to the same property in `actual`, RegExp, or a predicate function that will be used to check against the property.
|
|
7
|
+
*/
|
|
8
|
+
export function satisfies(actual, expected) {
|
|
9
|
+
const diff = createSatisfier(expected).exec(actual);
|
|
10
|
+
if (diff) {
|
|
11
|
+
throw new AssertionError(notSatisfiedMessage(diff), { diff }, satisfies);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F0aXNmaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi9zYXRpc2ZpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUE7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFXL0M7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBUyxNQUFjLEVBQUUsUUFBb0M7SUFDcEYsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLFFBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxJQUFJLElBQUksRUFBRTtRQUNSLE1BQU0sSUFBSSxjQUFjLENBQ3RCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUN6QixFQUFFLElBQUksRUFBRSxFQUNSLFNBQVMsQ0FDVixDQUFBO0tBQ0Y7QUFDSCxDQUFDIn0=
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import AssertionError from 'assertion-error';
|
|
2
|
+
import isPromise from 'is-promise';
|
|
3
|
+
import { notRejectedMessage, notThrownMessage, returnNotRejectedMessage, unexpectedErrorMessage } from '../errors';
|
|
4
|
+
import { isErrorConstructor } from '../errors/util';
|
|
5
|
+
export function throws(value, validator) {
|
|
6
|
+
if (typeof value !== 'function' && !isPromise(value)) {
|
|
7
|
+
throw new AssertionError('`assertron.throws()` must be called with a function or promise.', undefined, throws);
|
|
8
|
+
}
|
|
9
|
+
if (isPromise(value)) {
|
|
10
|
+
return value.then(value => {
|
|
11
|
+
throw new AssertionError(notRejectedMessage(value), { value }, throws);
|
|
12
|
+
}, err => {
|
|
13
|
+
validateError(validator, err);
|
|
14
|
+
return err;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
const { threw, err, result } = tryCatch(value);
|
|
18
|
+
if (threw) {
|
|
19
|
+
validateError(validator, err);
|
|
20
|
+
return err;
|
|
21
|
+
}
|
|
22
|
+
if (isPromise(result)) {
|
|
23
|
+
return result.then(value => {
|
|
24
|
+
throw new AssertionError(returnNotRejectedMessage(value), { value }, throws);
|
|
25
|
+
}, err => {
|
|
26
|
+
validateError(validator, err);
|
|
27
|
+
return err;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
throw new AssertionError(notThrownMessage(result), { value: result }, throws);
|
|
31
|
+
}
|
|
32
|
+
function tryCatch(fn) {
|
|
33
|
+
let result;
|
|
34
|
+
let err;
|
|
35
|
+
let threw = false;
|
|
36
|
+
try {
|
|
37
|
+
result = fn();
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
err = e;
|
|
41
|
+
threw = true;
|
|
42
|
+
}
|
|
43
|
+
return { threw, err, result };
|
|
44
|
+
}
|
|
45
|
+
function validateError(validator, error) {
|
|
46
|
+
if (validator) {
|
|
47
|
+
if (isErrorConstructor(validator)) {
|
|
48
|
+
if (!(error instanceof validator))
|
|
49
|
+
throw new AssertionError(unexpectedErrorMessage(error, validator), { actual: error, expected: validator }, throws);
|
|
50
|
+
}
|
|
51
|
+
else if (!validator(error)) {
|
|
52
|
+
// console.log('msg:', unexpectedErrorMessage(error, validator))
|
|
53
|
+
throw new AssertionError(unexpectedErrorMessage(error, validator), { actual: error, expected: validator }, throws);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi90aHJvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBb0Msa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckosT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNcEQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxLQUF3RCxFQUFFLFNBQWtEO0lBQ2pJLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3BELE1BQU0sSUFBSSxjQUFjLENBQ3RCLGlFQUFpRSxFQUNqRSxTQUFTLEVBQ1QsTUFBTSxDQUNQLENBQUE7S0FDRjtJQUVELElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3BCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FDZixLQUFLLENBQUMsRUFBRTtZQUNOLE1BQU0sSUFBSSxjQUFjLENBQ3RCLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUN6QixFQUFFLEtBQUssRUFBRSxFQUNULE1BQU0sQ0FBQyxDQUFBO1FBQ1gsQ0FBQyxFQUNELEdBQUcsQ0FBQyxFQUFFO1lBQ0osYUFBYSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUM3QixPQUFPLEdBQUcsQ0FBQTtRQUNaLENBQUMsQ0FDRixDQUFBO0tBQ0Y7SUFDRCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDOUMsSUFBSSxLQUFLLEVBQUU7UUFDVCxhQUFhLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQzdCLE9BQU8sR0FBRyxDQUFBO0tBQ1g7SUFDRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNyQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLEtBQUssQ0FBQyxFQUFFO1lBQ04sTUFBTSxJQUFJLGNBQWMsQ0FDdEIsd0JBQXdCLENBQUMsS0FBSyxDQUFDLEVBQy9CLEVBQUUsS0FBSyxFQUFFLEVBQ1QsTUFBTSxDQUFDLENBQUE7UUFDWCxDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUU7WUFDSixhQUFhLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQzdCLE9BQU8sR0FBRyxDQUFBO1FBQ1osQ0FBQyxDQUNGLENBQUE7S0FDRjtJQUVELE1BQU0sSUFBSSxjQUFjLENBQ3RCLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUN4QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFDakIsTUFBTSxDQUNQLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsRUFBYTtJQUM3QixJQUFJLE1BQU0sQ0FBQTtJQUNWLElBQUksR0FBRyxDQUFBO0lBQ1AsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFBO0lBQ2pCLElBQUk7UUFDRixNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUE7S0FDZDtJQUNELE9BQU8sQ0FBQyxFQUFFO1FBQ1IsR0FBRyxHQUFHLENBQUMsQ0FBQTtRQUNQLEtBQUssR0FBRyxJQUFJLENBQUE7S0FDYjtJQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFBO0FBQy9CLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxTQUE2RCxFQUFFLEtBQVU7SUFDOUYsSUFBSSxTQUFTLEVBQUU7UUFDYixJQUFJLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxDQUFDLEtBQUssWUFBWSxTQUFTLENBQUM7Z0JBQy9CLE1BQU0sSUFBSSxjQUFjLENBQ3RCLHNCQUFzQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFDeEMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFDdEMsTUFBTSxDQUNQLENBQUE7U0FDSjthQUNJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUIsZ0VBQWdFO1lBQ2hFLE1BQU0sSUFBSSxjQUFjLENBQ3RCLHNCQUFzQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFDeEMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFDdEMsTUFBTSxDQUNQLENBQUE7U0FDRjtLQUNGO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import AssertionError from 'assertion-error';
|
|
2
|
+
export function truthy(value) {
|
|
3
|
+
if (!value)
|
|
4
|
+
throw new AssertionError(`Expected value to be truthy, but received ${value}`, { value }, truthy);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1dGh5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fzc2VydHJvbi90cnV0aHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsTUFBTSxVQUFVLE1BQU0sQ0FBQyxLQUFVO0lBQy9CLElBQUksQ0FBQyxLQUFLO1FBQUUsTUFBTSxJQUFJLGNBQWMsQ0FDbEMsNkNBQTZDLEtBQUssRUFBRSxFQUNwRCxFQUFFLEtBQUssRUFBRSxFQUNULE1BQU0sQ0FDUCxDQUFBO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { tersify } from 'tersify';
|
|
2
|
+
export function notSatisfiedMessage(entries) {
|
|
3
|
+
return entries.map(e => {
|
|
4
|
+
const path = formatPath(e.path);
|
|
5
|
+
return `Expect ${path} to satisfy ${formatValue(e.expected)}, but received ${formatValue(e.actual)}`;
|
|
6
|
+
}).join('\n');
|
|
7
|
+
}
|
|
8
|
+
function formatPath(entries) {
|
|
9
|
+
if (entries.length === 0)
|
|
10
|
+
return 'actual';
|
|
11
|
+
const nodes = [...entries];
|
|
12
|
+
if (isIndice(nodes[0])) {
|
|
13
|
+
nodes.unshift('actual');
|
|
14
|
+
}
|
|
15
|
+
return nodes.map(n => isIndice(n) ? `[${n}]` : '.' + n).join('').slice(1);
|
|
16
|
+
}
|
|
17
|
+
function isIndice(node) {
|
|
18
|
+
return typeof node === 'number';
|
|
19
|
+
}
|
|
20
|
+
function formatValue(value) {
|
|
21
|
+
return tersify(value);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm90U2F0aXNmaWVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy9Ob3RTYXRpc2ZpZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVsQyxNQUFNLFVBQVUsbUJBQW1CLENBQUMsT0FBZTtJQUNqRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDckIsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMvQixPQUFPLFVBQVUsSUFBSSxlQUFlLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGtCQUFrQixXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUE7SUFDdEcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ2YsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLE9BQTRCO0lBQzlDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ3RCLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQTtJQUMxQixJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUN0QixLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0tBQ3hCO0lBQ0QsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMzRSxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsSUFBcUI7SUFDckMsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUE7QUFDakMsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEtBQVU7SUFDN0IsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDdkIsQ0FBQyJ9
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './interfaces';
|
|
2
|
+
export * from './notEqualMessage';
|
|
3
|
+
export * from './notRejectedMessage';
|
|
4
|
+
export * from './NotSatisfied';
|
|
5
|
+
export * from './notThrownMessage';
|
|
6
|
+
export * from './returnNotRejectedMessage';
|
|
7
|
+
export * from './unexpectedErrorMessage';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXJyb3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBCQUEwQixDQUFDIn0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function notEqualMessage(actual, expected) {
|
|
2
|
+
return `"${actual}" does not equal "${expected}".`;
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90RXF1YWxNZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy9ub3RFcXVhbE1lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUFXLEVBQUUsUUFBYTtJQUN4RCxPQUFPLElBQUksTUFBTSxxQkFBcUIsUUFBUSxJQUFJLENBQUE7QUFDcEQsQ0FBQyJ9
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function notRejectedMessage(value) {
|
|
2
|
+
return `Expected promise to be rejected, but it was resolved instead '${value}'`;
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90UmVqZWN0ZWRNZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy9ub3RSZWplY3RlZE1lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQVU7SUFDM0MsT0FBTyxpRUFBaUUsS0FBSyxHQUFHLENBQUE7QUFDbEYsQ0FBQyJ9
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { tersify } from 'tersify';
|
|
2
|
+
export function notThrownMessage(value) {
|
|
3
|
+
return `Expect function to throw, but it returned '${tersify(value)}' instead.`;
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90VGhyb3duTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvbm90VGhyb3duTWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBRWpDLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFVO0lBQ3pDLE9BQU8sOENBQThDLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFBO0FBQ2pGLENBQUMifQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function returnNotRejectedMessage(value) {
|
|
2
|
+
return `Expected return promise to be rejected, but it was resolved instead '${value}'`;
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJuTm90UmVqZWN0ZWRNZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy9yZXR1cm5Ob3RSZWplY3RlZE1lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQVU7SUFDakQsT0FBTyx3RUFBd0UsS0FBSyxHQUFHLENBQUE7QUFDekYsQ0FBQyJ9
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { tersify } from 'tersify';
|
|
2
|
+
import { isErrorConstructor } from './util';
|
|
3
|
+
export function unexpectedErrorMessage(actual, expected) {
|
|
4
|
+
return `Unexpected error. Expecting '${isErrorConstructor(expected) ? expected.name : tersify(expected)}' but received ${tersify(actual)}`;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5leHBlY3RlZEVycm9yTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvdW5leHBlY3RlZEVycm9yTWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU1QyxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBVyxFQUFFLFFBQWdEO0lBQ2xHLE9BQU8sZ0NBQWdDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQixPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQTtBQUM1SSxDQUFDIn0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function isErrorConstructor(validator) {
|
|
2
|
+
return Object.prototype.isPrototypeOf.call(Error.prototype, validator.prototype);
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsU0FBYztJQUMvQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUNsRixDQUFDIn0=
|
package/esm/index.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { assertron } from './assertron';
|
|
2
|
+
export * from './assertron';
|
|
3
|
+
export * from './assert-order';
|
|
4
|
+
export default assertron;
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV2QyxjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGVBQWUsU0FBUyxDQUFBIn0=
|