Skip to content
9 changes: 8 additions & 1 deletion Sprint-3/2-practice-tdd/count.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
function countChar(stringOfCharacters, findCharacter) {
return 5
let count = 0;
let char = "";
Comment thread
cywong-dev marked this conversation as resolved.
for (let char of stringOfCharacters) {
if (char === findCharacter) {
count++;
}
}
return count;
}

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 `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 for an empty string", () => {
const str = "";
const char = "a";
const count = countChar(str, char);
expect(count).toEqual(0);
});
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";
const lastTwoDigits = num % 100;

// Handle special cases: 11th, 12th, 13th
if (lastTwoDigits >= 11 && lastTwoDigits <= 13) {
return `${num}th`;
}

// Normal rules
if (lastDigit === 1) return `${num}st`;
if (lastDigit === 2) return `${num}nd`;
if (lastDigit === 3) return `${num}rd`;

return `${num}th`;
}

module.exports = getOrdinalNumber;
25 changes: 25 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,28 @@ 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("handles numbers ending in 2 (nd)", () => {
expect(getOrdinalNumber(2)).toEqual("2nd");
expect(getOrdinalNumber(22)).toEqual("22nd");
expect(getOrdinalNumber(102)).toEqual("102nd");
});

test("handles numbers ending in 3 (rd)", () => {
expect(getOrdinalNumber(3)).toEqual("3rd");
expect(getOrdinalNumber(23)).toEqual("23rd");
expect(getOrdinalNumber(103)).toEqual("103rd");
});

test("handles numbers ending in 11, 12, 13 (th exceptions)", () => {
expect(getOrdinalNumber(11)).toEqual("11th");
expect(getOrdinalNumber(12)).toEqual("12th");
expect(getOrdinalNumber(13)).toEqual("13th");
expect(getOrdinalNumber(111)).toEqual("111th");
});

test("handles general th cases", () => {
expect(getOrdinalNumber(4)).toEqual("4th");
expect(getOrdinalNumber(20)).toEqual("20th");
expect(getOrdinalNumber(100)).toEqual("100th");
});
15 changes: 13 additions & 2 deletions Sprint-3/2-practice-tdd/repeat-str.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
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";
let result = "";

for (let i = 0; i < count; i++) {
Comment thread
cywong-dev marked this conversation as resolved.
result += str;
}

if (count >= 0) {
return result;
}
else {
throw new Error("Count cannot be negative");
}
}

module.exports = repeatStr;
17 changes: 17 additions & 0 deletions Sprint-3/2-practice-tdd/repeat-str.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,23 @@ test("should repeat the string count times", () => {
expect(repeatedStr).toEqual("hellohellohello");
});

// Case: handle count of 1
test("should repeat the string 1 time", () => {
const result = repeatStr("hello", 1);
expect(result).toEqual("hello");
});

// Case: handle count of 0
test("should return an empty string when count is 0", () => {
const result = repeatStr("hello", 0);
expect(result).toEqual("");
});

// Case: handle negative count
test("should throw an error when count is negative", () => {
expect(() => repeatStr("hello", -3)).toThrow();
});

// Case: handle count of 1:
// Given a target string `str` and a `count` equal to 1,
// When the repeatStr function is called with these inputs,
Expand Down
Loading