@noldova/context.testing 0.0.0-stage → 0.0.2

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 (132) hide show
  1. package/LICENSE +21 -0
  2. package/api/index.d.ts +2015 -0
  3. package/api/index.js +42 -0
  4. package/api/index.js.map +1 -0
  5. package/decorators/category.js +23 -0
  6. package/decorators/category.js.map +1 -0
  7. package/decorators/skip.js +17 -0
  8. package/decorators/skip.js.map +1 -0
  9. package/decorators/test-class.js +12 -0
  10. package/decorators/test-class.js.map +1 -0
  11. package/decorators/test-data.js +23 -0
  12. package/decorators/test-data.js.map +1 -0
  13. package/decorators/test-method.js +12 -0
  14. package/decorators/test-method.js.map +1 -0
  15. package/enums/test-outcome.js +14 -0
  16. package/enums/test-outcome.js.map +1 -0
  17. package/enums/test-worker-message-kind.js +17 -0
  18. package/enums/test-worker-message-kind.js.map +1 -0
  19. package/enums/test-worker-value-kind.js +16 -0
  20. package/enums/test-worker-value-kind.js.map +1 -0
  21. package/exceptions/assert-failed.exception.js +19 -0
  22. package/exceptions/assert-failed.exception.js.map +1 -0
  23. package/exceptions/test-timeout.exception.js +20 -0
  24. package/exceptions/test-timeout.exception.js.map +1 -0
  25. package/exceptions/testing.exception.js +14 -0
  26. package/exceptions/testing.exception.js.map +1 -0
  27. package/interfaces/i-clock.js +9 -0
  28. package/interfaces/i-clock.js.map +1 -0
  29. package/interfaces/i-coverage-range.js +9 -0
  30. package/interfaces/i-coverage-range.js.map +1 -0
  31. package/interfaces/i-coverage-report.js +9 -0
  32. package/interfaces/i-coverage-report.js.map +1 -0
  33. package/interfaces/i-function-coverage.js +9 -0
  34. package/interfaces/i-function-coverage.js.map +1 -0
  35. package/interfaces/i-script-coverage.js +9 -0
  36. package/interfaces/i-script-coverage.js.map +1 -0
  37. package/interfaces/i-source-map-data.js +9 -0
  38. package/interfaces/i-source-map-data.js.map +1 -0
  39. package/interfaces/i-test-progress-listener.js +9 -0
  40. package/interfaces/i-test-progress-listener.js.map +1 -0
  41. package/models/coverage/block-coverage.js +21 -0
  42. package/models/coverage/block-coverage.js.map +1 -0
  43. package/models/coverage/coverage-project.js +23 -0
  44. package/models/coverage/coverage-project.js.map +1 -0
  45. package/models/coverage/coverage-range.js +18 -0
  46. package/models/coverage/coverage-range.js.map +1 -0
  47. package/models/coverage/coverage-result.js +28 -0
  48. package/models/coverage/coverage-result.js.map +1 -0
  49. package/models/coverage/file-coverage.js +45 -0
  50. package/models/coverage/file-coverage.js.map +1 -0
  51. package/models/coverage/function-coverage.js +14 -0
  52. package/models/coverage/function-coverage.js.map +1 -0
  53. package/models/coverage/line-range.js +25 -0
  54. package/models/coverage/line-range.js.map +1 -0
  55. package/models/coverage/mapped-source-line.js +22 -0
  56. package/models/coverage/mapped-source-line.js.map +1 -0
  57. package/models/coverage/source-map-segment.js +18 -0
  58. package/models/coverage/source-map-segment.js.map +1 -0
  59. package/models/decorators/test-data-entry.js +17 -0
  60. package/models/decorators/test-data-entry.js.map +1 -0
  61. package/models/decorators/test-marks.js +16 -0
  62. package/models/decorators/test-marks.js.map +1 -0
  63. package/models/discovery/discovered-test-class.js +36 -0
  64. package/models/discovery/discovered-test-class.js.map +1 -0
  65. package/models/discovery/discovered-test-method.js +42 -0
  66. package/models/discovery/discovered-test-method.js.map +1 -0
  67. package/models/discovery/test-project.js +20 -0
  68. package/models/discovery/test-project.js.map +1 -0
  69. package/models/execution/test-worker-message.js +76 -0
  70. package/models/execution/test-worker-message.js.map +1 -0
  71. package/models/execution/test-worker-record.js +75 -0
  72. package/models/execution/test-worker-record.js.map +1 -0
  73. package/models/execution/test-worker-result.js +45 -0
  74. package/models/execution/test-worker-result.js.map +1 -0
  75. package/models/execution/test-worker-run.js +31 -0
  76. package/models/execution/test-worker-run.js.map +1 -0
  77. package/models/execution/test-worker-start.js +33 -0
  78. package/models/execution/test-worker-start.js.map +1 -0
  79. package/models/execution/test-worker-text.js +17 -0
  80. package/models/execution/test-worker-text.js.map +1 -0
  81. package/models/execution/test-worker-value.js +104 -0
  82. package/models/execution/test-worker-value.js.map +1 -0
  83. package/models/reporting/coverage-report-row.js +22 -0
  84. package/models/reporting/coverage-report-row.js.map +1 -0
  85. package/models/results/test-class-result.js +29 -0
  86. package/models/results/test-class-result.js.map +1 -0
  87. package/models/results/test-method-result.js +59 -0
  88. package/models/results/test-method-result.js.map +1 -0
  89. package/models/results/test-run-result.js +34 -0
  90. package/models/results/test-run-result.js.map +1 -0
  91. package/models/results/test-run-totals.js +36 -0
  92. package/models/results/test-run-totals.js.map +1 -0
  93. package/models/results/test-selection.js +33 -0
  94. package/models/results/test-selection.js.map +1 -0
  95. package/package.json +25 -4
  96. package/resources.js +309 -0
  97. package/resources.js.map +1 -0
  98. package/services/assert.js +92 -0
  99. package/services/assert.js.map +1 -0
  100. package/services/coverage/coverage-analyzer.js +52 -0
  101. package/services/coverage/coverage-analyzer.js.map +1 -0
  102. package/services/coverage/coverage-report.reader.js +126 -0
  103. package/services/coverage/coverage-report.reader.js.map +1 -0
  104. package/services/coverage/file-coverage-analyzer.js +206 -0
  105. package/services/coverage/file-coverage-analyzer.js.map +1 -0
  106. package/services/coverage/source-map.js +135 -0
  107. package/services/coverage/source-map.js.map +1 -0
  108. package/services/discovery/test-discovery.js +198 -0
  109. package/services/discovery/test-discovery.js.map +1 -0
  110. package/services/execution/parallel-test-runner.js +24 -0
  111. package/services/execution/parallel-test-runner.js.map +1 -0
  112. package/services/execution/test-executor.js +116 -0
  113. package/services/execution/test-executor.js.map +1 -0
  114. package/services/execution/test-run-entry-point.js +89 -0
  115. package/services/execution/test-run-entry-point.js.map +1 -0
  116. package/services/execution/test-run-supervisor.js +251 -0
  117. package/services/execution/test-run-supervisor.js.map +1 -0
  118. package/services/execution/test-run-worker-entry-point.js +18 -0
  119. package/services/execution/test-run-worker-entry-point.js.map +1 -0
  120. package/services/execution/test-run-worker.js +116 -0
  121. package/services/execution/test-run-worker.js.map +1 -0
  122. package/services/execution/test-runner.js +58 -0
  123. package/services/execution/test-runner.js.map +1 -0
  124. package/services/reporting/coverage-report-writer.js +81 -0
  125. package/services/reporting/coverage-report-writer.js.map +1 -0
  126. package/services/reporting/test-console-reporter.js +72 -0
  127. package/services/reporting/test-console-reporter.js.map +1 -0
  128. package/services/reporting/test-report-writer.js +111 -0
  129. package/services/reporting/test-report-writer.js.map +1 -0
  130. package/services/timing/system-clock.js +26 -0
  131. package/services/timing/system-clock.js.map +1 -0
  132. package/README.md +0 -3
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { Resources } from "../../resources.js";
9
+ import { SystemClock } from "../timing/system-clock.js";
10
+ import { TestReportWriter } from "./test-report-writer.js";
11
+ export class TestConsoleReporter {
12
+ write;
13
+ isInteractive;
14
+ skipPassingDetails;
15
+ clock;
16
+ reportWriter;
17
+ progressTimer;
18
+ progressFrame;
19
+ constructor(write, isInteractive, skipPassingDetails, clock = new SystemClock(false)) {
20
+ this.write = write;
21
+ this.isInteractive = isInteractive;
22
+ this.skipPassingDetails = skipPassingDetails;
23
+ this.clock = clock;
24
+ this.reportWriter = new TestReportWriter();
25
+ this.progressFrame = 0;
26
+ }
27
+ start() {
28
+ if (!this.isInteractive)
29
+ return;
30
+ this.drawProgress();
31
+ this.scheduleProgress();
32
+ }
33
+ onClassCompleted(classResult) {
34
+ this.writeClassLines(this.reportWriter.formatClassLines(classResult, this.skipPassingDetails));
35
+ }
36
+ writeClassLines(lines) {
37
+ if (lines.length === 0)
38
+ return;
39
+ const isShowingProgress = !Object.isUndefined(this.progressTimer);
40
+ if (isShowingProgress)
41
+ this.write(Resources.terminalClearLine);
42
+ this.writeLines(lines);
43
+ if (isShowingProgress)
44
+ this.drawProgress();
45
+ }
46
+ stop() {
47
+ if (Object.isUndefined(this.progressTimer))
48
+ return;
49
+ this.clock.clearTimeout(this.progressTimer);
50
+ this.progressTimer = undefined;
51
+ this.write(Resources.terminalClearLine);
52
+ }
53
+ writeSummary(totals, selection) {
54
+ this.stop();
55
+ this.writeLines(this.reportWriter.formatSummaryLines(totals, selection));
56
+ }
57
+ scheduleProgress() {
58
+ this.progressTimer = this.clock.setTimeout(() => this.advanceProgress(), Resources.progressIntervalMilliseconds);
59
+ }
60
+ advanceProgress() {
61
+ this.progressFrame = (this.progressFrame + 1) % Resources.progressFrames.length;
62
+ this.drawProgress();
63
+ this.scheduleProgress();
64
+ }
65
+ drawProgress() {
66
+ this.write(`${Resources.terminalClearLine}${Resources.progressFrames[this.progressFrame]}`);
67
+ }
68
+ writeLines(lines) {
69
+ this.write(`${lines.join(Resources.lineFeed)}${Resources.lineFeed}`);
70
+ }
71
+ }
72
+ //# sourceMappingURL=test-console-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-console-reporter.js","sourceRoot":"","sources":["../../../../../src/noldova.context.testing/src/services/reporting/test-console-reporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import "@noldova/context.core";
9
+ import { TestOutcome } from "../../enums/test-outcome.js";
10
+ import { AssertFailedException } from "../../exceptions/assert-failed.exception.js";
11
+ import { Resources } from "../../resources.js";
12
+ export class TestReportWriter {
13
+ static LABEL_WIDTH = 12;
14
+ formatLines(result, skipPassingDetails) {
15
+ const lines = [];
16
+ for (const classResult of result.classResults)
17
+ lines.push(...this.formatClassLines(classResult, skipPassingDetails));
18
+ lines.push(...this.formatSummaryLines(result, result.selection));
19
+ return lines;
20
+ }
21
+ formatClassLines(classResult, skipPassingDetails) {
22
+ return this.formatClassBlock(this.formatClassHeading(classResult), classResult.methodResults.flatMap(t => this.formatMethodLines(t, skipPassingDetails)), skipPassingDetails);
23
+ }
24
+ formatClassHeading(classResult) {
25
+ return `${classResult.packageName}/${classResult.filePath} — ${classResult.className}`;
26
+ }
27
+ formatMethodLines(methodResult, skipPassingDetails) {
28
+ if (skipPassingDetails && methodResult.outcome === TestOutcome.Passed)
29
+ return [];
30
+ const duration = `${Math.round(methodResult.durationMilliseconds)} ${Resources.millisecondUnit}`;
31
+ const methodName = this.formatMethodName(methodResult);
32
+ if (methodResult.outcome === TestOutcome.Passed)
33
+ return [` ${Resources.terminalGreen}${Resources.passedMark}${Resources.terminalReset} ${methodName} (${duration})`];
34
+ if (methodResult.outcome === TestOutcome.Skipped)
35
+ return [` ${Resources.terminalYellow}${Resources.skippedMark}${Resources.terminalReset} ${Resources.skippedTest(methodName, methodResult.skipReason)}`];
36
+ const lines = [` ${Resources.terminalRed}${Resources.failedMark}${Resources.terminalReset} ${methodName} (${duration})`];
37
+ lines.push(...this.formatFailureLines(methodResult.failure));
38
+ return lines;
39
+ }
40
+ formatClassBlock(heading, methodLines, skipPassingDetails) {
41
+ if (skipPassingDetails && methodLines.length === 0)
42
+ return [];
43
+ return [heading, ...methodLines, String.empty];
44
+ }
45
+ formatSummaryLines(totals, selection) {
46
+ const lines = [Resources.testReportSeparator];
47
+ if (selection?.isFiltered === true)
48
+ lines.push(this.formatRow(Resources.filtersLabel, selection.filters.map(t => JSON.stringify(t)).join(", ")), this.formatRow(Resources.discoveredLabel, selection.discovered), this.formatRow(Resources.selectedLabel, selection.selected), this.formatRow(Resources.unselectedLabel, selection.unselected));
49
+ lines.push(this.formatRow(Resources.totalLabel, totals.total), this.formatRow(Resources.timeLabel, this.formatDuration(totals.durationMilliseconds)), `${Resources.terminalGreen}${this.formatRow(Resources.passedLabel, totals.passed)}${Resources.terminalReset}`);
50
+ if (totals.failed > 0)
51
+ lines.push(`${Resources.terminalRed}${this.formatRow(Resources.failedLabel, totals.failed)}${Resources.terminalReset}`);
52
+ if (totals.skipped > 0)
53
+ lines.push(`${Resources.terminalYellow}${this.formatRow(Resources.skippedLabel, totals.skipped)}${Resources.terminalReset}`);
54
+ return lines;
55
+ }
56
+ formatRow(label, value) {
57
+ return `${label.padEnd(TestReportWriter.LABEL_WIDTH)}${value}`;
58
+ }
59
+ formatDuration(durationMilliseconds) {
60
+ const roundedMilliseconds = Math.round(durationMilliseconds);
61
+ if (roundedMilliseconds < Resources.millisecondsPerSecond)
62
+ return `${roundedMilliseconds} ${Resources.millisecondUnit}`;
63
+ const totalCentiseconds = Math.round(roundedMilliseconds / Resources.millisecondsPerCentisecond);
64
+ const centisecondsPerMinute = Resources.centisecondsPerSecond * Resources.secondsPerMinute;
65
+ if (totalCentiseconds < centisecondsPerMinute)
66
+ return `${(totalCentiseconds / Resources.centisecondsPerSecond).toFixed(Resources.durationDecimalPlaces)} ${Resources.secondUnit}`;
67
+ const totalMinutes = Math.floor(totalCentiseconds / centisecondsPerMinute);
68
+ const seconds = totalCentiseconds % centisecondsPerMinute / Resources.centisecondsPerSecond;
69
+ if (totalMinutes < Resources.minutesPerHour)
70
+ return `${totalMinutes} ${Resources.minuteUnit} ${seconds.toFixed(Resources.durationDecimalPlaces)} ${Resources.secondUnit}`;
71
+ const hours = Math.floor(totalMinutes / Resources.minutesPerHour);
72
+ const minutes = totalMinutes % Resources.minutesPerHour;
73
+ return `${hours} ${Resources.hourUnit} ${minutes} ${Resources.minuteUnit} ${seconds.toFixed(Resources.durationDecimalPlaces)} ${Resources.secondUnit}`;
74
+ }
75
+ formatMethodName(methodResult) {
76
+ if (Object.isUndefined(methodResult.testDataIndex))
77
+ return methodResult.methodName;
78
+ return `${methodResult.methodName}[${methodResult.testDataIndex}](${methodResult.testData.map(t => this.formatValue(t)).join(Resources.valueSeparator)})`;
79
+ }
80
+ formatFailureLines(failure) {
81
+ try {
82
+ if (failure instanceof AssertFailedException) {
83
+ const lines = [`${Resources.reportIndent.repeat(2)}${this.formatValue(failure)}`];
84
+ if (!Object.isUndefined(failure.expected) || !Object.isUndefined(failure.actual)) {
85
+ lines.push(`${Resources.reportIndent.repeat(2)}${Resources.expectedLabel} ${this.formatValue(failure.expected)}`);
86
+ lines.push(`${Resources.reportIndent.repeat(2)}${Resources.actualLabel} ${this.formatValue(failure.actual)}`);
87
+ }
88
+ return lines;
89
+ }
90
+ if (failure instanceof Error)
91
+ return [`${Resources.reportIndent.repeat(2)}${this.formatValue(failure)}`];
92
+ return [`${Resources.reportIndent.repeat(2)}${Resources.threwLabel} ${this.formatValue(failure)}`];
93
+ }
94
+ catch {
95
+ return [`${Resources.reportIndent.repeat(2)}${Resources.threwLabel} ${Resources.unprintableValue}`];
96
+ }
97
+ }
98
+ formatValue(value) {
99
+ try {
100
+ if (Object.isString(value))
101
+ return JSON.stringify(value);
102
+ if (value instanceof Error)
103
+ return `${value.name}: ${value.message}`;
104
+ return String(value);
105
+ }
106
+ catch {
107
+ return Resources.unprintableValue;
108
+ }
109
+ }
110
+ }
111
+ //# sourceMappingURL=test-report-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-report-writer.js","sourceRoot":"","sources":["../../../../../src/noldova.context.testing/src/services/reporting/test-report-writer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,uBAAuB,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAMpF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAU,WAAW,GAAW,EAAE,CAAC;IAE1C,WAAW,CAAC,MAAqB,EAAE,kBAA2B;QACnE,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,YAAY;YAC3C,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAExE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,gBAAgB,CAAC,WAA4B,EAAE,kBAA2B;QAC/E,OAAO,IAAI,CAAC,gBAAgB,CAC1B,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EACpC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,EACrF,kBAAkB,CAAC,CAAC;IACxB,CAAC;IAEM,kBAAkB,CAAC,WAA4B;QACpD,OAAO,GAAG,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,QAAQ,MAAM,WAAW,CAAC,SAAS,EAAE,CAAC;IACzF,CAAC;IAEM,iBAAiB,CAAC,YAA8B,EAAE,kBAA2B;QAClF,IAAI,kBAAkB,IAAI,YAAY,CAAC,OAAO,KAAK,WAAW,CAAC,MAAM;YACnE,OAAO,EAAE,CAAC;QAEZ,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;QACjG,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAEvD,IAAI,YAAY,CAAC,OAAO,KAAK,WAAW,CAAC,MAAM;YAC7C,OAAO,CAAC,KAAK,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,aAAa,IAAI,UAAU,KAAK,QAAQ,GAAG,CAAC,CAAC;QAEvH,IAAI,YAAY,CAAC,OAAO,KAAK,WAAW,CAAC,OAAO;YAC9C,OAAO,CAAC,KAAK,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAE3J,MAAM,KAAK,GAAG,CAAC,KAAK,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,aAAa,IAAI,UAAU,KAAK,QAAQ,GAAG,CAAC,CAAC;QAC1H,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,gBAAgB,CAAC,OAAe,EAAE,WAA8B,EAAE,kBAA2B;QAClG,IAAI,kBAAkB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAChD,OAAO,EAAE,CAAC;QAEZ,OAAO,CAAC,OAAO,EAAE,GAAG,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAEM,kBAAkB,CAAC,MAAqB,EAAE,SAAyB;QACxE,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC9C,IAAI,SAAS,EAAE,UAAU,KAAK,IAAI;YAChC,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAChG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,UAAU,CAAC,EAC/D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC3D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAErE,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,EAClD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,EACrF,GAAG,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC;QACjH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC;QAC1H,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC;QAE/H,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,SAAS,CAAC,KAAa,EAAE,KAAsB;QACrD,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC;IACjE,CAAC;IAEO,cAAc,CAAC,oBAA4B;QACjD,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC7D,IAAI,mBAAmB,GAAG,SAAS,CAAC,qBAAqB;YACvD,OAAO,GAAG,mBAAmB,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;QAE/D,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACjG,MAAM,qBAAqB,GAAG,SAAS,CAAC,qBAAqB,GAAG,SAAS,CAAC,gBAAgB,CAAC;QAC3F,IAAI,iBAAiB,GAAG,qBAAqB;YAC3C,OAAO,GAAG,CAAC,iBAAiB,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QAErI,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,iBAAiB,GAAG,qBAAqB,GAAG,SAAS,CAAC,qBAAqB,CAAC;QAC5F,IAAI,YAAY,GAAG,SAAS,CAAC,cAAc;YACzC,OAAO,GAAG,YAAY,IAAI,SAAS,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QAE/H,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,YAAY,GAAG,SAAS,CAAC,cAAc,CAAC;QACxD,OAAO,GAAG,KAAK,IAAI,SAAS,CAAC,QAAQ,IAAI,OAAO,IAAI,SAAS,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;IACzJ,CAAC;IAEO,gBAAgB,CAAC,YAA8B;QACrD,IAAI,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC;YAChD,OAAO,YAAY,CAAC,UAAU,CAAC;QAEjC,OAAO,GAAG,YAAY,CAAC,UAAU,IAAI,YAAY,CAAC,aAAa,KAAK,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC;IAC5J,CAAC;IAEO,kBAAkB,CAAC,OAAgB;QACzC,IAAI,CAAC;YACH,IAAI,OAAO,YAAY,qBAAqB,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAClF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjF,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAClH,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAClH,CAAC;gBAED,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,OAAO,YAAY,KAAK;gBAC1B,OAAO,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAE7E,OAAO,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrG,CAAC;QACD,MAAM,CAAC;YACL,OAAO,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,KAAc;QAChC,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACxB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAE/B,IAAI,KAAK,YAAY,KAAK;gBACxB,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YAE3C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,CAAC;YACL,OAAO,SAAS,CAAC,gBAAgB,CAAC;QACpC,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ export class SystemClock {
9
+ keepsProcessAlive;
10
+ constructor(keepsProcessAlive = true) {
11
+ this.keepsProcessAlive = keepsProcessAlive;
12
+ }
13
+ now() {
14
+ return performance.now();
15
+ }
16
+ setTimeout(callback, delayMilliseconds) {
17
+ const timer = setTimeout(callback, delayMilliseconds);
18
+ if (!this.keepsProcessAlive)
19
+ timer.unref();
20
+ return Number(timer);
21
+ }
22
+ clearTimeout(timer) {
23
+ clearTimeout(timer);
24
+ }
25
+ }
26
+ //# sourceMappingURL=system-clock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-clock.js","sourceRoot":"","sources":["../../../../../src/noldova.context.testing/src/services/timing/system-clock.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,OAAO,WAAW;IACL,iBAAiB,CAAU;IAE5C,YAAmB,iBAAiB,GAAY,IAAI;QAClD,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAEM,GAAG;QACR,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;IAEM,UAAU,CAAC,QAAoB,EAAE,iBAAyB;QAC/D,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,iBAAiB;YACzB,KAAK,CAAC,KAAK,EAAE,CAAC;QAEhB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAEM,YAAY,CAAC,KAAyB;QAC3C,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;CACF"}
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.