Repository navigation
Manchester | 26-ITP-Sept | Fatima Rouchi | Sprint 2 | Practice TDD #1758
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
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,3 @@ | ||
| export function countChar(stringOfCharacters, findCharacter) { | ||
| return 5 | ||
| return stringOfCharacters.split(findCharacter).length - 1; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,24 +1,57 @@ | ||
| // implement a function countChar that counts the number of times a character occurs in a string | ||
| import { countChar } from "./count.js"; | ||
| // Given a string `str` and a single character `char` to search for, | ||
| // When the countChar function is called with these inputs, | ||
| // Then it should: | ||
|
|
||
| // Scenario: Multiple Occurrences | ||
| // Given the input string `str`, | ||
| // And a character `char` that occurs one or more times in `str` (e.g., 'a' in 'aaaaa'), | ||
| // When the function is called with these inputs, | ||
| // Then it should correctly count occurrences of `char`. | ||
|
|
||
| // Given a string `str` and a character `char` that appears several times, | ||
| // When the function is called, | ||
| // Then it should correctly count each occurrence. | ||
| test("should count multiple occurrences of a character", () => { | ||
| const str = "aaaaa"; | ||
| const char = "a"; | ||
| const count = countChar(str, char); | ||
| expect(count).toEqual(5); | ||
| }); | ||
|
|
||
| // Scenario: Single Occurrence | ||
| // Given a string containing exactly one match, | ||
| // When the function is called, | ||
| // Then it should return 1. | ||
| test("should count a single occurrence of a character", () => { | ||
| const str = "banana"; | ||
| const char = "n"; | ||
| const count = countChar(str, char); | ||
| expect(count).toEqual(2); | ||
| }); | ||
|
|
||
| // Scenario: No Occurrences | ||
| // Given the input string `str`, | ||
| // And a character `char` that does not exist within `str`. | ||
| // When the function is called with these inputs, | ||
| // Then it should return 0, indicating that no occurrences of `char` were found. | ||
| // Given a string with no matching character, | ||
| // When the function is called, | ||
| // Then it should return 0. | ||
| test("should return 0 when the character does not occur", () => { | ||
| const str = "hello"; | ||
| const char = "z"; | ||
| const count = countChar(str, char); | ||
| expect(count).toEqual(0); | ||
| }); | ||
|
|
||
| // Edge case: Empty String | ||
| // Given an empty string, | ||
| // When the function is called with any character, | ||
| // Then it should return 0. | ||
| test("should return 0 for an empty string", () => { | ||
|
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. what happens if I call the function with the following inputs? does it return the correct output? countChar("abc", "") |
||
| const str = ""; | ||
| const char = "a"; | ||
| const count = countChar(str, char); | ||
| expect(count).toEqual(0); | ||
| }); | ||
|
|
||
| // Edge case: Character at start and end | ||
| // Given a string where the character appears at both ends, | ||
| // When the function is called, | ||
| // Then it should count both occurrences. | ||
| test("should count characters at the start and end of the string", () => { | ||
| const str = "ahelloa"; | ||
| const char = "a"; | ||
| const count = countChar(str, char); | ||
| expect(count).toEqual(2); | ||
| }); | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,23 @@ | ||
| export function getOrdinalNumber(num) { | ||
| return "1st"; | ||
| const absNum = Math.abs(num); | ||
| const lastTwoDigits = absNum % 100; | ||
| const lastDigit = absNum % 10; | ||
|
|
||
| if (lastTwoDigits >= 11 && lastTwoDigits <= 13) { | ||
| return `${num}th`; | ||
| } | ||
|
|
||
| if (lastDigit === 1) { | ||
| return `${num}st`; | ||
| } | ||
|
|
||
| if (lastDigit === 2) { | ||
| return `${num}nd`; | ||
| } | ||
|
|
||
| if (lastDigit === 3) { | ||
| return `${num}rd`; | ||
| } | ||
|
|
||
| return `${num}th`; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -18,3 +18,23 @@ 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(22)).toEqual("22nd"); | ||
| 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(23)).toEqual("23rd"); | ||
| expect(getOrdinalNumber(103)).toEqual("103rd"); | ||
| }); | ||
|
|
||
| test("should append 'th' for all other numbers, including 11, 12 and 13", () => { | ||
|
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. does this cover "all other numbers"? Think about the following inputs.
|
||
| expect(getOrdinalNumber(4)).toEqual("4th"); | ||
| expect(getOrdinalNumber(11)).toEqual("11th"); | ||
| expect(getOrdinalNumber(12)).toEqual("12th"); | ||
| expect(getOrdinalNumber(13)).toEqual("13th"); | ||
| expect(getOrdinalNumber(111)).toEqual("111th"); | ||
| }); | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,16 @@ | ||
| export function repeatStr() { | ||
| export function repeatStr(str, count) { | ||
| // 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"; | ||
|
|
||
| if (count < 0) { | ||
| throw new Error("count must be non-negative"); | ||
| } | ||
|
|
||
| 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.
Do the test case name and its implementation match?
Consider the function's input: does the word "banana" contain only one occurrence of the letter "n"? Would it make more sense to test a different letter that appears only once in the string, so that the test case name matches its implementation?