@plugjs/expect5 0.4.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.
Files changed (90) hide show
  1. package/README.md +7 -0
  2. package/dist/cli.d.mts +2 -0
  3. package/dist/cli.mjs +96 -0
  4. package/dist/cli.mjs.map +6 -0
  5. package/dist/execution/executable.cjs +299 -0
  6. package/dist/execution/executable.cjs.map +6 -0
  7. package/dist/execution/executable.d.ts +87 -0
  8. package/dist/execution/executable.mjs +260 -0
  9. package/dist/execution/executable.mjs.map +6 -0
  10. package/dist/execution/executor.cjs +125 -0
  11. package/dist/execution/executor.cjs.map +6 -0
  12. package/dist/execution/executor.d.ts +35 -0
  13. package/dist/execution/executor.mjs +90 -0
  14. package/dist/execution/executor.mjs.map +6 -0
  15. package/dist/execution/setup.cjs +127 -0
  16. package/dist/execution/setup.cjs.map +6 -0
  17. package/dist/execution/setup.d.ts +31 -0
  18. package/dist/execution/setup.mjs +87 -0
  19. package/dist/execution/setup.mjs.map +6 -0
  20. package/dist/expectation/basic.cjs +216 -0
  21. package/dist/expectation/basic.cjs.map +6 -0
  22. package/dist/expectation/basic.d.ts +47 -0
  23. package/dist/expectation/basic.mjs +177 -0
  24. package/dist/expectation/basic.mjs.map +6 -0
  25. package/dist/expectation/diff.cjs +253 -0
  26. package/dist/expectation/diff.cjs.map +6 -0
  27. package/dist/expectation/diff.d.ts +27 -0
  28. package/dist/expectation/diff.mjs +228 -0
  29. package/dist/expectation/diff.mjs.map +6 -0
  30. package/dist/expectation/expect.cjs +211 -0
  31. package/dist/expectation/expect.cjs.map +6 -0
  32. package/dist/expectation/expect.d.ts +140 -0
  33. package/dist/expectation/expect.mjs +219 -0
  34. package/dist/expectation/expect.mjs.map +6 -0
  35. package/dist/expectation/include.cjs +187 -0
  36. package/dist/expectation/include.cjs.map +6 -0
  37. package/dist/expectation/include.d.ts +10 -0
  38. package/dist/expectation/include.mjs +158 -0
  39. package/dist/expectation/include.mjs.map +6 -0
  40. package/dist/expectation/print.cjs +281 -0
  41. package/dist/expectation/print.cjs.map +6 -0
  42. package/dist/expectation/print.d.ts +4 -0
  43. package/dist/expectation/print.mjs +256 -0
  44. package/dist/expectation/print.mjs.map +6 -0
  45. package/dist/expectation/throwing.cjs +58 -0
  46. package/dist/expectation/throwing.cjs.map +6 -0
  47. package/dist/expectation/throwing.d.ts +8 -0
  48. package/dist/expectation/throwing.mjs +32 -0
  49. package/dist/expectation/throwing.mjs.map +6 -0
  50. package/dist/expectation/types.cjs +212 -0
  51. package/dist/expectation/types.cjs.map +6 -0
  52. package/dist/expectation/types.d.ts +57 -0
  53. package/dist/expectation/types.mjs +178 -0
  54. package/dist/expectation/types.mjs.map +6 -0
  55. package/dist/expectation/void.cjs +111 -0
  56. package/dist/expectation/void.cjs.map +6 -0
  57. package/dist/expectation/void.d.ts +39 -0
  58. package/dist/expectation/void.mjs +77 -0
  59. package/dist/expectation/void.mjs.map +6 -0
  60. package/dist/globals.cjs +2 -0
  61. package/dist/globals.cjs.map +6 -0
  62. package/dist/globals.d.ts +23 -0
  63. package/dist/globals.mjs +1 -0
  64. package/dist/globals.mjs.map +6 -0
  65. package/dist/index.cjs +66 -0
  66. package/dist/index.cjs.map +6 -0
  67. package/dist/index.d.ts +29 -0
  68. package/dist/index.mjs +41 -0
  69. package/dist/index.mjs.map +6 -0
  70. package/dist/test.cjs +229 -0
  71. package/dist/test.cjs.map +6 -0
  72. package/dist/test.d.ts +9 -0
  73. package/dist/test.mjs +194 -0
  74. package/dist/test.mjs.map +6 -0
  75. package/package.json +57 -0
  76. package/src/cli.mts +122 -0
  77. package/src/execution/executable.ts +364 -0
  78. package/src/execution/executor.ts +146 -0
  79. package/src/execution/setup.ts +108 -0
  80. package/src/expectation/basic.ts +209 -0
  81. package/src/expectation/diff.ts +445 -0
  82. package/src/expectation/expect.ts +401 -0
  83. package/src/expectation/include.ts +184 -0
  84. package/src/expectation/print.ts +386 -0
  85. package/src/expectation/throwing.ts +45 -0
  86. package/src/expectation/types.ts +263 -0
  87. package/src/expectation/void.ts +80 -0
  88. package/src/globals.ts +30 -0
  89. package/src/index.ts +54 -0
  90. package/src/test.ts +239 -0
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // expectation/expect.ts
21
+ var expect_exports = {};
22
+ __export(expect_exports, {
23
+ expect: () => expect
24
+ });
25
+ module.exports = __toCommonJS(expect_exports);
26
+ var import_types = require("./types.cjs");
27
+ var import_basic = require("./basic.cjs");
28
+ var import_include = require("./include.cjs");
29
+ var import_throwing = require("./throwing.cjs");
30
+ var import_void = require("./void.cjs");
31
+ var expectations = {
32
+ // basic expectations
33
+ toBeA: new import_basic.ToBeA(),
34
+ toBeCloseTo: new import_basic.ToBeCloseTo(),
35
+ toBeError: new import_basic.ToBeError(),
36
+ toBeGreaterThan: new import_basic.ToBeGreaterThan(),
37
+ toBeGreaterThanOrEqual: new import_basic.ToBeGreaterThanOrEqual(),
38
+ toBeInstanceOf: new import_basic.ToBeInstanceOf(),
39
+ toBeLessThan: new import_basic.ToBeLessThan(),
40
+ toBeLessThanOrEqual: new import_basic.ToBeLessThanOrEqual(),
41
+ toBeWithinRange: new import_basic.ToBeWithinRange(),
42
+ toEqual: new import_basic.ToEqual(),
43
+ toHaveLength: new import_basic.ToHaveLength(),
44
+ toHaveProperty: new import_basic.ToHaveProperty(),
45
+ toHaveSize: new import_basic.ToHaveSize(),
46
+ toMatch: new import_basic.ToMatch(),
47
+ toStrictlyEqual: new import_basic.ToStrictlyEqual(),
48
+ // include
49
+ toInclude: new import_include.ToInclude(),
50
+ toMatchContents: new import_include.ToMatchContents(),
51
+ // throwing
52
+ toThrow: new import_throwing.ToThrow(),
53
+ toThrowError: new import_throwing.ToThrowError(),
54
+ // void expectations
55
+ toBeDefined: new import_void.ToBeDefined(),
56
+ toBeFalse: new import_void.ToBeFalse(),
57
+ toBeFalsy: new import_void.ToBeFalsy(),
58
+ toBeNaN: new import_void.ToBeNaN(),
59
+ toBeNegativeInfinity: new import_void.ToBeNegativeInfinity(),
60
+ toBeNull: new import_void.ToBeNull(),
61
+ toBePositiveInfinity: new import_void.ToBePositiveInfinity(),
62
+ toBeTrue: new import_void.ToBeTrue(),
63
+ toBeTruthy: new import_void.ToBeTruthy(),
64
+ toBeUndefined: new import_void.ToBeUndefined()
65
+ };
66
+ var ExpectationsImpl = class {
67
+ constructor(value, _positiveExpectations) {
68
+ this.value = value;
69
+ if (_positiveExpectations) {
70
+ this._negative = true;
71
+ this._positiveExpectations = _positiveExpectations;
72
+ this._negativeExpectations = this;
73
+ } else {
74
+ this._negative = false;
75
+ this._positiveExpectations = this;
76
+ this._negativeExpectations = new ExpectationsImpl(value, this);
77
+ }
78
+ }
79
+ _positiveExpectations;
80
+ _negativeExpectations;
81
+ _negative;
82
+ /* == NEW EXPECTATIONS ==================================================== */
83
+ forProperty(prop) {
84
+ this.toBeDefined();
85
+ const child = new ExpectationsImpl(this.value[prop]);
86
+ child.parent = { context: this, prop };
87
+ return child;
88
+ }
89
+ forValue(value) {
90
+ return new ExpectationsImpl(value);
91
+ }
92
+ /* == NEGATION ============================================================ */
93
+ negated(negative) {
94
+ return negative ? this._negativeExpectations : this._positiveExpectations;
95
+ }
96
+ get not() {
97
+ return this._negative ? this._positiveExpectations : this._negativeExpectations;
98
+ }
99
+ /* == ASYNCHRONOUS EXPECTATIONS =========================================== */
100
+ toBeResolved(assert) {
101
+ return Promise.resolve().then(() => {
102
+ this._positiveExpectations.toHaveProperty("then", (a) => a.toBeA("function"));
103
+ return Promise.allSettled([Promise.resolve(this.value)]);
104
+ }).then(([settlement]) => {
105
+ if (settlement.status === "fulfilled") {
106
+ if (this._negative)
107
+ throw new import_types.ExpectationError(this, true, "to be resolved");
108
+ if (assert)
109
+ assert(new ExpectationsImpl(settlement.value));
110
+ } else if (!this._negative) {
111
+ throw new import_types.ExpectationError(this, false, "to be resolved");
112
+ }
113
+ return this._positiveExpectations;
114
+ });
115
+ }
116
+ toBeRejected(assert) {
117
+ return Promise.resolve().then(() => {
118
+ this._positiveExpectations.toHaveProperty("then", (a) => a.toBeA("function"));
119
+ return Promise.allSettled([Promise.resolve(this.value)]);
120
+ }).then(([settlement]) => {
121
+ if (settlement.status === "rejected") {
122
+ if (this._negative)
123
+ throw new import_types.ExpectationError(this, true, "to be rejected");
124
+ if (assert)
125
+ assert(new ExpectationsImpl(settlement.reason));
126
+ } else if (!this._negative) {
127
+ throw new import_types.ExpectationError(this, false, "to be rejected");
128
+ }
129
+ return this._positiveExpectations;
130
+ });
131
+ }
132
+ toBeRejectedWithError(...args) {
133
+ return this.toBeRejected((assert) => assert.toBeError(...args));
134
+ }
135
+ static {
136
+ for (const [key, value] of Object.entries(expectations)) {
137
+ const expectation = value;
138
+ const fn = function(...args) {
139
+ try {
140
+ expectation.expect(this._positiveExpectations, this._negative, ...args);
141
+ return this._positiveExpectations;
142
+ } catch (error) {
143
+ if (error instanceof import_types.ExpectationError)
144
+ Error.captureStackTrace(error, fn);
145
+ throw error;
146
+ }
147
+ };
148
+ Object.defineProperty(fn, "name", { value: key });
149
+ Object.defineProperty(this.prototype, key, { value: fn });
150
+ }
151
+ }
152
+ };
153
+ var ExpectationsMatcherImpl = class {
154
+ _matchers;
155
+ _positiveBuilder;
156
+ _negativeBuilder;
157
+ _negative;
158
+ constructor(_matchers, _positiveBuilder) {
159
+ this._matchers = _matchers;
160
+ if (_positiveBuilder) {
161
+ this._negative = true;
162
+ this._positiveBuilder = _positiveBuilder;
163
+ this._negativeBuilder = this;
164
+ } else {
165
+ this._negative = false;
166
+ this._positiveBuilder = this;
167
+ this._negativeBuilder = new ExpectationsMatcherImpl(this._matchers, this);
168
+ }
169
+ }
170
+ get not() {
171
+ return this._negative ? this._positiveBuilder : this._negativeBuilder;
172
+ }
173
+ expect(value) {
174
+ const expectations2 = new ExpectationsImpl(value);
175
+ for (const [expectation, negative, args] of this._matchers) {
176
+ expectations2.negated(negative)[expectation](...args);
177
+ }
178
+ }
179
+ static {
180
+ Object.defineProperty(this.prototype, import_types.matcherMarker, { value: import_types.matcherMarker });
181
+ for (const key in expectations) {
182
+ Object.defineProperty(this.prototype, key, {
183
+ value: function(...args) {
184
+ return new ExpectationsMatcherImpl([
185
+ ...this._matchers,
186
+ [key, this._negative, args]
187
+ ]);
188
+ }
189
+ });
190
+ }
191
+ }
192
+ };
193
+ var expect = (value) => {
194
+ return new ExpectationsImpl(value);
195
+ };
196
+ Object.defineProperty(expect, "not", {
197
+ get: () => new ExpectationsMatcherImpl([]).not
198
+ });
199
+ for (const name in expectations) {
200
+ Object.defineProperty(expect, name, {
201
+ value: function(...args) {
202
+ const builder = new ExpectationsMatcherImpl([]);
203
+ return builder[name](...args);
204
+ }
205
+ });
206
+ }
207
+ // Annotate the CommonJS export names for ESM import in node:
208
+ 0 && (module.exports = {
209
+ expect
210
+ });
211
+ //# sourceMappingURL=expect.cjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/expectation/expect.ts"],
4
+ "mappings": "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",
5
+ "names": ["expectations"]
6
+ }
@@ -0,0 +1,140 @@
1
+ import { ToBeA, ToBeCloseTo, ToBeError, ToBeGreaterThan, ToBeGreaterThanOrEqual, ToBeInstanceOf, ToBeLessThan, ToBeLessThanOrEqual, ToBeWithinRange, ToEqual, ToHaveLength, ToHaveProperty, ToHaveSize, ToMatch, ToStrictlyEqual } from './basic';
2
+ import { ToInclude, ToMatchContents } from './include';
3
+ import { ToThrow, ToThrowError } from './throwing';
4
+ import { ToBeDefined, ToBeFalse, ToBeFalsy, ToBeNaN, ToBeNegativeInfinity, ToBeNull, ToBePositiveInfinity, ToBeTrue, ToBeTruthy, ToBeUndefined } from './void';
5
+ import type { Constructor, StringMatcher } from './types';
6
+ /** Singleton with all imported (known) expectations */
7
+ declare const expectations: {
8
+ readonly toBeA: ToBeA;
9
+ readonly toBeCloseTo: ToBeCloseTo;
10
+ readonly toBeError: ToBeError;
11
+ readonly toBeGreaterThan: ToBeGreaterThan;
12
+ readonly toBeGreaterThanOrEqual: ToBeGreaterThanOrEqual;
13
+ readonly toBeInstanceOf: ToBeInstanceOf;
14
+ readonly toBeLessThan: ToBeLessThan;
15
+ readonly toBeLessThanOrEqual: ToBeLessThanOrEqual;
16
+ readonly toBeWithinRange: ToBeWithinRange;
17
+ readonly toEqual: ToEqual;
18
+ readonly toHaveLength: ToHaveLength;
19
+ readonly toHaveProperty: ToHaveProperty;
20
+ readonly toHaveSize: ToHaveSize;
21
+ readonly toMatch: ToMatch;
22
+ readonly toStrictlyEqual: ToStrictlyEqual;
23
+ readonly toInclude: ToInclude;
24
+ readonly toMatchContents: ToMatchContents;
25
+ readonly toThrow: ToThrow;
26
+ readonly toThrowError: ToThrowError;
27
+ readonly toBeDefined: ToBeDefined;
28
+ readonly toBeFalse: ToBeFalse;
29
+ readonly toBeFalsy: ToBeFalsy;
30
+ readonly toBeNaN: ToBeNaN;
31
+ readonly toBeNegativeInfinity: ToBeNegativeInfinity;
32
+ readonly toBeNull: ToBeNull;
33
+ readonly toBePositiveInfinity: ToBePositiveInfinity;
34
+ readonly toBeTrue: ToBeTrue;
35
+ readonly toBeTruthy: ToBeTruthy;
36
+ readonly toBeUndefined: ToBeUndefined;
37
+ };
38
+ /** The type of our imported expectations */
39
+ type ExpectationsByName = typeof expectations;
40
+ /** Infer expectations parameter from {@link Expectation} type */
41
+ type ExpectationParameters<E> = E extends Expectation ? Parameters<E['expect']> extends [any, any, ...infer P] ? P : never : never;
42
+ /** Infer return parameter from {@link Expectation} type */
43
+ type ExpectationReturn<E, T> = E extends Expectation ? Expectations<T> : never;
44
+ /** Infer expectation functions from imported {@link Expectation} instances */
45
+ type ImportedExpectations<T = unknown> = {
46
+ [k in keyof ExpectationsByName]: (...args: ExpectationParameters<ExpectationsByName[k]>) => ExpectationReturn<ExpectationsByName[k], T>;
47
+ };
48
+ /** An interface describing all expectations returned by `expect(...)` */
49
+ export interface Expectations<T = unknown> extends ImportedExpectations<T> {
50
+ /**
51
+ * The parent of this instance, if and only if this is a child derived from
52
+ * a property of the parent instance's value.
53
+ */
54
+ parent?: ExpectationsParent;
55
+ /** The value this {@link Expectations} instance operates on */
56
+ value: T;
57
+ /** The _negated_ expectations of _this_ {@link Expectations} instance. */
58
+ not: Expectations<T>;
59
+ /**
60
+ * Programmatically return _positive_ or _negative_ {@link Expectations}
61
+ * for the value wrapped by this instance.
62
+ */
63
+ negated(negative: boolean): Expectations<T>;
64
+ /** Create an {@link Expectations} associated with a property of this value */
65
+ forProperty(prop: string | number | symbol): Expectations;
66
+ /** Create a new {@link Expectations} instance for the specified value */
67
+ forValue<T = unknown>(value: T): Expectations<T>;
68
+ /** Expect the value to be a _resolved_ {@link Promise} */
69
+ toBeResolved(): Promise<ExpectationsImpl<T>>;
70
+ /**
71
+ * Expect the value to be a _resolved_ {@link Promise}, and assert the
72
+ * resolved result with the specified callback
73
+ */
74
+ toBeResolved(assert: (resultExpectations: Expectations) => void): Promise<ExpectationsImpl<T>>;
75
+ /** Expect the value to be a _rejected_ {@link Promise} */
76
+ toBeRejected(): Promise<ExpectationsImpl<T>>;
77
+ /**
78
+ * Expect the value to be a _rejected_ {@link Promise}, and assert the
79
+ * rejected reason with the specified callback
80
+ */
81
+ toBeRejected(assert?: (rejectionExpectations: Expectations) => void): Promise<ExpectationsImpl<T>>;
82
+ /** Expect the value to be a {@link Promise} _rejected_ by an {@link Error} */
83
+ toBeRejectedWithError(): Promise<Expectations<T>>;
84
+ /**
85
+ * Expect the value to be a {@link Promise} _rejected_ by an {@link Error}
86
+ * with the specified _message_
87
+ */
88
+ toBeRejectedWithError(message: StringMatcher): Promise<Expectations<T>>;
89
+ /**
90
+ * Expect the value to be a {@link Promise} _rejected_ by an {@link Error}
91
+ * of the specified _type_
92
+ */
93
+ toBeRejectedWithError(constructor: Constructor<Error>): Promise<Expectations<T>>;
94
+ /**
95
+ * Expect the value to be a {@link Promise} _rejected_ by an {@link Error}
96
+ * of the specified _type_ and with the specified _message_
97
+ */
98
+ toBeRejectedWithError(constructor: Constructor<Error>, message: StringMatcher): Promise<Expectations<T>>;
99
+ }
100
+ /** Parent expectations */
101
+ export interface ExpectationsParent {
102
+ context: Expectations;
103
+ prop: string | number | symbol;
104
+ }
105
+ /** Basic definition of an {@link Expectation} as an object */
106
+ export interface Expectation {
107
+ expect(context: Expectations, negative: boolean, ...args: any[]): void;
108
+ }
109
+ /** Empty interface: the `class` below won't complain about missing stuff */
110
+ interface ExpectationsImpl<T = unknown> extends Expectations<T> {
111
+ }
112
+ /** Implementation of our {@link Expectations} interface */
113
+ declare class ExpectationsImpl<T = unknown> implements Expectations<T> {
114
+ readonly value: T;
115
+ private readonly _positiveExpectations;
116
+ private readonly _negativeExpectations;
117
+ private readonly _negative;
118
+ constructor(value: T, _positiveExpectations?: ExpectationsImpl<T>);
119
+ forProperty(prop: string | number | symbol): ExpectationsImpl;
120
+ forValue<T = unknown>(value: T): ExpectationsImpl<T>;
121
+ negated(negative: boolean): ExpectationsImpl<T>;
122
+ get not(): ExpectationsImpl<T>;
123
+ toBeResolved(assert?: (resultExpectations: Expectations) => void): Promise<ExpectationsImpl<T>>;
124
+ toBeRejected(assert?: (reasonExpectations: Expectations) => void): Promise<ExpectationsImpl<T>>;
125
+ toBeRejectedWithError(...args: [] | [message: StringMatcher] | [constructor: Constructor<Error>] | [constructor: Constructor<Error>, message: StringMatcher]): Promise<ExpectationsImpl<T>>;
126
+ }
127
+ /** Infer return parameter from {@link Expectation} type */
128
+ type MatcherReturn<E> = E extends Expectation ? ExpectationsMatcher : never;
129
+ /** Infer expectation functions from imported {@link Expectation} instances */
130
+ type ImportedMatchers = {
131
+ [k in keyof ExpectationsByName]: (...args: ExpectationParameters<ExpectationsByName[k]>) => MatcherReturn<ExpectationsByName[k]>;
132
+ };
133
+ /** An interface describing all expectations returned by `expect(...)` */
134
+ export interface ExpectationsMatcher extends ImportedMatchers {
135
+ not: ExpectationsMatcher;
136
+ expect(value: unknown): void;
137
+ }
138
+ /** The `expect` function exposing expectations and matchers */
139
+ export declare const expect: ExpectationsMatcher & (<T = unknown>(value: T) => Expectations<T>);
140
+ export {};
@@ -0,0 +1,219 @@
1
+ // expectation/expect.ts
2
+ import { ExpectationError, matcherMarker } from "./types.mjs";
3
+ import {
4
+ ToBeA,
5
+ ToBeCloseTo,
6
+ ToBeError,
7
+ ToBeGreaterThan,
8
+ ToBeGreaterThanOrEqual,
9
+ ToBeInstanceOf,
10
+ ToBeLessThan,
11
+ ToBeLessThanOrEqual,
12
+ ToBeWithinRange,
13
+ ToEqual,
14
+ ToHaveLength,
15
+ ToHaveProperty,
16
+ ToHaveSize,
17
+ ToMatch,
18
+ ToStrictlyEqual
19
+ } from "./basic.mjs";
20
+ import {
21
+ ToInclude,
22
+ ToMatchContents
23
+ } from "./include.mjs";
24
+ import {
25
+ ToThrow,
26
+ ToThrowError
27
+ } from "./throwing.mjs";
28
+ import {
29
+ ToBeDefined,
30
+ ToBeFalse,
31
+ ToBeFalsy,
32
+ ToBeNaN,
33
+ ToBeNegativeInfinity,
34
+ ToBeNull,
35
+ ToBePositiveInfinity,
36
+ ToBeTrue,
37
+ ToBeTruthy,
38
+ ToBeUndefined
39
+ } from "./void.mjs";
40
+ var expectations = {
41
+ // basic expectations
42
+ toBeA: new ToBeA(),
43
+ toBeCloseTo: new ToBeCloseTo(),
44
+ toBeError: new ToBeError(),
45
+ toBeGreaterThan: new ToBeGreaterThan(),
46
+ toBeGreaterThanOrEqual: new ToBeGreaterThanOrEqual(),
47
+ toBeInstanceOf: new ToBeInstanceOf(),
48
+ toBeLessThan: new ToBeLessThan(),
49
+ toBeLessThanOrEqual: new ToBeLessThanOrEqual(),
50
+ toBeWithinRange: new ToBeWithinRange(),
51
+ toEqual: new ToEqual(),
52
+ toHaveLength: new ToHaveLength(),
53
+ toHaveProperty: new ToHaveProperty(),
54
+ toHaveSize: new ToHaveSize(),
55
+ toMatch: new ToMatch(),
56
+ toStrictlyEqual: new ToStrictlyEqual(),
57
+ // include
58
+ toInclude: new ToInclude(),
59
+ toMatchContents: new ToMatchContents(),
60
+ // throwing
61
+ toThrow: new ToThrow(),
62
+ toThrowError: new ToThrowError(),
63
+ // void expectations
64
+ toBeDefined: new ToBeDefined(),
65
+ toBeFalse: new ToBeFalse(),
66
+ toBeFalsy: new ToBeFalsy(),
67
+ toBeNaN: new ToBeNaN(),
68
+ toBeNegativeInfinity: new ToBeNegativeInfinity(),
69
+ toBeNull: new ToBeNull(),
70
+ toBePositiveInfinity: new ToBePositiveInfinity(),
71
+ toBeTrue: new ToBeTrue(),
72
+ toBeTruthy: new ToBeTruthy(),
73
+ toBeUndefined: new ToBeUndefined()
74
+ };
75
+ var ExpectationsImpl = class {
76
+ constructor(value, _positiveExpectations) {
77
+ this.value = value;
78
+ if (_positiveExpectations) {
79
+ this._negative = true;
80
+ this._positiveExpectations = _positiveExpectations;
81
+ this._negativeExpectations = this;
82
+ } else {
83
+ this._negative = false;
84
+ this._positiveExpectations = this;
85
+ this._negativeExpectations = new ExpectationsImpl(value, this);
86
+ }
87
+ }
88
+ _positiveExpectations;
89
+ _negativeExpectations;
90
+ _negative;
91
+ /* == NEW EXPECTATIONS ==================================================== */
92
+ forProperty(prop) {
93
+ this.toBeDefined();
94
+ const child = new ExpectationsImpl(this.value[prop]);
95
+ child.parent = { context: this, prop };
96
+ return child;
97
+ }
98
+ forValue(value) {
99
+ return new ExpectationsImpl(value);
100
+ }
101
+ /* == NEGATION ============================================================ */
102
+ negated(negative) {
103
+ return negative ? this._negativeExpectations : this._positiveExpectations;
104
+ }
105
+ get not() {
106
+ return this._negative ? this._positiveExpectations : this._negativeExpectations;
107
+ }
108
+ /* == ASYNCHRONOUS EXPECTATIONS =========================================== */
109
+ toBeResolved(assert) {
110
+ return Promise.resolve().then(() => {
111
+ this._positiveExpectations.toHaveProperty("then", (a) => a.toBeA("function"));
112
+ return Promise.allSettled([Promise.resolve(this.value)]);
113
+ }).then(([settlement]) => {
114
+ if (settlement.status === "fulfilled") {
115
+ if (this._negative)
116
+ throw new ExpectationError(this, true, "to be resolved");
117
+ if (assert)
118
+ assert(new ExpectationsImpl(settlement.value));
119
+ } else if (!this._negative) {
120
+ throw new ExpectationError(this, false, "to be resolved");
121
+ }
122
+ return this._positiveExpectations;
123
+ });
124
+ }
125
+ toBeRejected(assert) {
126
+ return Promise.resolve().then(() => {
127
+ this._positiveExpectations.toHaveProperty("then", (a) => a.toBeA("function"));
128
+ return Promise.allSettled([Promise.resolve(this.value)]);
129
+ }).then(([settlement]) => {
130
+ if (settlement.status === "rejected") {
131
+ if (this._negative)
132
+ throw new ExpectationError(this, true, "to be rejected");
133
+ if (assert)
134
+ assert(new ExpectationsImpl(settlement.reason));
135
+ } else if (!this._negative) {
136
+ throw new ExpectationError(this, false, "to be rejected");
137
+ }
138
+ return this._positiveExpectations;
139
+ });
140
+ }
141
+ toBeRejectedWithError(...args) {
142
+ return this.toBeRejected((assert) => assert.toBeError(...args));
143
+ }
144
+ static {
145
+ for (const [key, value] of Object.entries(expectations)) {
146
+ const expectation = value;
147
+ const fn = function(...args) {
148
+ try {
149
+ expectation.expect(this._positiveExpectations, this._negative, ...args);
150
+ return this._positiveExpectations;
151
+ } catch (error) {
152
+ if (error instanceof ExpectationError)
153
+ Error.captureStackTrace(error, fn);
154
+ throw error;
155
+ }
156
+ };
157
+ Object.defineProperty(fn, "name", { value: key });
158
+ Object.defineProperty(this.prototype, key, { value: fn });
159
+ }
160
+ }
161
+ };
162
+ var ExpectationsMatcherImpl = class {
163
+ _matchers;
164
+ _positiveBuilder;
165
+ _negativeBuilder;
166
+ _negative;
167
+ constructor(_matchers, _positiveBuilder) {
168
+ this._matchers = _matchers;
169
+ if (_positiveBuilder) {
170
+ this._negative = true;
171
+ this._positiveBuilder = _positiveBuilder;
172
+ this._negativeBuilder = this;
173
+ } else {
174
+ this._negative = false;
175
+ this._positiveBuilder = this;
176
+ this._negativeBuilder = new ExpectationsMatcherImpl(this._matchers, this);
177
+ }
178
+ }
179
+ get not() {
180
+ return this._negative ? this._positiveBuilder : this._negativeBuilder;
181
+ }
182
+ expect(value) {
183
+ const expectations2 = new ExpectationsImpl(value);
184
+ for (const [expectation, negative, args] of this._matchers) {
185
+ expectations2.negated(negative)[expectation](...args);
186
+ }
187
+ }
188
+ static {
189
+ Object.defineProperty(this.prototype, matcherMarker, { value: matcherMarker });
190
+ for (const key in expectations) {
191
+ Object.defineProperty(this.prototype, key, {
192
+ value: function(...args) {
193
+ return new ExpectationsMatcherImpl([
194
+ ...this._matchers,
195
+ [key, this._negative, args]
196
+ ]);
197
+ }
198
+ });
199
+ }
200
+ }
201
+ };
202
+ var expect = (value) => {
203
+ return new ExpectationsImpl(value);
204
+ };
205
+ Object.defineProperty(expect, "not", {
206
+ get: () => new ExpectationsMatcherImpl([]).not
207
+ });
208
+ for (const name in expectations) {
209
+ Object.defineProperty(expect, name, {
210
+ value: function(...args) {
211
+ const builder = new ExpectationsMatcherImpl([]);
212
+ return builder[name](...args);
213
+ }
214
+ });
215
+ }
216
+ export {
217
+ expect
218
+ };
219
+ //# sourceMappingURL=expect.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/expectation/expect.ts"],
4
+ "mappings": "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",
5
+ "names": ["expectations"]
6
+ }