Skip to content

Commit 71cd051

Browse files
committed
🧪 Failing range
1 parent 3689ec2 commit 71cd051

File tree

3 files changed

+39
-2
lines changed

3 files changed

+39
-2
lines changed

range.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { range } from "./range.ts";
2+
import { assert } from "./testing.ts";
3+
4+
Deno.test("[range]", () => {
5+
const result = range(1, 3);
6+
const expectedResult = [1, 2, 3];
7+
8+
for (let i = 0; i < 3; i++) {
9+
assert(result[i] === expectedResult[i]);
10+
}
11+
12+
const resultTwo = range(1, 10, 2);
13+
const expectedResultTwo = [1, 3, 5, 7, 9];
14+
console.log(resultTwo);
15+
16+
for (let i = 0; i < 3; i++) {
17+
assert(resultTwo[i] === expectedResultTwo[i]);
18+
}
19+
});

range.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
function areNumbers(values: unknown[]): values is number[] {
2+
return values.every(Number.isInteger);
3+
}
4+
5+
export function range(start: number, end: number, step = 1): number[] {
6+
if (!areNumbers([start, end, step])) {
7+
throw new TypeError("Exepected all parameters to be numbers.");
8+
}
9+
10+
const length = end - start + 1;
11+
12+
let counter = 0;
13+
14+
return Array.from({ length }, () => (counter += step));
15+
}

testing.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1-
export function assert(condition: unknown): asserts condition is true {
1+
export function assert(
2+
condition: unknown,
3+
message = "Codition is false!"
4+
): asserts condition {
25
if (!condition) {
3-
throw new Error("Codition is false!");
6+
throw new Error(message);
47
}
58
}

0 commit comments

Comments
 (0)