From 4076a9a553d0ec07f16b2b8ad53d857bf4fcb2ab Mon Sep 17 00:00:00 2001 From: bartoszkawiak Date: Wed, 23 Sep 2026 18:54:39 +0100 Subject: [PATCH] function fixed and tested --- format-clock-edge-cases/timeConverter.js | 20 ++++++++++++---- format-clock-edge-cases/timeConverter.test.js | 23 +++++++++++++++---- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/format-clock-edge-cases/timeConverter.js b/format-clock-edge-cases/timeConverter.js index 310c07bd9..23a25ff70 100644 --- a/format-clock-edge-cases/timeConverter.js +++ b/format-clock-edge-cases/timeConverter.js @@ -1,11 +1,23 @@ -function formatAs12HourClock(time) { +//Think of as many edge-cases as you can with this code. +// Write tests for all of them, and fix this code so that it works correctly for all valid inputs. +// You don't need to worry about invalid inputs (e.g. `"25:00"`). +function formatAs12HourClock(time) { const hours = Number(time.slice(0, 2)); + const minutes = Number(time.slice(3, 5)); + + const paddedHours = hours.toString().padStart(2, "0"); + const paddedMinutes = minutes.toString().padStart(2, "0"); if (hours > 12) { - return `${hours - 12}:00 pm`; + return `${(hours - 12).toString().padStart(2, "0")}:${paddedMinutes} pm`; + } else if (hours === 12) { + return `${paddedHours}:${paddedMinutes} pm`; + } else if (hours === 0) { + return `12:${paddedMinutes} am`; + } else { + return `${paddedHours}:${paddedMinutes} am`; } - return `${time} am`; } -export {formatAs12HourClock}; +export { formatAs12HourClock }; diff --git a/format-clock-edge-cases/timeConverter.test.js b/format-clock-edge-cases/timeConverter.test.js index 88f2af094..8163baa84 100644 --- a/format-clock-edge-cases/timeConverter.test.js +++ b/format-clock-edge-cases/timeConverter.test.js @@ -1,11 +1,24 @@ -import {formatAs12HourClock} from "./timeConverter.js"; +import { formatAs12HourClock } from "./timeConverter.js"; import assert from "node:assert"; import test from "node:test"; -test("correctly convert time after 12:00", function(){ - assert.equal(formatAs12HourClock("23:00"), "11:00 pm"); +test("correctly convert time after 12:00", function () { + assert.equal(formatAs12HourClock("23:00"), "11:00 pm"); }); -test("can correctly convert morning time", function() { - assert.equal(formatAs12HourClock("08:00"), "08:00 am"); +test("can correctly convert morning time", function () { + assert.equal(formatAs12HourClock("08:00"), "08:00 am"); }); + +//if input is equal to "00:00" +test(`can correctly convert input of "00:00"`, () => + assert.equal(formatAs12HourClock("00:00"), "12:00 am")); +//if input is equal to "12:00" +test(`can correctly convert input of "12:00"`, () => + assert.equal(formatAs12HourClock("12:00"), "12:00 pm")); +//if input is equal to " 07:23" +test(`can correctly convert minutes`, () => + assert.equal(formatAs12HourClock("17:23"), "05:23 pm")); +// test with leading zeros +test("can correctly display with leading zeros", () => + assert.equal(formatAs12HourClock("03:07"), "03:07 am"));