From 3cf30fafeeb63330bda3e6e2cbfb6d2d3ada7580 Mon Sep 17 00:00:00 2001 From: Jonas Scheffner Date: Thu, 26 Apr 2018 14:03:19 +0200 Subject: [PATCH 1/4] robot-simulator: fix test that didn't fail if nothing was thrown --- exercises/robot-simulator/robot-simulator.spec.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/exercises/robot-simulator/robot-simulator.spec.js b/exercises/robot-simulator/robot-simulator.spec.js index d71af12324..bf9155a71f 100644 --- a/exercises/robot-simulator/robot-simulator.spec.js +++ b/exercises/robot-simulator/robot-simulator.spec.js @@ -13,11 +13,7 @@ describe('Robot', () => { }); xtest('invalid robot bearing', () => { - try { - robot.orient('crood'); - } catch (exception) { - expect(exception).toEqual('Invalid Robot Bearing'); - } + expect(() => robot.orient('crood')).toThrow('Invalid Robot Bearing'); }); xtest('turn right from north', () => { From 575fc91f15932cc73bdb107fcd3b84bcc77a0626 Mon Sep 17 00:00:00 2001 From: Jonas Scheffner Date: Thu, 26 Apr 2018 14:37:48 +0200 Subject: [PATCH 2/4] robot-simulator: fix example --- exercises/robot-simulator/example.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/exercises/robot-simulator/example.js b/exercises/robot-simulator/example.js index f086a79ec8..75f3449a17 100644 --- a/exercises/robot-simulator/example.js +++ b/exercises/robot-simulator/example.js @@ -9,6 +9,11 @@ class Robot { } orient(direction) { + const validDirections = ['north', 'south', 'east', 'west']; + if (!validDirections.includes(direction)) { + throw 'Invalid Robot Bearing'; + } + this.bearing = direction; return `The robot is pointed ${direction}`; } From e2d6f7f368076bd7b5c8b96d4764316e7c5d6e62 Mon Sep 17 00:00:00 2001 From: Jonas Scheffner Date: Fri, 1 Jun 2018 18:19:03 +0200 Subject: [PATCH 3/4] throw custom exception if input invalid --- exercises/robot-simulator/example.js | 9 ++++++++- exercises/robot-simulator/robot-simulator.spec.js | 6 ++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/exercises/robot-simulator/example.js b/exercises/robot-simulator/example.js index 75f3449a17..e4d9c48188 100644 --- a/exercises/robot-simulator/example.js +++ b/exercises/robot-simulator/example.js @@ -1,3 +1,10 @@ +export class InvalidInputError extends Error { + constructor(message) { + super(); + this.message = message || 'Invalid Input'; + } +} + class Robot { constructor() { this.coordinates = [0, 0]; @@ -11,7 +18,7 @@ class Robot { orient(direction) { const validDirections = ['north', 'south', 'east', 'west']; if (!validDirections.includes(direction)) { - throw 'Invalid Robot Bearing'; + throw new InvalidInputError('Invalid Robot Bearing'); } this.bearing = direction; diff --git a/exercises/robot-simulator/robot-simulator.spec.js b/exercises/robot-simulator/robot-simulator.spec.js index bf9155a71f..7552e57cb7 100644 --- a/exercises/robot-simulator/robot-simulator.spec.js +++ b/exercises/robot-simulator/robot-simulator.spec.js @@ -1,9 +1,10 @@ import Robot from './robot-simulator'; +import { InvalidInputError } from './robot-simulator'; describe('Robot', () => { const robot = new Robot(); - test('robot bearing', () => { + xtest('robot bearing', () => { const directions = ['east', 'west', 'north', 'south']; directions.forEach((currentDirection) => { @@ -13,7 +14,8 @@ describe('Robot', () => { }); xtest('invalid robot bearing', () => { - expect(() => robot.orient('crood')).toThrow('Invalid Robot Bearing'); + expect(InvalidInputError.prototype).toBeInstanceOf(Error); + expect(() => robot.orient('crood')).toThrow(InvalidInputError); }); xtest('turn right from north', () => { From 2a028468b23669a5873565706ff454579ec28631 Mon Sep 17 00:00:00 2001 From: Jonas Scheffner Date: Fri, 1 Jun 2018 18:26:44 +0200 Subject: [PATCH 4/4] stop skipping first test --- exercises/robot-simulator/robot-simulator.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/robot-simulator/robot-simulator.spec.js b/exercises/robot-simulator/robot-simulator.spec.js index 7552e57cb7..2a46dcc534 100644 --- a/exercises/robot-simulator/robot-simulator.spec.js +++ b/exercises/robot-simulator/robot-simulator.spec.js @@ -4,7 +4,7 @@ import { InvalidInputError } from './robot-simulator'; describe('Robot', () => { const robot = new Robot(); - xtest('robot bearing', () => { + test('robot bearing', () => { const directions = ['east', 'west', 'north', 'south']; directions.forEach((currentDirection) => {