Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
16 changes: 16 additions & 0 deletions Sprint-3/2-practice-tdd/count.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,19 @@ function countChar(stringOfCharacters, findCharacter) {
}

module.exports = countChar;

const countChar = require('../countChar');

describe('countChar()', () => {
test('always returns 5', () => {
expect(countChar('anything', 'a')).toBe(5);
});

test('still returns 5 with empty string', () => {
expect(countChar('', 'z')).toBe(5);
});

test('still returns 5 with special characters', () => {
expect(countChar('!!!', '!')).toBe(5);
});
});
41 changes: 41 additions & 0 deletions Sprint-3/2-practice-tdd/count.test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
// implement a function countChar that counts the number of times a character occurs in a string
const countChar = require("./count");

function countChar(stringOfCharacters, findCharacter) {
let count = 0;
for (let char of stringOfCharacters) {
if (char === findCharacter) count++;
}
return count;
}

module.exports = countChar;

// Given a string str and a single character char to search for,
// When the countChar function is called with these inputs,
// Then it should:
Expand All @@ -16,6 +27,36 @@ test("should count multiple occurrences of a character", () => {
const count = countChar(str, char);
expect(count).toEqual(5);
});
test("should return 0 when the character is not found", () => {
const str = "hello";
const char = "z";
const count = countChar(str, char);
expect(count).toEqual(0);
});

// Scenario: Case Sensitivity
// It should be case-sensitive, meaning 'A' != 'a'.
test("should be case-sensitive when counting characters", () => {
const str = "Banana";
expect(countChar(str, "a")).toEqual(3);
expect(countChar(str, "A")).toEqual(0);
});

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

// Scenario: Special Characters
// It should correctly count spaces and punctuation.
test("should count special characters like spaces or punctuation", () => {
expect(countChar("a b a b", " ")).toEqual(2);
expect(countChar("wow!!!", "!")).toEqual(3);
});

// Scenario: No Occurrences
// Given the input string str,
Expand Down
58 changes: 57 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,61 @@

function getOrdinalNumber(num) {
return "1st";
const remainder10 = num % 10;
const remainder100 = num % 100;

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

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

module.exports = getOrdinalNumber;


const getOrdinalNumber = require("./getOrdinalNumber");

describe("getOrdinalNumber()", () => {
test("should return '1st' for 1", () => {
expect(getOrdinalNumber(1)).toBe("1st");
});

test("should return '2nd' for 2", () => {
expect(getOrdinalNumber(2)).toBe("2nd");
});

test("should return '3rd' for 3", () => {
expect(getOrdinalNumber(3)).toBe("3rd");
});

test("should return '4th' for 4", () => {
expect(getOrdinalNumber(4)).toBe("4th");
});

test("should return '11th', '12th', '13th' for special cases", () => {
expect(getOrdinalNumber(11)).toBe("11th");
expect(getOrdinalNumber(12)).toBe("12th");
expect(getOrdinalNumber(13)).toBe("13th");
});

test("should return correct suffixes for 21, 22, 23", () => {
expect(getOrdinalNumber(21)).toBe("21st");
expect(getOrdinalNumber(22)).toBe("22nd");
expect(getOrdinalNumber(23)).toBe("23rd");
});

test("should return '111th' for numbers ending with 11, 12, 13 even if larger", () => {
expect(getOrdinalNumber(111)).toBe("111th");
expect(getOrdinalNumber(112)).toBe("112th");
expect(getOrdinalNumber(113)).toBe("113th");
});
});
7 changes: 7 additions & 0 deletions Sprint-3/2-practice-tdd/get-ordinal-number.test.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
const getOrdinalNumber = require("./get-ordinal-number");

function getOrdinalNumber(num) {
return "1st";
}

module.exports = getOrdinalNumber;

// In this week's prep, we started implementing getOrdinalNumber

// continue testing and implementing getOrdinalNumber for additional cases
Expand Down
6 changes: 6 additions & 0 deletions Sprint-3/2-practice-tdd/repeat.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
const repeat = require("./repeat");

function repeat() {
return "hellohellohello";
}

module.exports = repeat;

test("should repeat the given word three times", () => {
expect(repeat("hi", 3)).toBe("hihihi");
});
40 changes: 40 additions & 0 deletions Sprint-3/2-practice-tdd/repeat.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@ const repeat = require("./repeat");
// Given a target string str and a positive integer count,
// When the repeat function is called with these inputs,
// Then it should:
function repeat(str, count) {
if (count < 0) {
throw new Error("Count must be a non-negative integer");
}
return str.repeat(count);
}

module.exports = repeat;

// case: repeat String:
// Given a target string str and a positive integer count,
Expand Down Expand Up @@ -30,3 +38,35 @@ test("should repeat the string count times", () => {
// 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.
const repeat = require("./repeat");

// Case 1: Repeat string multiple times
test("should repeat the string count times", () => {
const str = "hello";
const count = 3;
const repeatedStr = repeat(str, count);
expect(repeatedStr).toEqual("hellohellohello");
});

// Case 2: Handle count of 1
test("should return the original string when count is 1", () => {
const str = "world";
const count = 1;
const repeatedStr = repeat(str, count);
expect(repeatedStr).toEqual("world");
});

// Case 3: Handle count of 0
test("should return an empty string when count is 0", () => {
const str = "test";
const count = 0;
const repeatedStr = repeat(str, count);
expect(repeatedStr).toEqual("");
});

// Case 4: Negative count
test("should throw an error when count is negative", () => {
const str = "oops";
const count = -2;
expect(() => repeat(str, count)).toThrow("Count must be a non-negative integer");
});