Repository navigation
London | 26-ITP-Sep | Shirin Panahian | Sprint 1 | Exhaustively test and fix formatAs12HourClock #1633
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
London | 26-ITP-Sep | Shirin Panahian | Sprint 1 | Exhaustively test and fix formatAs12HourClock #1633
Changes from all commits
92fc81c
710770b
d5ea319
255f29d
7eaadda
c62705c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,11 +1,16 @@ | ||
| function formatAs12HourClock(time) { | ||
|
|
||
| const hours = Number(time.slice(0, 2)); | ||
|
|
||
| const minutes = time.slice(-3); | ||
| if (hours === 0) { | ||
| return `12${minutes} am`; | ||
| } | ||
| if (hours === 12) { | ||
| return `${time} pm`; | ||
| } | ||
| if (hours > 12) { | ||
| return `${hours - 12}:00 pm`; | ||
| return `${String(hours - 12).padStart(2, "0")}${minutes} pm`; | ||
| } | ||
| return `${time} am`; | ||
| } | ||
|
|
||
| export {formatAs12HourClock}; | ||
| export { formatAs12HourClock }; | ||
|
cjyuan marked this conversation as resolved.
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,11 +1,57 @@ | ||
| 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("can correctly convert midnight with double-digit minutes", function () { | ||
| assert.equal(formatAs12HourClock("00:15"), "12:15 am"); | ||
| }); | ||
|
|
||
| test("can correctly convert morning time", function() { | ||
| assert.equal(formatAs12HourClock("08:00"), "08:00 am"); | ||
| test("can correctly convert noon with double-digit minutes", function () { | ||
| assert.equal(formatAs12HourClock("12:15"), "12:15 pm"); | ||
| }); | ||
|
|
||
| test("can correctly convert morning single-digit hours with double-digit minutes", function () { | ||
| assert.equal(formatAs12HourClock("08:15"), "08:15 am"); | ||
| }); | ||
|
|
||
| test("can correctly convert late morning with single-digit minutes", function () { | ||
| assert.equal(formatAs12HourClock("11:05"), "11:05 am"); | ||
| }); | ||
|
|
||
| test("can correctly convert afternoon with double-digit minutes", function () { | ||
| assert.equal(formatAs12HourClock("13:15"), "01:15 pm"); | ||
| }); | ||
|
|
||
| test("can correctly convert late evening with double-digit minutes", function () { | ||
| assert.equal(formatAs12HourClock("23:59"), "11:59 pm"); | ||
| }); | ||
|
|
||
| test("can correctly convert evening with single-digit minutes", function () { | ||
| assert.equal(formatAs12HourClock("23:05"), "11:05 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 midnight time", function () { | ||
| assert.equal(formatAs12HourClock("00:00"), "12:00 am"); | ||
| }); | ||
|
|
||
| test("can correctly convert minutes", function () { | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Optional: "can correctly convert minutes" doesn't say what makes |
||
| assert.equal(formatAs12HourClock("21:08"), "09:08 pm"); | ||
| }); | ||
|
|
||
| test("can correctly convert noon", function () { | ||
| assert.equal(formatAs12HourClock("12:00"), "12:00 pm"); | ||
| }); | ||
| test("can correctly convert one minute before noon", function () { | ||
| assert.equal(formatAs12HourClock("11:59"), "11:59 am"); | ||
| }); | ||
| test("can correctly convert one hour after noon", function () { | ||
| assert.equal(formatAs12HourClock("13:00"), "01:00 pm"); | ||
| }); | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On line 4: Is it necessary to compute the "hour" part of the constructed string?
Could consider storing the minute in a variable first to avoid repeated code.
Note: The .slice() method supports negative indices, which count positions from the end of the string.
For example,
str.slice(-3)returns the substring containing last three characters fromstr.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line 5 is much simpler now, and the
minutesvariable removes the repeat. Good.