Skip to content
10 changes: 9 additions & 1 deletion Sprint-3/2-practice-tdd/count.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
function countChar(stringOfCharacters, findCharacter) {
return 5
let count = 0;
const str = stringOfCharacters.length;

for (let i = 0; i < str; i++) {
if (stringOfCharacters[i] === findCharacter) {
count += 1;
}
}
return count;
}

module.exports = countChar;
7 changes: 7 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,10 @@ test("should count multiple occurrences of a character", () => {
// 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.

test("should return '0' when there is no occurrences of character in string", () => {
const str = "little"
const char = "b"
const count = countChar(str, char);
expect(count).toEqual(0);
});
20 changes: 19 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,23 @@
function getOrdinalNumber(num) {
return "1st";
const lastTwoDigits = num % 100;
const lastDigit = num % 10;

if (lastTwoDigits >= 11 && lastTwoDigits <= 13) {
return `${num}${"th"}`;
}

switch (lastDigit) {
case 1:
return `${num}${"st"}`;
case 2:
return `${num}${"nd"}`;
case 3:
return `${num}${"rd"}`;
default:
return `${num}${"th"}`;
}
}

console.log(getOrdinalNumber(3));

module.exports = getOrdinalNumber;
26 changes: 26 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 @@ -18,3 +18,29 @@ test("should append 'st' for numbers ending with 1, except those ending with 11"
expect(getOrdinalNumber(21)).toEqual("21st");
expect(getOrdinalNumber(131)).toEqual("131st");
});

// Case 2: Numbers ending in 2 → add nd → (2nd, 22nd, 42nd)
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(142)).toEqual("142nd");
});
// Case 3: Numbers ending in 3 → add rd → (3rd, 23rd, 53rd)
test("should append '3rd' for numbers ending with 3", () => {
Copy link
Contributor

Choose a reason for hiding this comment

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

Could also update this description to exclude numbers like 13, 113.

expect(getOrdinalNumber(3)).toEqual("3rd");
expect(getOrdinalNumber(33)).toEqual("33rd");
expect(getOrdinalNumber(153)).toEqual("153rd");
});
// Case 4: All other numbers → add th → (4th, 6th, 20th, 100th)
test("should append 'th' for numbers ending with 4,5,6,7,8,9 or 0", () => {
expect(getOrdinalNumber(4)).toEqual("4th");
expect(getOrdinalNumber(20)).toEqual("20th");
expect(getOrdinalNumber(100)).toEqual("100th");
});
// Exceptions: Numbers ending in 11, 12, and 13 use -th (e.g., 11th, 12th, 13th).
test("should append 'th' for numbers ending with 11, 12 or 13", () => {
expect(getOrdinalNumber(11)).toEqual("11th");
expect(getOrdinalNumber(12)).toEqual("12th");
expect(getOrdinalNumber(113)).toEqual("113th");
});

7 changes: 5 additions & 2 deletions Sprint-3/2-practice-tdd/repeat-str.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
function repeatStr() {
return "hellohellohello";
function repeatStr(str, count) {
if(count < 0){
throw new Error("negative counts are not valid");
}
return str.repeat(count);
}

module.exports = repeatStr;
21 changes: 18 additions & 3 deletions Sprint-3/2-practice-tdd/repeat-str.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const repeatStr = require("./repeat-str");
// When the repeatStr function is called with these inputs,
// Then it should return a string that contains the original `str` repeated `count` times.

test("should repeat the string count times", () => {
test("should return a string repeated 3 times when count is 3", () => {
const str = "hello";
const count = 3;
const repeatedStr = repeatStr(str, count);
Expand All @@ -20,13 +20,28 @@ test("should repeat the string count times", () => {
// Given a target string `str` and a `count` equal to 1,
// When the repeatStr function is called with these inputs,
// Then it should return the original `str` without repetition.

test("should return the original string when count is 1", () => {
const str = "hello";
const count = 1;
const repeatedStr = repeatStr(str, count);
expect(repeatedStr).toEqual("hello");
});
// Case: Handle count of 0:
// Given a target string `str` and a `count` equal to 0,
// When the repeatStr function is called with these inputs,
// Then it should return an empty string.

test("should return an empty string when count is 0", () => {
const str = "hello";
const count = 0;
const repeatedStr = repeatStr(str, count);
expect(repeatedStr).toEqual("");
});
// Case: Handle negative count:
// Given a target string `str` and a negative integer `count`,
// When the repeatStr function is called with these inputs,
// Then it should throw an error, as negative counts are not valid.
test(`Should throw an error when count is negative`, () => {
expect(() => {
repeatStr("hello", -1);
}).toThrow();
});
Loading