diff --git a/dead-code/exercise-1.js b/dead-code/exercise-1.js index 4d09f15fa9..f0187afed1 100644 --- a/dead-code/exercise-1.js +++ b/dead-code/exercise-1.js @@ -1,17 +1,9 @@ -// Find the instances of unreachable and redundant code - remove them! -// The sayHello function should continue to work for any reasonable input it's given. - -let testName = "Jerry"; +let testName = "Aman"; const greeting = "hello"; function sayHello(greeting, name) { - const greetingStr = greeting + ", " + name + "!"; return `${greeting}, ${name}!`; - console.log(greetingStr); } -testName = "Aman"; - const greetingMessage = sayHello(greeting, testName); - console.log(greetingMessage); // 'hello, Aman!' diff --git a/dead-code/exercise-2.js b/dead-code/exercise-2.js index 56d7887c4c..c85731369d 100644 --- a/dead-code/exercise-2.js +++ b/dead-code/exercise-2.js @@ -1,17 +1,9 @@ -// Remove the unused code that does not contribute to the final console log -// The countAndCapitalisePets function should continue to work for any reasonable input it's given, and you shouldn't modify the pets variable. - const pets = ["parrot", "hamster", "horse", "dog", "hamster", "cat", "hamster"]; -const capitalisedPets = pets.map((pet) => pet.toUpperCase()); -const petsStartingWithH = pets.filter((pet) => pet[0] === "h"); -function logPets(petsArr) { - petsArr.forEach((pet) => console.log(pet)); -} +const petsStartingWithH = pets.filter((pet) => pet[0] === "h"); function countAndCapitalisePets(petsArr) { const petCount = {}; - petsArr.forEach((pet) => { const capitalisedPet = pet.toUpperCase(); if (petCount[capitalisedPet]) { diff --git a/format-clock-edge-cases/timeConverter.js b/format-clock-edge-cases/timeConverter.js index 310c07bd9c..dd53f4e71b 100644 --- a/format-clock-edge-cases/timeConverter.js +++ b/format-clock-edge-cases/timeConverter.js @@ -1,11 +1,24 @@ function formatAs12HourClock(time) { + + const [hoursStr, minutesStr] = time.split(':'); + const hours = Number(hoursStr); + const minutes = minutesStr; - const hours = Number(time.slice(0, 2)); + if (hours === 0 || hours === 24) { + return `12:${minutes} am`; + } + + if (hours === 12) { + return `12:${minutes} pm`; + } if (hours > 12) { - return `${hours - 12}:00 pm`; + const formattedHours = String(hours - 12).padStart(2, '0'); + return `${formattedHours}:${minutes} pm`; } - return `${time} am`; + + const formattedHours = String(hours).padStart(2, '0'); + return `${formattedHours}:${minutes} am`; } -export {formatAs12HourClock}; +export {formatAs12HourClock}; \ No newline at end of file diff --git a/format-clock-edge-cases/timeConverter.test.js b/format-clock-edge-cases/timeConverter.test.js index 88f2af0948..a9608c505a 100644 --- a/format-clock-edge-cases/timeConverter.test.js +++ b/format-clock-edge-cases/timeConverter.test.js @@ -2,10 +2,94 @@ import {formatAs12HourClock} from "./timeConverter.js"; import assert from "node:assert"; import test from "node:test"; -test("correctly convert time after 12:00", function(){ +test("correctly convert hours after 12:00", () => { assert.equal(formatAs12HourClock("23:00"), "11:00 pm"); }); -test("can correctly convert morning time", function() { +test("correctly convert minutes after 12:00", () => { + assert.equal(formatAs12HourClock("23:53"), "11:53 pm"); +}); + +test("can correctly convert morning time", () => { assert.equal(formatAs12HourClock("08:00"), "08:00 am"); }); + +test("can correctly convert morning time minutes", () => { + assert.equal(formatAs12HourClock("08:30"), "08:30 am"); +}); + +test("can correctly convert morning time minutes", () => { + assert.equal(formatAs12HourClock("08:34"), "08:34 am"); +}); + +test("can successfully convert midnight time", () => + assert.equal(formatAs12HourClock("24:00"), "12:00 am")); + +test("correctly convert midnight 00:00", () => { + assert.equal(formatAs12HourClock("00:00"), "12:00 am"); +}); + +test("correctly convert noon 12:00", () => { + assert.equal(formatAs12HourClock("12:00"), "12:00 pm"); +}); + +test("correctly convert boundary time around noon", () => { + assert.equal(formatAs12HourClock("11:59"), "11:59 am"); + assert.equal(formatAs12HourClock("12:01"), "12:01 pm"); +}); + +test("correctly convert early afternoon hours", () => { + assert.equal(formatAs12HourClock("13:00"), "01:00 pm"); +}); + +test("correctly convert single-digit morning hours if supported", () => { + assert(formatAs12HourClock("08:30"), "08:30am"); +}); + +/* +Edge cases: +Correctly convert hours after 12:00 +Input | Expected +23:00 11:00 pm + +Correctly convert afternoon hours and minutes +Input | Expected +23:00 11:53 pm + +Correctly convert morning time and minutes +Input | Expected +08:00 08:00 am + +Correctly convert morning time and minutes +Input | Expected +08:30 08:30 am + +Correctly convert morning time and minutes +Input | Expected +08:34 08:34 am + +Correctly convert midnight time +Input | Expected +24:00 12:00 am + +Correctly convert midnight +Input | Expected +00:00 12:00 am + +Correctly convert noon +Input | Expected +12:00 12:00 pm + +Correctly convert boundary time around noon +Input | Expected +11:59 11:59 am +12:01 12:01 pm + +Correctly convert early afternoon hours +Input | Expected +13:00 1:00 pm + +Correctly convert single-digit morning hours if supported +Input | Expected +08:30 8:30 am +*/ \ No newline at end of file