Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
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
8 changes: 6 additions & 2 deletions 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(let i=0; i<stringOfCharacters.length; i++){
if(stringOfCharacters[i] === findCharacter){
count=count+1;}}
return count;
}
Comment thread
MouawiaElkhalifa marked this conversation as resolved.

console.log(countChar("banana","a"))//3
module.exports = countChar;
30 changes: 30 additions & 0 deletions Sprint-3/2-practice-tdd/count.test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// implement a function countChar that counts the number of times a character occurs in a string
const countChar = require("./count");

// 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 @@ -22,3 +23,32 @@ 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 character does not exist in string", () => {
const str = "welcome";
const char = "z";
const count = countChar(str, char);
expect(count).toEqual(0);
});

// Scenario: Single Occurrence
// Given a string where the character appears exactly once,
// Then it should return 1.

test("should return 1 when character appears once", () => {
const str = "apple";
const char = "a";
const count = countChar(str, char);
expect(count).toEqual(1);
});

// Scenario: Empty String
// Given an empty string,
// Then it should return 0 for any character.

test("should return 0 for empty string", () => {
const str = "";
const char = "a";
const count = countChar(str, char);
expect(count).toEqual(0);
});
15 changes: 14 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,18 @@

function getOrdinalNumber(num) {
return "1st";
const lastTwoDigits = num % 100;

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

const lastDigit = num % 10;

if (lastDigit === 1) return num + "st";
if (lastDigit === 2) return num + "nd";
if (lastDigit === 3) return num + "rd";

return num + "th";
}

module.exports = getOrdinalNumber;
41 changes: 41 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,44 @@ 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 with 2 (but not 12)
// When the number ends with 2, except those ending with 12,
// Then the function should return a string by appending "nd" to the number.
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(102)).toEqual("102nd");
});

// Case 3: Numbers ending with 3 (but not 13)
// When the number ends with 3, except those ending with 13,
// Then the function should return a string by appending "rd" to the number.
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(203)).toEqual("203rd");
});

// Case 4: Numbers ending with 11, 12, 13
// When the number ends with 11, 12, or 13,
// Then the function should return a string by appending "th" to the number.
test("should append 'th' for numbers ending with 11, 12, or 13", () => {
expect(getOrdinalNumber(11)).toEqual("11th");
expect(getOrdinalNumber(12)).toEqual("12th");
expect(getOrdinalNumber(13)).toEqual("13th");
expect(getOrdinalNumber(111)).toEqual("111th");
expect(getOrdinalNumber(112)).toEqual("112th");
expect(getOrdinalNumber(113)).toEqual("113th");
});

// Case 5: All other numbers
// When the number does not end with 1, 2, 3 (or ends with 11, 12, 13),
// Then the function should return a string by appending "th" to the number.
test("should append 'th' for all other numbers", () => {
expect(getOrdinalNumber(4)).toEqual("4th");
expect(getOrdinalNumber(10)).toEqual("10th");
expect(getOrdinalNumber(14)).toEqual("14th");
expect(getOrdinalNumber(20)).toEqual("20th");
expect(getOrdinalNumber(100)).toEqual("100th");
});
9 changes: 6 additions & 3 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("Count cannot be negative");
}

return str.repeat(count);
}
module.exports = repeatStr;
20 changes: 19 additions & 1 deletion Sprint-3/2-practice-tdd/repeat-str.test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Implement a function repeatStr
const repeatStr = require("./repeat-str");

// Given a target string `str` and a positive integer `count`,
// When the repeatStr function is called with these inputs,
// Then it should:
Expand All @@ -8,7 +9,6 @@ const repeatStr = require("./repeat-str");
// Given a target string `str` and a positive integer `count` greater than 1,
// 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", () => {
const str = "hello";
const count = 3;
Expand All @@ -20,13 +20,31 @@ 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 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 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 error when count is negative", () => {
const str = "hello";
const count = -2;

expect(() => repeatStr(str, count)).toThrow();
});