Skip to content

Commit 6cb0d03

Browse files
author
programmiri
committed
Solve exercise triangle
1 parent 624a17d commit 6cb0d03

File tree

2 files changed

+49
-14
lines changed

2 files changed

+49
-14
lines changed

triangle/triangle.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
class Triangle {
2+
constructor(a, b, c) {
3+
this.a = a;
4+
this.b = b;
5+
this.c = c;
6+
}
7+
8+
kind() {
9+
if (this.a + this.b + this.c <= 0) {
10+
throw new Error();
11+
}
12+
13+
if (this.a < 0 || this.b < 0 || this.c < 0) {
14+
throw new Error();
15+
}
16+
17+
if (
18+
this.a + this.b < this.c ||
19+
this.a + this.c < this.b ||
20+
this.b + this.c < this.a
21+
) {
22+
throw new Error();
23+
}
24+
25+
if (this.a === this.b && this.b === this.c) {
26+
return 'equilateral';
27+
}
28+
if (this.a === this.b || this.a === this.c || this.b === this.c) {
29+
return 'isosceles';
30+
}
31+
return 'scalene';
32+
}
33+
}
34+
35+
export { Triangle };

triangle/triangle.spec.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,72 +6,72 @@ describe('Triangle', () => {
66
expect(triangle.kind()).toEqual('equilateral');
77
});
88

9-
xtest('larger equilateral triangles also have equal sides', () => {
9+
test('larger equilateral triangles also have equal sides', () => {
1010
const triangle = new Triangle(10, 10, 10);
1111
expect(triangle.kind()).toEqual('equilateral');
1212
});
1313

14-
xtest('isosceles triangles have last two sides equal', () => {
14+
test('isosceles triangles have last two sides equal', () => {
1515
const triangle = new Triangle(3, 4, 4);
1616
expect(triangle.kind()).toEqual('isosceles');
1717
});
1818

19-
xtest('isosceles trianges have first and last sides equal', () => {
19+
test('isosceles trianges have first and last sides equal', () => {
2020
const triangle = new Triangle(4, 3, 4);
2121
expect(triangle.kind()).toEqual('isosceles');
2222
});
2323

24-
xtest('isosceles triangles have two first sides equal', () => {
24+
test('isosceles triangles have two first sides equal', () => {
2525
const triangle = new Triangle(4, 4, 3);
2626
expect(triangle.kind()).toEqual('isosceles');
2727
});
2828

29-
xtest('isosceles triangles have in fact exactly two sides equal', () => {
29+
test('isosceles triangles have in fact exactly two sides equal', () => {
3030
const triangle = new Triangle(10, 10, 2);
3131
expect(triangle.kind()).toEqual('isosceles');
3232
});
3333

34-
xtest('scalene triangles have no equal sides', () => {
34+
test('scalene triangles have no equal sides', () => {
3535
const triangle = new Triangle(3, 4, 5);
3636
expect(triangle.kind()).toEqual('scalene');
3737
});
3838

39-
xtest('scalene triangles have no equal sides at a larger scale too', () => {
39+
test('scalene triangles have no equal sides at a larger scale too', () => {
4040
const triangle = new Triangle(10, 11, 12);
4141
expect(triangle.kind()).toEqual('scalene');
4242
});
4343

44-
xtest('scalene triangles have no equal sides in descending order either', () => {
44+
test('scalene triangles have no equal sides in descending order either', () => {
4545
const triangle = new Triangle(5, 4, 2);
4646
expect(triangle.kind()).toEqual('scalene');
4747
});
4848

49-
xtest('very small triangles are legal', () => {
49+
test('very small triangles are legal', () => {
5050
const triangle = new Triangle(0.4, 0.6, 0.3);
5151
expect(triangle.kind()).toEqual('scalene');
5252
});
5353

54-
xtest('test triangles with no size are illegal', () => {
54+
test('test triangles with no size are illegal', () => {
5555
const triangle = new Triangle(0, 0, 0);
5656
expect(triangle.kind.bind(triangle)).toThrow();
5757
});
5858

59-
xtest('triangles with negative sides are illegal', () => {
59+
test('triangles with negative sides are illegal', () => {
6060
const triangle = new Triangle(3, 4, -5);
6161
expect(triangle.kind.bind(triangle)).toThrow();
6262
});
6363

64-
xtest('triangles violating triangle inequality are illegal', () => {
64+
test('triangles violating triangle inequality are illegal', () => {
6565
const triangle = new Triangle(1, 1, 3);
6666
expect(triangle.kind.bind(triangle)).toThrow();
6767
});
6868

69-
xtest('triangles violating triangle inequality are illegal 2', () => {
69+
test('triangles violating triangle inequality are illegal 2', () => {
7070
const triangle = new Triangle(7, 3, 2);
7171
expect(triangle.kind.bind(triangle)).toThrow();
7272
});
7373

74-
xtest('triangles violating triangle inequality are illegal 3', () => {
74+
test('triangles violating triangle inequality are illegal 3', () => {
7575
const triangle = new Triangle(10, 1, 3);
7676
expect(triangle.kind.bind(triangle)).toThrow();
7777
});

0 commit comments

Comments
 (0)