From b25e4c1ea9f54f44182253d5f880638c9da4adfb Mon Sep 17 00:00:00 2001 From: MSilva95 Date: Mon, 1 Jun 2020 10:30:17 +0100 Subject: [PATCH] new exercise doctor strange for js-piscine date --- js/tests/doctor-strange_test.js | 52 +++++++++++++++++++++++++++++++++ subjects/doctor-strange.en.md | 24 +++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 js/tests/doctor-strange_test.js create mode 100644 subjects/doctor-strange.en.md diff --git a/js/tests/doctor-strange_test.js b/js/tests/doctor-strange_test.js new file mode 100644 index 00000000..adea7a42 --- /dev/null +++ b/js/tests/doctor-strange_test.js @@ -0,0 +1,52 @@ +export const tests = [] +const t = (f) => tests.push(f) +//First week year 0001 +t(() => addWeek(new Date('0001-01-01')) === 'Monday') +t(() => addWeek(new Date('0001-01-02')) === 'Tuesday') +t(() => addWeek(new Date('0001-01-03')) === 'Wednesday') +t(() => addWeek(new Date('0001-01-04')) === 'Thursday') +t(() => addWeek(new Date('0001-01-05')) === 'Friday') +t(() => addWeek(new Date('0001-01-06')) === 'Saturday') +t(() => addWeek(new Date('0001-01-07')) === 'Sunday') +t(() => addWeek(new Date('0001-01-08')) === 'secondMonday') +t(() => addWeek(new Date('0001-01-09')) === 'secondTuesday') +t(() => addWeek(new Date('0001-01-10')) === 'secondWednesday') +t(() => addWeek(new Date('0001-01-11')) === 'secondThursday') +t(() => addWeek(new Date('0001-01-12')) === 'secondFriday') +t(() => addWeek(new Date('0001-01-13')) === 'secondSaturday') +t(() => addWeek(new Date('0001-01-14')) === 'secondSunday') + +//random years +t(() => addWeek(new Date('2025-08-11')) === 'secondMonday') +t(() => addWeek(new Date('2001-05-11')) === 'secondFriday') +t(() => addWeek(new Date('2001-11-07')) === 'secondWednesday') +t(() => addWeek(new Date('0001-12-01')) === 'secondSaturday') +t(() => addWeek(new Date('1664-08-09')) === 'Saturday') +t(() => addWeek(new Date('1995-11-07')) === 'Tuesday') +t(() => addWeek(new Date('2020-01-01')) === 'Wednesday') +t(() => addWeek(new Date('2048-12-07')) === 'Monday') + +//random time traveling +const test = (time, rightTime, { eq }) => + eq(time.getTime(), new Date(rightTime).getTime()) + +t((_) => + test(timeTravel('2020-05-29 23:25:22', 21, 22, 22), '2020-05-29 21:22:22', _) +) +t((_) => + test(timeTravel('2000-05-09 01:28:02', 21, 22, 22), '2000-05-09 21:22:22', _) +) +t((_) => + test(timeTravel('2018-06-04 13:01:00', 10, 16, 11), '2018-06-04 10:16:11', _) +) +t((_) => + test(timeTravel('1995-11-07 00:21:12', 23, 12, 18), '1995-11-07 23:12:18', _) +) +t((_) => + test(timeTravel('1000-09-19 06:00:00', 22, 10, 21), '1000-09-19 22:10:21', _) +) +t((_) => + test(timeTravel('1975-05-10 10:07:56', 17, 15, 14), '1975-05-10 17:15:14', _) +) + +Object.freeze(tests) diff --git a/subjects/doctor-strange.en.md b/subjects/doctor-strange.en.md new file mode 100644 index 00000000..de75824c --- /dev/null +++ b/subjects/doctor-strange.en.md @@ -0,0 +1,24 @@ +## Doctor Strange + +### Instructions + +You have been given the mission to create a new sense of time. +Instead of a normal week having only 7 days, you will have 14 days. +Your mission is to create an `addWeek` function that can make this happen. +So now, a week is 14 days from `Monday` to `Sunday` then `secondMonday` to `secondSunday`. + +Now imagine you have a doctor appointment and you have to wait some hours. +But you do not want to wait, so what you need to do is create a +function `timeTravel` that allows you to change the time according to your needs, this function +it can go backwards or forwards in time. +You will have a function that takes a date and you will pass 3 more parameters to change +the hour, minute and seconds. + +### Example + +```js +timeTravel(date, hour, minute, second) + +timeTravel(new Date('2020-05-29 23:25:22'), 21, 22, 22) +Output: '21:22:22' +```