Skip to content
Closed
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
2c2b0f3
Add test for countChar when character occurs zero times
Iswanna Oct 23, 2025
6db0981
Implement countChar function to count occurrences of a character in a…
Iswanna Oct 23, 2025
7362e86
Add test cases using jest for function getOrdinalNumber
Iswanna Oct 23, 2025
1f72b49
Add the implementation for the function getOrdinalNumber
Iswanna Oct 23, 2025
ed1a393
Add test cases using jest for the function repeat
Iswanna Oct 23, 2025
93d9cb6
Add implementation for the function repeat
Iswanna Oct 23, 2025
9bc1c34
Add test to verify countChar returns 1 when the character appears once
Iswanna Oct 27, 2025
01cb978
Add unit test to verify countChar returns 0 when given an empty string
Iswanna Oct 27, 2025
86311c7
Add a test case for multi-character input in countChar
Iswanna Oct 27, 2025
bd7847f
Add test cases for countChar to check expected outputs in various sce…
Iswanna Oct 27, 2025
1c66099
Update countChar implementation to correctly count character occurrences
Iswanna Oct 27, 2025
03b238e
Fix indentation in count.js and count.test.js
Iswanna Oct 27, 2025
14306cc
Add test cases to ensure correct ordinal output for 12, and 13
Iswanna Oct 27, 2025
a6bbe86
Fix getOrdinalNumber to handle integers correctly and reject invalid …
Iswanna Oct 28, 2025
aaa3da4
Add integer, negative, zero, and invalid input test cases for getOrdi…
Iswanna Oct 28, 2025
4548cb5
Update repeat function to handle positive, zero, negative, non-intege…
Iswanna Oct 28, 2025
4027919
Add test cases for repeat function to cover edge cases and various in…
Iswanna Oct 28, 2025
2b82934
Refactor countChar function to return early for invalid inputs and re…
Iswanna Oct 29, 2025
4153632
Refactor getOrdinalNumber function to return early for invalid input …
Iswanna Oct 29, 2025
2957d4b
Fix inconsitent icode indentation
Iswanna Oct 30, 2025
95ba4bf
Refactor repeat function to return early for invalid input and remove…
Iswanna Oct 30, 2025
d0b6378
Update expected output for negative float to 'Invalid count: count sh…
Iswanna Oct 30, 2025
3243748
Update error message for numOfTimes validation to "Invalid numOfTimes…
Iswanna Oct 30, 2025
adb9421
Fix function to allow only string for valueToRepeat and positive inte…
Iswanna Oct 30, 2025
f6115be
Update test descriptions and expected output values in test cases
Iswanna Oct 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Sprint-3/2-practice-tdd/count.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
function countChar(stringOfCharacters, findCharacter) {
return 5
const characterOccurrence = stringOfCharacters.split(findCharacter).length - 1;
return characterOccurrence;
}

module.exports = countChar;
6 changes: 6 additions & 0 deletions Sprint-3/2-practice-tdd/count.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,9 @@ test("should count multiple occurrences of a character", () => {
// And a character char that does not exist within the case-sensitive str,
// When the function is called with these inputs,
// Then it should return 0, indicating that no occurrences of the char were found in the case-sensitive str.
test("should return 0 occurence of a character", () => {
Copy link
Contributor

@jennethydyrova jennethydyrova Oct 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a good start but this is would not be considered as a good test suite as it covers just one behavior. Good test suite should cover different scenarios based on what type of arguments you pass to the function.

const str = "happy";
const char = "z";
const count = countChar(str, char);
expect(count).toEqual(0);
})
9 changes: 8 additions & 1 deletion Sprint-3/2-practice-tdd/get-ordinal-number.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
function getOrdinalNumber(num) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately, this function is not passing the acceptance criteria. Please try to pass different values to the function and see if it returns what you expect.

return "1st";
if (num === 1 || num === 21) {
return `${num}st`;
} else if (num === 11) {
return `${num}th`;
} else if (num === 2) {
return `${num}nd`;
}
}


module.exports = getOrdinalNumber;
12 changes: 12 additions & 0 deletions Sprint-3/2-practice-tdd/get-ordinal-number.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,15 @@ const getOrdinalNumber = require("./get-ordinal-number");
test("should return '1st' for 1", () => {
expect(getOrdinalNumber(1)).toEqual("1st");
});

test("should return '11th' for 11", () => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as a previous comment regarding very slim test suite. Try to think of more test cases.

expect(getOrdinalNumber(11)).toEqual("11th");
})

test("should return '21st' for 21", () => {
expect(getOrdinalNumber(21)).toEqual("21st");
})

test("should return '2nd' for 2", () => {
expect(getOrdinalNumber(2)).toEqual("2nd");
})
15 changes: 13 additions & 2 deletions Sprint-3/2-practice-tdd/repeat.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
function repeat() {
return "hellohellohello";
function repeat(valueToRepeat, numOfTimes) {
let repeatedValue = "";
if (numOfTimes > 0) {
for (let i = 0; i < numOfTimes; i++) {
repeatedValue += valueToRepeat;
}
} else if (numOfTimes === 0) {
repeatedValue = "";
}
else {
repeatedValue = "Negative number invalid";
}
return repeatedValue;
}

module.exports = repeat;
18 changes: 18 additions & 0 deletions Sprint-3/2-practice-tdd/repeat.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,31 @@ test("should repeat the string count times", () => {
// Given a target string str and a count equal to 1,
// When the repeat function is called with these inputs,
// Then it should return the original str without repetition, ensuring that a count of 1 results in no repetition.
test("should return the original input with no repetition", () => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These unit tests are good, great job on writing them! Now I would like you to think of more test cases, where the values passed to the function are not what you expected. What if you pass integer 3 as valueToRepeat or undefined as numOfTimes, etc.?

const str = "milk";
const count = 1;
const repeatedStr = repeat(str, count);
expect(repeatedStr).toEqual(str);
})

// case: Handle Count of 0:
// Given a target string str and a count equal to 0,
// When the repeat function is called with these inputs,
// Then it should return an empty string, ensuring that a count of 0 results in an empty output.
test("should return an empty string", () => {
const str = "rice";
const count = 0;
const repeatedStr = repeat(str, count);
expect(repeatedStr).toEqual("");
})

// case: Negative Count:
// Given a target string str and a negative integer count,
// When the repeat function is called with these inputs,
// Then it should throw an error or return an appropriate error message, as negative counts are not valid.
test("should return an error message", () => {
const str = "food";
const count = -2;
const repeatedStr = repeat(str, count);
expect(repeatedStr).toEqual("Negative number invalid");
})
Loading