@matter/testing 0.16.0-alpha.0-20250816-d22ad240d → 0.16.0-alpha.0-20250819-0a388db8b
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/dist/cjs/chai.js +8 -0
- package/dist/cjs/chai.js.map +1 -1
- package/dist/cjs/mocks/time.d.ts +6 -6
- package/dist/cjs/mocks/time.d.ts.map +1 -1
- package/dist/cjs/mocks/time.js +15 -15
- package/dist/cjs/mocks/time.js.map +1 -1
- package/dist/esm/chai.js +8 -0
- package/dist/esm/chai.js.map +1 -1
- package/dist/esm/mocks/time.d.ts +6 -6
- package/dist/esm/mocks/time.d.ts.map +1 -1
- package/dist/esm/mocks/time.js +15 -15
- package/dist/esm/mocks/time.js.map +1 -1
- package/package.json +4 -4
- package/src/chai.ts +12 -0
- package/src/mocks/time.ts +16 -16
- package/test/mocks/MockTimeTest.ts +7 -7
package/dist/cjs/chai.js
CHANGED
|
@@ -59,6 +59,14 @@ import_chai.default.config.deepEqual = (expected, actual) => {
|
|
|
59
59
|
case expect.BYTES:
|
|
60
60
|
return actual2 instanceof Uint8Array;
|
|
61
61
|
}
|
|
62
|
+
if (typeof actual2 === "object" && actual2?.constructor.name === "Interval" && "ms" in actual2) {
|
|
63
|
+
if (typeof expected2 === "number") {
|
|
64
|
+
return actual2.ms === expected2;
|
|
65
|
+
}
|
|
66
|
+
if (typeof expected2 === "object" && expected2 !== null && "ms" in expected2) {
|
|
67
|
+
return actual2.ms === expected2.ms;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
62
70
|
return null;
|
|
63
71
|
}
|
|
64
72
|
});
|
package/dist/cjs/chai.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/chai.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAMA,kBAAiB;AACjB,gCAAO;AAPP;AAAA;AAAA;AAAA;AAAA;AAWA,YAAAA,QAAK,OAAO,oBAAoB;AAEhC,SAAS,iBAAiB,OAAe;AACrC,SAAO;AAAA,IACH,WAAW;AACP,aAAO,KAAK,KAAK;AAAA,IACrB;AAAA,EACJ;AACJ;AAEA,OAAO,SAAS,iBAAiB,QAAQ;AACzC,OAAO,SAAS,iBAAiB,QAAQ;AACzC,OAAO,QAAQ,iBAAiB,OAAO;AACvC,OAAO,SAAS,iBAAiB,QAAQ;AACzC,OAAO,SAAS,iBAAiB,QAAQ;AAExC,YAAAA,QAAK,OAAe,YAAY,CAAC,UAAmB,WAAoB;AACrE,SAAQ,YAAAA,QAAK,KAAa,IAAI,UAAU,QAAQ;AAAA,IAC5C,WAAWC,WAAmBC,SAAiB;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAMA,kBAAiB;AACjB,gCAAO;AAPP;AAAA;AAAA;AAAA;AAAA;AAWA,YAAAA,QAAK,OAAO,oBAAoB;AAEhC,SAAS,iBAAiB,OAAe;AACrC,SAAO;AAAA,IACH,WAAW;AACP,aAAO,KAAK,KAAK;AAAA,IACrB;AAAA,EACJ;AACJ;AAEA,OAAO,SAAS,iBAAiB,QAAQ;AACzC,OAAO,SAAS,iBAAiB,QAAQ;AACzC,OAAO,QAAQ,iBAAiB,OAAO;AACvC,OAAO,SAAS,iBAAiB,QAAQ;AACzC,OAAO,SAAS,iBAAiB,QAAQ;AAExC,YAAAA,QAAK,OAAe,YAAY,CAAC,UAAmB,WAAoB;AACrE,SAAQ,YAAAA,QAAK,KAAa,IAAI,UAAU,QAAQ;AAAA,IAC5C,WAAWC,WAAmBC,SAAiB;AAE3C,cAAQD,WAAU;AAAA,QACd,KAAK,OAAO;AACR,iBAAO;AAAA,QAEX,KAAK,OAAO;AACR,iBAAO,OAAOC,YAAW;AAAA,QAE7B,KAAK,OAAO;AACR,iBAAO,OAAOA,YAAW;AAAA,QAE7B,KAAK,OAAO;AACR,iBAAO,OAAOA,YAAW;AAAA,QAE7B,KAAK,OAAO;AACR,iBAAOA,mBAAkB;AAAA,MACjC;AAGA,UAAI,OAAOA,YAAW,YAAYA,SAAQ,YAAY,SAAS,cAAc,QAAQA,SAAQ;AACzF,YAAI,OAAOD,cAAa,UAAU;AAC9B,iBAAOC,QAAO,OAAOD;AAAA,QACzB;AACA,YAAI,OAAOA,cAAa,YAAYA,cAAa,QAAQ,QAAQA,WAAU;AACvE,iBAAOC,QAAO,OAAOD,UAAS;AAAA,QAClC;AAAA,MACJ;AAEA,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACL;",
|
|
5
5
|
"names": ["Chai", "expected", "actual"]
|
|
6
6
|
}
|
package/dist/cjs/mocks/time.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ declare class MockTimer {
|
|
|
15
15
|
isPeriodic: boolean;
|
|
16
16
|
isRunning: boolean;
|
|
17
17
|
private readonly callback;
|
|
18
|
-
constructor(mockTime: MockTime, name: string,
|
|
18
|
+
constructor(mockTime: MockTime, name: string, duration: number, callback: TimerCallback);
|
|
19
19
|
start(): this;
|
|
20
20
|
stop(): this;
|
|
21
21
|
}
|
|
@@ -59,10 +59,10 @@ export declare const MockTime: {
|
|
|
59
59
|
*/
|
|
60
60
|
macrotasks: boolean;
|
|
61
61
|
atTime<T>(time: number | Date, actor: () => T): T;
|
|
62
|
-
now
|
|
63
|
-
nowMs
|
|
64
|
-
getTimer(name: string,
|
|
65
|
-
getPeriodicTimer(name: string,
|
|
62
|
+
readonly now: Date;
|
|
63
|
+
readonly nowMs: number;
|
|
64
|
+
getTimer(name: string, duration: number, callback: TimerCallback): MockTimer;
|
|
65
|
+
getPeriodicTimer(name: string, interval: number, callback: TimerCallback): MockTimer;
|
|
66
66
|
/**
|
|
67
67
|
* Resolve a promise with time dependency.
|
|
68
68
|
*
|
|
@@ -109,7 +109,7 @@ export declare function timeSetup(Time: {
|
|
|
109
109
|
systemMs: number;
|
|
110
110
|
processMs: number;
|
|
111
111
|
};
|
|
112
|
-
|
|
112
|
+
default: unknown;
|
|
113
113
|
register(timer: MockTimer): void;
|
|
114
114
|
unregister(timer: MockTimer): void;
|
|
115
115
|
timers: Set<MockTimer>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/mocks/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,KAAK,aAAa,GAAG,MAAM,GAAG,CAAC;AAE/B,KAAK,YAAY,GAAG,OAAO,QAAQ,CAAC;AACpC,MAAM,WAAW,QAAS,SAAQ,YAAY;CAAG;AASjD,cAAM,SAAS;;IACX,IAAI,SAAU;IACd,QAAQ,SAAK;IACb,UAAU,SAAK;IACf,UAAU,UAAS;IAKnB,SAAS,UAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAE7B,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/mocks/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,KAAK,aAAa,GAAG,MAAM,GAAG,CAAC;AAE/B,KAAK,YAAY,GAAG,OAAO,QAAQ,CAAC;AACpC,MAAM,WAAW,QAAS,SAAQ,YAAY;CAAG;AASjD,cAAM,SAAS;;IACX,IAAI,SAAU;IACd,QAAQ,SAAK;IACb,UAAU,SAAK;IACf,UAAU,UAAS;IAKnB,SAAS,UAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAE7B,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa;IAgBvF,KAAK;IAOL,IAAI;CAMP;AAYD,KAAK,eAAe,CAAC,CAAC,IAClB,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,GACd;IAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,GACjF;IAAE,OAAO,EAAE,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,CAAC;AAmB9E,eAAO,MAAM,QAAQ;;mCAGW,OAAO;IAInC;;OAEG;;IAMH;;OAEG;;IAMH;;OAEG;iBACS,qBAAqB,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IAOjD;;OAEG;;IAOH;;;;;OAKG;gBACmB,OAAO;WAItB,CAAC,QAAQ,MAAM,GAAG,IAAI,SAAS,MAAM,CAAC,GAAG,CAAC;kBAoBtC,IAAI;;mBAQA,MAAM,YAAY,MAAM,YAAY,aAAa,GAAG,SAAS;2BAIrD,MAAM,YAAY,MAAM,YAAY,aAAa,GAAG,SAAS;IAIpF;;;;OAIG;YACW,CAAC,WAAW,WAAW,CAAC,CAAC,CAAC,2BAA0B;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE;IAkE3G;;OAEG;gBACe,MAAM;IAcxB;;;OAGG;;IAKH;;;;;OAKG;;IAOH;;;;;;;OAOG;kBACW,KAAK,SAAS,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,GAAE,OAC5F,IAAI,UACD,KAAK,eACA,CACT,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,KAC/B,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IA0C5F;;OAEG;wBACiB,MAAM;yBAIL,MAAM,YAAY,aAAa;qCAWnB,aAAa;CAKjD,CAAC;AAIF,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAC5B,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;CAC1B,QASA"}
|
package/dist/cjs/mocks/time.js
CHANGED
|
@@ -41,13 +41,13 @@ class MockTimer {
|
|
|
41
41
|
intervalMs = 0;
|
|
42
42
|
isPeriodic = false;
|
|
43
43
|
#mockTime;
|
|
44
|
-
#
|
|
44
|
+
#duration;
|
|
45
45
|
isRunning = false;
|
|
46
46
|
callback;
|
|
47
|
-
constructor(mockTime, name,
|
|
47
|
+
constructor(mockTime, name, duration, callback) {
|
|
48
48
|
this.name = name;
|
|
49
49
|
this.#mockTime = mockTime;
|
|
50
|
-
this.#
|
|
50
|
+
this.#duration = duration;
|
|
51
51
|
if (this instanceof MockInterval) {
|
|
52
52
|
this.callback = callback;
|
|
53
53
|
} else {
|
|
@@ -59,7 +59,7 @@ class MockTimer {
|
|
|
59
59
|
}
|
|
60
60
|
start() {
|
|
61
61
|
registry.register(this);
|
|
62
|
-
this.#mockTime.callbackAtTime(this.#mockTime.nowMs
|
|
62
|
+
this.#mockTime.callbackAtTime(this.#mockTime.nowMs + this.#duration, this.callback);
|
|
63
63
|
this.isRunning = true;
|
|
64
64
|
return this;
|
|
65
65
|
}
|
|
@@ -71,12 +71,12 @@ class MockTimer {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
class MockInterval extends MockTimer {
|
|
74
|
-
constructor(mockTime, name,
|
|
74
|
+
constructor(mockTime, name, duration, callback) {
|
|
75
75
|
const intervalCallback = async () => {
|
|
76
|
-
mockTime.callbackAtTime(mockTime.nowMs
|
|
76
|
+
mockTime.callbackAtTime(mockTime.nowMs + duration, intervalCallback);
|
|
77
77
|
await callback();
|
|
78
78
|
};
|
|
79
|
-
super(mockTime, name,
|
|
79
|
+
super(mockTime, name, duration, intervalCallback);
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
function isAsync(fn) {
|
|
@@ -152,17 +152,17 @@ const MockTime = {
|
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
},
|
|
155
|
-
now() {
|
|
155
|
+
get now() {
|
|
156
156
|
return new Date(nowMs);
|
|
157
157
|
},
|
|
158
|
-
nowMs() {
|
|
158
|
+
get nowMs() {
|
|
159
159
|
return nowMs;
|
|
160
160
|
},
|
|
161
|
-
getTimer(name,
|
|
162
|
-
return new MockTimer(this, name,
|
|
161
|
+
getTimer(name, duration, callback) {
|
|
162
|
+
return new MockTimer(this, name, duration, callback);
|
|
163
163
|
},
|
|
164
|
-
getPeriodicTimer(name,
|
|
165
|
-
return new MockInterval(this, name,
|
|
164
|
+
getPeriodicTimer(name, interval, callback) {
|
|
165
|
+
return new MockInterval(this, name, interval, callback);
|
|
166
166
|
},
|
|
167
167
|
/**
|
|
168
168
|
* Resolve a promise with time dependency.
|
|
@@ -320,9 +320,9 @@ function timeSetup(Time) {
|
|
|
320
320
|
registry.unregister = Time.unregister;
|
|
321
321
|
registry.timers = Time.timers;
|
|
322
322
|
Time.startup.systemMs = Time.startup.processMs = 0;
|
|
323
|
-
real = Time.
|
|
323
|
+
real = Time.default;
|
|
324
324
|
MockTime.sleep = real.sleep;
|
|
325
|
-
installActiveImplementation = () => Time.
|
|
325
|
+
installActiveImplementation = () => Time.default = MockTime.activeImplementation;
|
|
326
326
|
installActiveImplementation();
|
|
327
327
|
}
|
|
328
328
|
Object.assign(globalThis, { MockTime });
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/mocks/time.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,kBAAqB;AANrB;AAAA;AAAA;AAAA;AAAA;AAaA,MAAM,WAAW;AAAA,EACb,QAAQ,oBAAI,IAAe;AAAA,EAC3B,SAAS,QAAmB;AAAA,EAAC;AAAA,EAC7B,WAAW,QAAmB;AAAA,EAAC;AACnC;AAGA,MAAM,UAAU;AAAA,EACZ,OAAO;AAAA,EACP,WAAW;AAAA,EACX,aAAa;AAAA,EACb,aAAa;AAAA,EAEb;AAAA,EACA;AAAA,EAEA,YAAY;AAAA,EACK;AAAA,EAEjB,YAAY,UAAoB,MAAc,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["isAsync"]
|
|
6
6
|
}
|
package/dist/esm/chai.js
CHANGED
|
@@ -33,6 +33,14 @@ Chai.config.deepEqual = (expected, actual) => {
|
|
|
33
33
|
case expect.BYTES:
|
|
34
34
|
return actual2 instanceof Uint8Array;
|
|
35
35
|
}
|
|
36
|
+
if (typeof actual2 === "object" && actual2?.constructor.name === "Interval" && "ms" in actual2) {
|
|
37
|
+
if (typeof expected2 === "number") {
|
|
38
|
+
return actual2.ms === expected2;
|
|
39
|
+
}
|
|
40
|
+
if (typeof expected2 === "object" && expected2 !== null && "ms" in expected2) {
|
|
41
|
+
return actual2.ms === expected2.ms;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
36
44
|
return null;
|
|
37
45
|
}
|
|
38
46
|
});
|
package/dist/esm/chai.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/chai.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO,UAAU;AACjB,OAAO;AAIP,KAAK,OAAO,oBAAoB;AAEhC,SAAS,iBAAiB,OAAe;AACrC,SAAO;AAAA,IACH,WAAW;AACP,aAAO,KAAK,KAAK;AAAA,IACrB;AAAA,EACJ;AACJ;AAEA,OAAO,SAAS,iBAAiB,QAAQ;AACzC,OAAO,SAAS,iBAAiB,QAAQ;AACzC,OAAO,QAAQ,iBAAiB,OAAO;AACvC,OAAO,SAAS,iBAAiB,QAAQ;AACzC,OAAO,SAAS,iBAAiB,QAAQ;AAExC,KAAK,OAAe,YAAY,CAAC,UAAmB,WAAoB;AACrE,SAAQ,KAAK,KAAa,IAAI,UAAU,QAAQ;AAAA,IAC5C,WAAWA,WAAmBC,SAAiB;
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO,UAAU;AACjB,OAAO;AAIP,KAAK,OAAO,oBAAoB;AAEhC,SAAS,iBAAiB,OAAe;AACrC,SAAO;AAAA,IACH,WAAW;AACP,aAAO,KAAK,KAAK;AAAA,IACrB;AAAA,EACJ;AACJ;AAEA,OAAO,SAAS,iBAAiB,QAAQ;AACzC,OAAO,SAAS,iBAAiB,QAAQ;AACzC,OAAO,QAAQ,iBAAiB,OAAO;AACvC,OAAO,SAAS,iBAAiB,QAAQ;AACzC,OAAO,SAAS,iBAAiB,QAAQ;AAExC,KAAK,OAAe,YAAY,CAAC,UAAmB,WAAoB;AACrE,SAAQ,KAAK,KAAa,IAAI,UAAU,QAAQ;AAAA,IAC5C,WAAWA,WAAmBC,SAAiB;AAE3C,cAAQD,WAAU;AAAA,QACd,KAAK,OAAO;AACR,iBAAO;AAAA,QAEX,KAAK,OAAO;AACR,iBAAO,OAAOC,YAAW;AAAA,QAE7B,KAAK,OAAO;AACR,iBAAO,OAAOA,YAAW;AAAA,QAE7B,KAAK,OAAO;AACR,iBAAO,OAAOA,YAAW;AAAA,QAE7B,KAAK,OAAO;AACR,iBAAOA,mBAAkB;AAAA,MACjC;AAGA,UAAI,OAAOA,YAAW,YAAYA,SAAQ,YAAY,SAAS,cAAc,QAAQA,SAAQ;AACzF,YAAI,OAAOD,cAAa,UAAU;AAC9B,iBAAOC,QAAO,OAAOD;AAAA,QACzB;AACA,YAAI,OAAOA,cAAa,YAAYA,cAAa,QAAQ,QAAQA,WAAU;AACvE,iBAAOC,QAAO,OAAOD,UAAS;AAAA,QAClC;AAAA,MACJ;AAEA,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACL;",
|
|
5
5
|
"names": ["expected", "actual"]
|
|
6
6
|
}
|
package/dist/esm/mocks/time.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ declare class MockTimer {
|
|
|
15
15
|
isPeriodic: boolean;
|
|
16
16
|
isRunning: boolean;
|
|
17
17
|
private readonly callback;
|
|
18
|
-
constructor(mockTime: MockTime, name: string,
|
|
18
|
+
constructor(mockTime: MockTime, name: string, duration: number, callback: TimerCallback);
|
|
19
19
|
start(): this;
|
|
20
20
|
stop(): this;
|
|
21
21
|
}
|
|
@@ -59,10 +59,10 @@ export declare const MockTime: {
|
|
|
59
59
|
*/
|
|
60
60
|
macrotasks: boolean;
|
|
61
61
|
atTime<T>(time: number | Date, actor: () => T): T;
|
|
62
|
-
now
|
|
63
|
-
nowMs
|
|
64
|
-
getTimer(name: string,
|
|
65
|
-
getPeriodicTimer(name: string,
|
|
62
|
+
readonly now: Date;
|
|
63
|
+
readonly nowMs: number;
|
|
64
|
+
getTimer(name: string, duration: number, callback: TimerCallback): MockTimer;
|
|
65
|
+
getPeriodicTimer(name: string, interval: number, callback: TimerCallback): MockTimer;
|
|
66
66
|
/**
|
|
67
67
|
* Resolve a promise with time dependency.
|
|
68
68
|
*
|
|
@@ -109,7 +109,7 @@ export declare function timeSetup(Time: {
|
|
|
109
109
|
systemMs: number;
|
|
110
110
|
processMs: number;
|
|
111
111
|
};
|
|
112
|
-
|
|
112
|
+
default: unknown;
|
|
113
113
|
register(timer: MockTimer): void;
|
|
114
114
|
unregister(timer: MockTimer): void;
|
|
115
115
|
timers: Set<MockTimer>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/mocks/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,KAAK,aAAa,GAAG,MAAM,GAAG,CAAC;AAE/B,KAAK,YAAY,GAAG,OAAO,QAAQ,CAAC;AACpC,MAAM,WAAW,QAAS,SAAQ,YAAY;CAAG;AASjD,cAAM,SAAS;;IACX,IAAI,SAAU;IACd,QAAQ,SAAK;IACb,UAAU,SAAK;IACf,UAAU,UAAS;IAKnB,SAAS,UAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAE7B,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/mocks/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,KAAK,aAAa,GAAG,MAAM,GAAG,CAAC;AAE/B,KAAK,YAAY,GAAG,OAAO,QAAQ,CAAC;AACpC,MAAM,WAAW,QAAS,SAAQ,YAAY;CAAG;AASjD,cAAM,SAAS;;IACX,IAAI,SAAU;IACd,QAAQ,SAAK;IACb,UAAU,SAAK;IACf,UAAU,UAAS;IAKnB,SAAS,UAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAE7B,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa;IAgBvF,KAAK;IAOL,IAAI;CAMP;AAYD,KAAK,eAAe,CAAC,CAAC,IAClB,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,GACd;IAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,GACjF;IAAE,OAAO,EAAE,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,CAAC;AAmB9E,eAAO,MAAM,QAAQ;;mCAGW,OAAO;IAInC;;OAEG;;IAMH;;OAEG;;IAMH;;OAEG;iBACS,qBAAqB,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IAOjD;;OAEG;;IAOH;;;;;OAKG;gBACmB,OAAO;WAItB,CAAC,QAAQ,MAAM,GAAG,IAAI,SAAS,MAAM,CAAC,GAAG,CAAC;kBAoBtC,IAAI;;mBAQA,MAAM,YAAY,MAAM,YAAY,aAAa,GAAG,SAAS;2BAIrD,MAAM,YAAY,MAAM,YAAY,aAAa,GAAG,SAAS;IAIpF;;;;OAIG;YACW,CAAC,WAAW,WAAW,CAAC,CAAC,CAAC,2BAA0B;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE;IAkE3G;;OAEG;gBACe,MAAM;IAcxB;;;OAGG;;IAKH;;;;;OAKG;;IAOH;;;;;;;OAOG;kBACW,KAAK,SAAS,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,GAAE,OAC5F,IAAI,UACD,KAAK,eACA,CACT,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,KAC/B,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IA0C5F;;OAEG;wBACiB,MAAM;yBAIL,MAAM,YAAY,aAAa;qCAWnB,aAAa;CAKjD,CAAC;AAIF,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAC5B,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;CAC1B,QASA"}
|
package/dist/esm/mocks/time.js
CHANGED
|
@@ -17,13 +17,13 @@ class MockTimer {
|
|
|
17
17
|
intervalMs = 0;
|
|
18
18
|
isPeriodic = false;
|
|
19
19
|
#mockTime;
|
|
20
|
-
#
|
|
20
|
+
#duration;
|
|
21
21
|
isRunning = false;
|
|
22
22
|
callback;
|
|
23
|
-
constructor(mockTime, name,
|
|
23
|
+
constructor(mockTime, name, duration, callback) {
|
|
24
24
|
this.name = name;
|
|
25
25
|
this.#mockTime = mockTime;
|
|
26
|
-
this.#
|
|
26
|
+
this.#duration = duration;
|
|
27
27
|
if (this instanceof MockInterval) {
|
|
28
28
|
this.callback = callback;
|
|
29
29
|
} else {
|
|
@@ -35,7 +35,7 @@ class MockTimer {
|
|
|
35
35
|
}
|
|
36
36
|
start() {
|
|
37
37
|
registry.register(this);
|
|
38
|
-
this.#mockTime.callbackAtTime(this.#mockTime.nowMs
|
|
38
|
+
this.#mockTime.callbackAtTime(this.#mockTime.nowMs + this.#duration, this.callback);
|
|
39
39
|
this.isRunning = true;
|
|
40
40
|
return this;
|
|
41
41
|
}
|
|
@@ -47,12 +47,12 @@ class MockTimer {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
class MockInterval extends MockTimer {
|
|
50
|
-
constructor(mockTime, name,
|
|
50
|
+
constructor(mockTime, name, duration, callback) {
|
|
51
51
|
const intervalCallback = async () => {
|
|
52
|
-
mockTime.callbackAtTime(mockTime.nowMs
|
|
52
|
+
mockTime.callbackAtTime(mockTime.nowMs + duration, intervalCallback);
|
|
53
53
|
await callback();
|
|
54
54
|
};
|
|
55
|
-
super(mockTime, name,
|
|
55
|
+
super(mockTime, name, duration, intervalCallback);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
function isAsync(fn) {
|
|
@@ -128,17 +128,17 @@ const MockTime = {
|
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
},
|
|
131
|
-
now() {
|
|
131
|
+
get now() {
|
|
132
132
|
return new Date(nowMs);
|
|
133
133
|
},
|
|
134
|
-
nowMs() {
|
|
134
|
+
get nowMs() {
|
|
135
135
|
return nowMs;
|
|
136
136
|
},
|
|
137
|
-
getTimer(name,
|
|
138
|
-
return new MockTimer(this, name,
|
|
137
|
+
getTimer(name, duration, callback) {
|
|
138
|
+
return new MockTimer(this, name, duration, callback);
|
|
139
139
|
},
|
|
140
|
-
getPeriodicTimer(name,
|
|
141
|
-
return new MockInterval(this, name,
|
|
140
|
+
getPeriodicTimer(name, interval, callback) {
|
|
141
|
+
return new MockInterval(this, name, interval, callback);
|
|
142
142
|
},
|
|
143
143
|
/**
|
|
144
144
|
* Resolve a promise with time dependency.
|
|
@@ -296,9 +296,9 @@ function timeSetup(Time) {
|
|
|
296
296
|
registry.unregister = Time.unregister;
|
|
297
297
|
registry.timers = Time.timers;
|
|
298
298
|
Time.startup.systemMs = Time.startup.processMs = 0;
|
|
299
|
-
real = Time.
|
|
299
|
+
real = Time.default;
|
|
300
300
|
MockTime.sleep = real.sleep;
|
|
301
|
-
installActiveImplementation = () => Time.
|
|
301
|
+
installActiveImplementation = () => Time.default = MockTime.activeImplementation;
|
|
302
302
|
installActiveImplementation();
|
|
303
303
|
}
|
|
304
304
|
Object.assign(globalThis, { MockTime });
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/mocks/time.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY;AAOrB,MAAM,WAAW;AAAA,EACb,QAAQ,oBAAI,IAAe;AAAA,EAC3B,SAAS,QAAmB;AAAA,EAAC;AAAA,EAC7B,WAAW,QAAmB;AAAA,EAAC;AACnC;AAGA,MAAM,UAAU;AAAA,EACZ,OAAO;AAAA,EACP,WAAW;AAAA,EACX,aAAa;AAAA,EACb,aAAa;AAAA,EAEb;AAAA,EACA;AAAA,EAEA,YAAY;AAAA,EACK;AAAA,EAEjB,YAAY,UAAoB,MAAc,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["isAsync"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/testing",
|
|
3
|
-
"version": "0.16.0-alpha.0-
|
|
3
|
+
"version": "0.16.0-alpha.0-20250819-0a388db8b",
|
|
4
4
|
"description": "Test harness for running JavaScript and Matter certification tests",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"#tools/ansi-text": "@matter/tools/ansi-text"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@matter/tools": "0.16.0-alpha.0-
|
|
48
|
+
"@matter/tools": "0.16.0-alpha.0-20250819-0a388db8b",
|
|
49
49
|
"@types/express": "^5.0.3",
|
|
50
50
|
"ansi-colors": "^4.1.3",
|
|
51
51
|
"chai": "^4.5.0",
|
|
@@ -68,8 +68,8 @@
|
|
|
68
68
|
"@types/debug": "^4.1.12",
|
|
69
69
|
"@types/mocha": "^10.0.10",
|
|
70
70
|
"@types/docker-modem": "^3.0.6",
|
|
71
|
-
"@types/node": "^24.
|
|
72
|
-
"@types/wtfnode": "^0.
|
|
71
|
+
"@types/node": "^24.3.0",
|
|
72
|
+
"@types/wtfnode": "^0.10.0",
|
|
73
73
|
"@types/xml2js": "^0.4.14",
|
|
74
74
|
"@types/yargs": "^17.0.33"
|
|
75
75
|
},
|
package/src/chai.ts
CHANGED
|
@@ -28,6 +28,7 @@ expect.STRING = createDiffMarker("string");
|
|
|
28
28
|
(Chai.config as any).deepEqual = (expected: unknown, actual: unknown) => {
|
|
29
29
|
return (Chai.util as any).eql(expected, actual, {
|
|
30
30
|
comparator(expected: unknown, actual: unknown) {
|
|
31
|
+
// Handle special "type-only" checks
|
|
31
32
|
switch (expected) {
|
|
32
33
|
case expect.IGNORE:
|
|
33
34
|
return true;
|
|
@@ -44,6 +45,17 @@ expect.STRING = createDiffMarker("string");
|
|
|
44
45
|
case expect.BYTES:
|
|
45
46
|
return actual instanceof Uint8Array;
|
|
46
47
|
}
|
|
48
|
+
|
|
49
|
+
// Specialized support for intervals
|
|
50
|
+
if (typeof actual === "object" && actual?.constructor.name === "Interval" && "ms" in actual) {
|
|
51
|
+
if (typeof expected === "number") {
|
|
52
|
+
return actual.ms === expected;
|
|
53
|
+
}
|
|
54
|
+
if (typeof expected === "object" && expected !== null && "ms" in expected) {
|
|
55
|
+
return actual.ms === expected.ms;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
47
59
|
return null;
|
|
48
60
|
},
|
|
49
61
|
});
|
package/src/mocks/time.ts
CHANGED
|
@@ -25,16 +25,16 @@ class MockTimer {
|
|
|
25
25
|
isPeriodic = false;
|
|
26
26
|
|
|
27
27
|
#mockTime: MockTime;
|
|
28
|
-
#
|
|
28
|
+
#duration: number;
|
|
29
29
|
|
|
30
30
|
isRunning = false;
|
|
31
31
|
private readonly callback: TimerCallback;
|
|
32
32
|
|
|
33
|
-
constructor(mockTime: MockTime, name: string,
|
|
33
|
+
constructor(mockTime: MockTime, name: string, duration: number, callback: TimerCallback) {
|
|
34
34
|
this.name = name;
|
|
35
35
|
|
|
36
36
|
this.#mockTime = mockTime;
|
|
37
|
-
this.#
|
|
37
|
+
this.#duration = duration;
|
|
38
38
|
|
|
39
39
|
if (this instanceof MockInterval) {
|
|
40
40
|
this.callback = callback;
|
|
@@ -48,7 +48,7 @@ class MockTimer {
|
|
|
48
48
|
|
|
49
49
|
start() {
|
|
50
50
|
registry.register(this);
|
|
51
|
-
this.#mockTime.callbackAtTime(this.#mockTime.nowMs
|
|
51
|
+
this.#mockTime.callbackAtTime(this.#mockTime.nowMs + this.#duration, this.callback);
|
|
52
52
|
this.isRunning = true;
|
|
53
53
|
return this;
|
|
54
54
|
}
|
|
@@ -62,12 +62,12 @@ class MockTimer {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
class MockInterval extends MockTimer {
|
|
65
|
-
constructor(mockTime: MockTime, name: string,
|
|
65
|
+
constructor(mockTime: MockTime, name: string, duration: number, callback: TimerCallback) {
|
|
66
66
|
const intervalCallback = async () => {
|
|
67
|
-
mockTime.callbackAtTime(mockTime.nowMs
|
|
67
|
+
mockTime.callbackAtTime(mockTime.nowMs + duration, intervalCallback);
|
|
68
68
|
await callback();
|
|
69
69
|
};
|
|
70
|
-
super(mockTime, name,
|
|
70
|
+
super(mockTime, name, duration, intervalCallback);
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
|
|
@@ -165,20 +165,20 @@ export const MockTime = {
|
|
|
165
165
|
}
|
|
166
166
|
},
|
|
167
167
|
|
|
168
|
-
now(): Date {
|
|
168
|
+
get now(): Date {
|
|
169
169
|
return new Date(nowMs);
|
|
170
170
|
},
|
|
171
171
|
|
|
172
|
-
nowMs() {
|
|
172
|
+
get nowMs() {
|
|
173
173
|
return nowMs;
|
|
174
174
|
},
|
|
175
175
|
|
|
176
|
-
getTimer(name: string,
|
|
177
|
-
return new MockTimer(this, name,
|
|
176
|
+
getTimer(name: string, duration: number, callback: TimerCallback): MockTimer {
|
|
177
|
+
return new MockTimer(this, name, duration, callback);
|
|
178
178
|
},
|
|
179
179
|
|
|
180
|
-
getPeriodicTimer(name: string,
|
|
181
|
-
return new MockInterval(this, name,
|
|
180
|
+
getPeriodicTimer(name: string, interval: number, callback: TimerCallback): MockTimer {
|
|
181
|
+
return new MockInterval(this, name, interval, callback);
|
|
182
182
|
},
|
|
183
183
|
|
|
184
184
|
/**
|
|
@@ -373,7 +373,7 @@ let installActiveImplementation: undefined | (() => void);
|
|
|
373
373
|
|
|
374
374
|
export function timeSetup(Time: {
|
|
375
375
|
startup: { systemMs: number; processMs: number };
|
|
376
|
-
|
|
376
|
+
default: unknown;
|
|
377
377
|
register(timer: MockTimer): void;
|
|
378
378
|
unregister(timer: MockTimer): void;
|
|
379
379
|
timers: Set<MockTimer>;
|
|
@@ -382,9 +382,9 @@ export function timeSetup(Time: {
|
|
|
382
382
|
registry.unregister = Time.unregister;
|
|
383
383
|
registry.timers = Time.timers;
|
|
384
384
|
Time.startup.systemMs = Time.startup.processMs = 0;
|
|
385
|
-
real = Time.
|
|
385
|
+
real = Time.default;
|
|
386
386
|
(MockTime as any).sleep = (real as any).sleep;
|
|
387
|
-
installActiveImplementation = () => (Time.
|
|
387
|
+
installActiveImplementation = () => (Time.default = MockTime.activeImplementation);
|
|
388
388
|
installActiveImplementation();
|
|
389
389
|
}
|
|
390
390
|
|
|
@@ -11,7 +11,7 @@ describe("MockTime", () => {
|
|
|
11
11
|
|
|
12
12
|
describe("now", () => {
|
|
13
13
|
it("returns the fake date", () => {
|
|
14
|
-
const result = MockTime.now
|
|
14
|
+
const result = MockTime.now;
|
|
15
15
|
|
|
16
16
|
expect(result.getTime()).equal(FAKE_TIME);
|
|
17
17
|
});
|
|
@@ -19,7 +19,7 @@ describe("MockTime", () => {
|
|
|
19
19
|
|
|
20
20
|
describe("nowMs", () => {
|
|
21
21
|
it("returns the fake time", () => {
|
|
22
|
-
const result = MockTime.nowMs
|
|
22
|
+
const result = MockTime.nowMs;
|
|
23
23
|
|
|
24
24
|
expect(result).equal(FAKE_TIME);
|
|
25
25
|
});
|
|
@@ -29,7 +29,7 @@ describe("MockTime", () => {
|
|
|
29
29
|
it("advances the time by the duration specified", async () => {
|
|
30
30
|
await MockTime.advance(45);
|
|
31
31
|
|
|
32
|
-
expect(MockTime.nowMs
|
|
32
|
+
expect(MockTime.nowMs).equal(FAKE_TIME + 45);
|
|
33
33
|
});
|
|
34
34
|
});
|
|
35
35
|
|
|
@@ -37,7 +37,7 @@ describe("MockTime", () => {
|
|
|
37
37
|
it("returns a periodic timer that will call a callback periodically", async () => {
|
|
38
38
|
let firedTime;
|
|
39
39
|
|
|
40
|
-
const result = MockTime.getPeriodicTimer("Test periodic", 30, () => (firedTime = MockTime.nowMs
|
|
40
|
+
const result = MockTime.getPeriodicTimer("Test periodic", 30, () => (firedTime = MockTime.nowMs));
|
|
41
41
|
expect(result.isRunning).equal(false);
|
|
42
42
|
|
|
43
43
|
result.start();
|
|
@@ -62,7 +62,7 @@ describe("MockTime", () => {
|
|
|
62
62
|
it("returns a periodic timer that can be stopped", async () => {
|
|
63
63
|
let firedTime;
|
|
64
64
|
|
|
65
|
-
const result = MockTime.getPeriodicTimer("Test periodic", 30, () => (firedTime = MockTime.nowMs
|
|
65
|
+
const result = MockTime.getPeriodicTimer("Test periodic", 30, () => (firedTime = MockTime.nowMs));
|
|
66
66
|
result.start();
|
|
67
67
|
result.stop();
|
|
68
68
|
|
|
@@ -79,7 +79,7 @@ describe("MockTime", () => {
|
|
|
79
79
|
it("returns a timer that will call a callback in the future", async () => {
|
|
80
80
|
let firedTime;
|
|
81
81
|
|
|
82
|
-
const result = MockTime.getTimer("Test", 30, () => (firedTime = MockTime.nowMs
|
|
82
|
+
const result = MockTime.getTimer("Test", 30, () => (firedTime = MockTime.nowMs));
|
|
83
83
|
expect(result.isRunning).equal(false);
|
|
84
84
|
result.start();
|
|
85
85
|
expect(result.isRunning).equal(true);
|
|
@@ -95,7 +95,7 @@ describe("MockTime", () => {
|
|
|
95
95
|
it("returns a timer that can be stopped", async () => {
|
|
96
96
|
let firedTime;
|
|
97
97
|
|
|
98
|
-
const result = MockTime.getTimer("Test", 30, () => (firedTime = MockTime.nowMs
|
|
98
|
+
const result = MockTime.getTimer("Test", 30, () => (firedTime = MockTime.nowMs));
|
|
99
99
|
expect(result.isRunning).equal(false);
|
|
100
100
|
result.start();
|
|
101
101
|
expect(result.isRunning).equal(true);
|