Skip to content
Open
Show file tree
Hide file tree
Changes from 2 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
2 changes: 1 addition & 1 deletion Sprint-3/2-practice-tdd/count.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
function countChar(stringOfCharacters, findCharacter) {
return 5
return stringOfCharacters.split(findCharacter).length - 1;
}

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 count No occurrences of a character", () => {
const str = "aaaaa";
const char = "b";
const count = countChar(str, char);
expect(count).toEqual(0);
});
19 changes: 18 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,22 @@
function getOrdinalNumber(num) {
return "1st";
if (!Number.isInteger(num) || num < 1) {
throw new Error("Invalid number");
}

const lastTwoDigits = num.toString().slice(-2);
const lastDigit = lastTwoDigits.slice(-1);
if (lastTwoDigits == 11 || lastTwoDigits == 12 || lastTwoDigits == 13) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We almost never want to use == in JavaScript, and almost always want to prefer === - can you do some research as to why, and update your code to use === instead?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

So I did know the difference here, == doesn't care about type, just value.
I've not really thought about being strict with this when I know what the code is going to do, but I realise it's much better to restrict as much as possible to prevent any incorrect data leaking through. I will aim to always use === going forward, expect in cases where type make not matter.

updated code. thanks

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Does your code now pass its tests? :)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I thought I check them!
No they didn't pass, because I was now trying to compare a string to number
converted strings to numbers to pass === check

tests all pass

return `${num}th`;
}
if (lastDigit == 1) {
return `${num}st`;
}
if (lastDigit == 2) {
return `${num}nd`;
}
if (lastDigit == 3) {
return `${num}rd`;
} else return `${num}th`;
}

module.exports = getOrdinalNumber;
39 changes: 39 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 @@ -13,8 +13,47 @@ const getOrdinalNumber = require("./get-ordinal-number");
// Case 1: Numbers ending with 1 (but not 11)
// When the number ends with 1, except those ending with 11,
// Then the function should return a string by appending "st" to the number.

test("should append 'st' for numbers ending with 1, except those ending with 11", () => {
expect(getOrdinalNumber(1)).toEqual("1st");
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(132)).toEqual("132nd");
});

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(133)).toEqual("133rd");
});

test("should append 'th' for numbers ending with 11, 12 or 13", () => {
expect(getOrdinalNumber(11)).toEqual("11th");
expect(getOrdinalNumber(111)).toEqual("111th");
expect(getOrdinalNumber(12)).toEqual("12th");
expect(getOrdinalNumber(112)).toEqual("112th");
expect(getOrdinalNumber(13)).toEqual("13th");
expect(getOrdinalNumber(113)).toEqual("113th");
});

test("should append 'th' for numbers ending with 4 to 9", () => {
expect(getOrdinalNumber(4)).toEqual("4th");
expect(getOrdinalNumber(15)).toEqual("15th");
expect(getOrdinalNumber(126)).toEqual("126th");
expect(getOrdinalNumber(237)).toEqual("237th");
expect(getOrdinalNumber(348)).toEqual("348th");
expect(getOrdinalNumber(459)).toEqual("459th");
});

test("should throw error for invalid number", () => {
expect(() => {getOrdinalNumber(0);}).toThrow("Invalid number");
expect(() => {getOrdinalNumber(-1);}).toThrow("Invalid number");
expect(() => {getOrdinalNumber(1.1);}).toThrow("Invalid number");
expect(() => {getOrdinalNumber("hello");}).toThrow("Invalid number");

});
10 changes: 8 additions & 2 deletions Sprint-3/2-practice-tdd/repeat-str.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
function repeatStr() {
return "hellohellohello";
function repeatStr(str, count) {
if (count < 0) {throw new Error("Invalid count");}
let string = "";
while (count > 0) {
string = string + str;
count--;
}
return string;
}

module.exports = repeatStr;
21 changes: 21 additions & 0 deletions Sprint-3/2-practice-tdd/repeat-str.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,33 @@ 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 repeat the string count times", () => {
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 repeat the string count times", () => {
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", () => {
const str = "hello";
const count = -3;
expect(() => {repeatStr(str, count);}).toThrow("Invalid count");
});
Loading