Repository navigation
London | 26-ITP-Sep | Diana Ausiejute | Sprint 2 | Practice TDD #1712
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?
Changes from all commits
831c151
0f801bb
714b6fa
780bc1c
93fb568
aebac3e
005c578
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,3 +1,9 @@ | ||
| export function countChar(stringOfCharacters, findCharacter) { | ||
| return 5 | ||
| let count = 0; | ||
| for (let i = 0; i < stringOfCharacters.length; i++) { | ||
| if (stringOfCharacters[i] === findCharacter) { | ||
| count++; | ||
| } | ||
| } | ||
| return count; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,25 @@ | ||
| export function getOrdinalNumber(num) { | ||
| return "1st"; | ||
| if (num === null || num === undefined || num === "" || num < 0) { | ||
| throw new Error("Invalid input!"); | ||
| } | ||
|
|
||
| if (typeof num !== "number" || !isFinite(num)) { | ||
| throw new Error("Invalid input!"); | ||
| } | ||
|
|
||
| const lastDigit = num % 10; | ||
| const lastTwoDigits = num % 100; | ||
|
|
||
| if (lastTwoDigits >= 11 && lastTwoDigits <= 13) { | ||
| return `${num}th`; | ||
| } | ||
|
|
||
| if (lastDigit === 1) { | ||
| return `${num}st`; | ||
| } else if (lastDigit === 2) { | ||
| return `${num}nd`; | ||
| } else if (lastDigit === 3) { | ||
| return `${num}rd`; | ||
| } | ||
| return `${num}th`; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -18,3 +18,35 @@ test("should append 'st' for numbers ending with 1, except those ending with 11" | |
| expect(getOrdinalNumber(21)).toEqual("21st"); | ||
| expect(getOrdinalNumber(131)).toEqual("131st"); | ||
| }); | ||
|
|
||
| test("should append 'nd' for numbers ending with 2, except those ending with 12", () => { | ||
| expect(getOrdinalNumber(2)).toEqual("2nd"); | ||
| expect(getOrdinalNumber(32)).toEqual("32nd"); | ||
| expect(getOrdinalNumber(102)).toEqual("102nd"); | ||
| }); | ||
|
|
||
| test("should append 'rd' for numbers ending with 3, except those ending with 13", () => { | ||
| expect(getOrdinalNumber(3)).toEqual("3rd"); | ||
| expect(getOrdinalNumber(53)).toEqual("53rd"); | ||
| expect(getOrdinalNumber(123)).toEqual("123rd"); | ||
| }); | ||
|
|
||
| test("should append 'th for special cases 11, 12, 13", () => { | ||
| expect(getOrdinalNumber(11)).toEqual("11th"); | ||
| expect(getOrdinalNumber(12)).toEqual("12th"); | ||
| expect(getOrdinalNumber(13)).toEqual("13th"); | ||
| }); | ||
|
|
||
| test("should append 'th' for the rest of the numbers", () => { | ||
| expect(getOrdinalNumber(9)).toEqual("9th"); | ||
| expect(getOrdinalNumber(20)).toEqual("20th"); | ||
| expect(getOrdinalNumber(108)).toEqual("108th"); | ||
| }); | ||
|
Comment on lines
+40
to
+44
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. Lines 13-15 of your code has not been included in this test suite. Please add test cases specifically for that part of the code. Thank you. 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. I see you have added |
||
|
|
||
| test("should throw an error if the input is invalid", () => { | ||
| expect(() => getOrdinalNumber("")).toThrow("Invalid input!"); | ||
| expect(() => getOrdinalNumber("fifty two")).toThrow("Invalid input!"); | ||
| expect(() => getOrdinalNumber(-3)).toThrow("Invalid input!"); | ||
| expect(() => getOrdinalNumber(null)).toThrow("Invalid input!"); | ||
| expect(() => getOrdinalNumber(undefined)).toThrow("Invalid input!"); | ||
| }); | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,18 @@ | ||
| export function repeatStr() { | ||
| // Your implementation of this function must *not* call String.prototype.repeat (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat). | ||
| // The goal is to re-implement that function, not to use it. | ||
| return "hellohellohello"; | ||
| // Your implementation of this function must *not* call String.prototype.repeat (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat). | ||
| // The goal is to re-implement that function, not to use it.# | ||
| export function repeatStr(str, count) { | ||
| if (Number.isInteger(count) && count < 0) { | ||
| throw new Error(`Invalid input`); | ||
| } | ||
|
Comment on lines
+4
to
+6
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. I don't think this part is accurate. Consider
Author
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. Thanks for that! You got me reading about the distinction between the tasks where one is required to take what's given and implement to handle only specific cases, and where one has to handle edge cases, validate inputs, throw errors for invalid.. . If the task required me to 'Handle edge cases' or, more specifically, 'handle non-integers', then it would be a must to rewrite my implementation and add a test accordingly. I would change that part into |
||
| if (count === 0) { | ||
| return ""; | ||
| } | ||
|
|
||
| if (Number.isInteger(count) && count > 0) { | ||
| let result = ""; | ||
| for (let i = 0; i < count; i++) { | ||
| result += str; | ||
| } | ||
| return result; | ||
| } | ||
| } | ||
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.
There is a special
strthat would give 0 anyway. Please add that test case as well. Thank you.