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

module.exports = countChar;
37 changes: 37 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,40 @@ 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 if no occurences of a character", () => {
const str = "fruit";
const char = "p";
const count = countChar(str, char);
expect(count).toBe(0);
});

// Scenario: Empty String
test("should return 0 if the string is empty", () => {
const str = "";
const char = "a";
const count = countChar(str, char);
expect(count).toBe(0);
});

// Scenario: Empty character
test("should return 0 if the character is empty", () => {
const str = "fruit";
const char = "";
const count = countChar(str, char);
expect(count).toBe(0);
});

// Scenario: Single character found
test("should return 1 if single occurrence of a character", () => {
const str = "fruit";
const char = "r";
const count = countChar(str, char);
expect(count).toBe(1);
});

test("should be case sensitive", () => {
const str = "coMmand";
const char = "m";
const count = countChar(str, char);
expect(count).toBe(1);
});
14 changes: 13 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,17 @@
function getOrdinalNumber(num) {
return "1st";
let strNum;
const lastNum = num % 10;
const lastTwoNums = num % 100;
if (lastNum === 1 && lastTwoNums !== 11) {
strNum = `${String(num)}st`;
} else if (lastNum === 2 && lastTwoNums !== 12) {
strNum = `${String(num)}nd`;
} else if (lastNum === 3 && lastTwoNums !== 13) {
strNum = `${String(num)}rd`;
} else {
strNum = `${String(num)}th`;
}
return strNum;
}

module.exports = getOrdinalNumber;
24 changes: 24 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,27 @@ 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(182)).toEqual("182nd");
});

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 numbers ending 11, 12 or 13", () => {
expect(getOrdinalNumber(11)).toEqual("11th");
expect(getOrdinalNumber(12)).toEqual("12th");
expect(getOrdinalNumber(13)).toEqual("13th");
});

test("should append 'th' for numbers not ending with 1, 2 or 3", () => {
expect(getOrdinalNumber(4)).toEqual("4th");
expect(getOrdinalNumber(15)).toEqual("15th");
expect(getOrdinalNumber(199)).toEqual("199th");
});
9 changes: 7 additions & 2 deletions Sprint-3/2-practice-tdd/repeat-str.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
function repeatStr() {
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("Number must be 0 or greater");
}

return new Array(count).fill(str).join("");
}

module.exports = repeatStr;
18 changes: 17 additions & 1 deletion Sprint-3/2-practice-tdd/repeat-str.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,28 @@ test("should repeat the string count times", () => {
// When the repeatStr function is called with these inputs,
// Then it should return the original `str` without repetition.

test("should return the original string if there is no repetition", () => {
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 a negative number", () => {
const str = "hello";
const count = -1;
expect(() => repeatStr(str, count)).toThrowError();
});
Loading