Skip to content

Commit f79e47c

Browse files
committed
Improve NotEnoughDataError
1 parent 3ac26be commit f79e47c

File tree

7 files changed

+13
-22
lines changed

7 files changed

+13
-22
lines changed

src/EMA/EMA.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export class EMA extends MovingAverage {
4747

4848
override getResultOrThrow(): Big {
4949
if (this.pricesCounter < this.interval) {
50-
throw new NotEnoughDataError();
50+
throw new NotEnoughDataError(this.getRequiredInputs());
5151
}
5252

5353
return this.result!;
@@ -94,7 +94,7 @@ export class FasterEMA extends FasterMovingAverage {
9494

9595
override getResultOrThrow(): number {
9696
if (this.pricesCounter < this.interval) {
97-
throw new NotEnoughDataError();
97+
throw new NotEnoughDataError(this.getRequiredInputs());
9898
}
9999

100100
return this.result!;

src/Indicator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export abstract class TechnicalIndicator<Result, Input> implements Indicator<Res
2929

3030
getResultOrThrow() {
3131
if (this.result === undefined) {
32-
throw new NotEnoughDataError();
32+
throw new NotEnoughDataError(this.getRequiredInputs());
3333
}
3434

3535
return this.result;

src/LINREG/LinearRegression.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ export class LinearRegression extends TechnicalIndicator<LinearRegressionResult,
7575

7676
override getResultOrThrow(): LinearRegressionResult {
7777
if (this.prices.length < this.interval) {
78-
throw new NotEnoughDataError();
78+
throw new NotEnoughDataError(this.getRequiredInputs());
7979
}
8080
return this.result!;
8181
}
@@ -149,13 +149,6 @@ export class FasterLinearRegression extends TechnicalIndicator<FasterLinearRegre
149149
return (this.result = this.calculateRegression(this.prices));
150150
}
151151

152-
override getResultOrThrow(): FasterLinearRegressionResult {
153-
if (!this.result) {
154-
throw new NotEnoughDataError();
155-
}
156-
return this.result;
157-
}
158-
159152
override get isStable(): boolean {
160153
try {
161154
this.getResultOrThrow();

src/PSAR/PSAR.test.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -416,12 +416,10 @@ describe('FasterPSAR (Number version)', () => {
416416
// Test the specific error message
417417
try {
418418
psar.getResultOrThrow();
419+
expect.fail('Expected error to be an instance of Error');
419420
} catch (error) {
420-
if (error instanceof Error) {
421-
expect(error.message).toBe('PSAR requires at least 2 candles');
422-
} else {
423-
expect.fail('Expected error to be an instance of Error');
424-
}
421+
assert(error instanceof Error);
422+
expect(error.message).toBe('Not enough data. A minimum of "2" inputs is required to perform the computation.');
425423
}
426424
});
427425

src/PSAR/PSAR.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ export class PSAR extends BigIndicatorSeries<HighLow> {
201201

202202
override getResultOrThrow(): Big {
203203
if (this.lastSar === null) {
204-
throw new NotEnoughDataError('PSAR requires at least 2 candles');
204+
throw new NotEnoughDataError(this.getRequiredInputs());
205205
}
206206

207207
return super.getResultOrThrow();
@@ -378,7 +378,7 @@ export class FasterPSAR extends NumberIndicatorSeries<HighLow<number>> {
378378

379379
override getResultOrThrow(): number {
380380
if (this.lastSar === null) {
381-
throw new NotEnoughDataError('PSAR requires at least 2 candles');
381+
throw new NotEnoughDataError(this.getRequiredInputs());
382382
}
383383

384384
return super.getResultOrThrow();

src/RMA/RMA.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export class RMA extends MovingAverage {
4747

4848
override getResultOrThrow(): Big {
4949
if (this.pricesCounter < this.interval) {
50-
throw new NotEnoughDataError();
50+
throw new NotEnoughDataError(this.getRequiredInputs());
5151
}
5252

5353
return this.result!;
@@ -94,7 +94,7 @@ export class FasterRMA extends FasterMovingAverage {
9494

9595
override getResultOrThrow(): number {
9696
if (this.pricesCounter < this.interval) {
97-
throw new NotEnoughDataError();
97+
throw new NotEnoughDataError(this.getRequiredInputs());
9898
}
9999

100100
return this.result!;

src/error/NotEnoughDataError.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export class NotEnoughDataError extends Error {
2-
constructor(message: string = 'Not enough data') {
3-
super(message);
2+
constructor(requiredAmount: number) {
3+
super(`Not enough data. A minimum of "${requiredAmount}" inputs is required to perform the computation.`);
44
Object.setPrototypeOf(this, new.target.prototype);
55
this.name = 'NotEnoughDataError';
66
}

0 commit comments

Comments
 (0)