Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
618504b
added countChar test for when character does not occur, it fails
marscancode Oct 17, 2026
833d950
implemented countChar function, tests now pass
marscancode Oct 17, 2026
dc8d57f
added repeatStr test for when count is 1
marscancode Oct 17, 2026
dccf8e3
fixed spelling error in test
marscancode Oct 17, 2026
c47e4e0
implemented repeatStr function, test now passes
marscancode Oct 17, 2026
3f2d32a
added repeatStr test to check it returns an empty string when count is 0
marscancode Oct 17, 2026
74a438d
added test to check if repeatStr throws an error when count is 0
marscancode Oct 17, 2026
857468b
fixed syntax error in when count is negative test, test fails
marscancode Oct 17, 2026
141163d
implemented repeatStr with count error
marscancode Oct 17, 2026
223c120
implemented getOrdinalNumber function to handle numbers ending in 1, …
marscancode Oct 18, 2026
ffae1e7
added test for getOrdinalNumber function to check if th gets added to…
marscancode Oct 18, 2026
fb5170f
implemented getOrdinalNumber function to handle numbers ending in 11,…
marscancode Oct 18, 2026
7c3e706
updated previous test wording to be more specific about numbers endin…
marscancode Oct 18, 2026
e5ba947
added test for numbers ending in 2, except 12, test fails
marscancode Oct 18, 2026
7103755
implemented getOrdinalNumber function to handle numbers ending in 12 …
marscancode Oct 18, 2026
10424c5
added tests for numbers ending in 3, expect 13, tests fail
marscancode Oct 18, 2026
8e97e33
refactored tests to group 11, 12, and 13 as exceptions with th
marscancode Oct 18, 2026
00f1229
implemented getOrdinalNumber function to handle numbers ending in 13 …
marscancode Oct 18, 2026
b6b29b1
added getOrdinalNumber tests for other numbers that don't end in 1, 2…
marscancode Oct 18, 2026
e8faea9
implemented function to handle all other numbers that don't end in 1,…
marscancode Oct 18, 2026
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
9 changes: 8 additions & 1 deletion practice-tdd/count.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
export function countChar(stringOfCharacters, findCharacter) {
return 5
let count = 0;

for (let i = 0; i < stringOfCharacters.length; i++) {
if (stringOfCharacters[i] === findCharacter) {
count++;
}
}
return count;
}
6 changes: 6 additions & 0 deletions 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 when character does not occur", () => {
const str = "aaaabcd";
const char = "e";
const count = countChar(str, char);
expect(count).toEqual(0);
});
Comment on lines +25 to +30

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This test case is correct. However, there is a special str which would give 0 anyway. Can you think of it? If so, please add it as well. Thank you.

16 changes: 15 additions & 1 deletion practice-tdd/get-ordinal-number.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
export function getOrdinalNumber(num) {
return "1st";
if (num % 100 === 11) {
return `${num}th`;
} else if (num % 10 === 1) {
return `${num}st`;
} else if (num % 100 === 12) {
return `${num}th`;
} else if (num % 10 === 2) {
return `${num}nd`;
} else if (num % 100 === 13) {
return `${num}th`;
} else if (num % 10 === 3) {
return `${num}rd`;
} else {
return `${num}th`;
}
}
25 changes: 25 additions & 0 deletions 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('should append "th" to numbers ending in 11, 12, or 13', () => {
expect(getOrdinalNumber(11)).toEqual("11th");
expect(getOrdinalNumber(12)).toEqual("12th");
expect(getOrdinalNumber(13)).toEqual("13th");
});
Comment on lines +22 to +26

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

These are numbers exactly equal to 11/12/13, how about larger numbers ended with 11/12/13 ? Please add those tests as well. Thank you.


test('should append "nd" to numbers ending in 2, apart from those ending in 12', () => {
expect(getOrdinalNumber(2)).toEqual("2nd");
expect(getOrdinalNumber(32)).toEqual("32nd");
expect(getOrdinalNumber(142)).toEqual("142nd");
});

test('should append "rd" to numbers ending in 3, apart from those ending in 13', () => {
expect(getOrdinalNumber(3)).toEqual("3rd");
expect(getOrdinalNumber(33)).toEqual("33rd");
expect(getOrdinalNumber(143)).toEqual("143rd");
});

test(`should append "th" to other numbers that don't end in 1, 2, or 3`, () => {
expect(getOrdinalNumber(4)).toEqual("4th");
expect(getOrdinalNumber(10)).toEqual("10th");
expect(getOrdinalNumber(24)).toEqual("24th");
expect(getOrdinalNumber(100)).toEqual("100th");
});
13 changes: 9 additions & 4 deletions practice-tdd/repeat-str.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
export function repeatStr() {
// 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";
export function repeatStr(str, count) {
if (count < 0) {
throw new Error("warning! Count cannot be negative!");
}
let result = "";
for (let i = 0; i < count; i++) {
result += str;
}
return result;
}
17 changes: 17 additions & 0 deletions practice-tdd/repeat-str.test.js

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Your test cases are correct. Just for you to think a little bit more, besides const str = "hello", what special string should also be added to each of the test cases?

Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,30 @@ 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 the original string when count equals 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 an empty string when count equals 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 = -2;
expect(() => repeatStr(str, count)).toThrow();
});
Loading