Skip to content

Commit a156bac

Browse files
committed
Implement getOrdinalNumber and add Jest tests
1 parent 8d018fd commit a156bac

2 files changed

Lines changed: 36 additions & 2 deletions

File tree

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
function getOrdinalNumber(num) {
2-
return "1st";
2+
const endDigit = num % 10;
3+
const endTwoDigits = num % 100;
4+
if (endTwoDigits >= 11 && endTwoDigits <= 13) return num + "th";
5+
if (endDigit === 1) return num + "st";
6+
if (endDigit === 2) return num + "nd";
7+
if (endDigit === 3) return num + "rd";
8+
return num + "th";
39
}
410

511
module.exports = getOrdinalNumber;

Sprint-3/2-practice-tdd/get-ordinal-number.test.js

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,36 @@ const getOrdinalNumber = require("./get-ordinal-number");
1313
// Case 1: Numbers ending with 1 (but not 11)
1414
// When the number ends with 1, except those ending with 11,
1515
// Then the function should return a string by appending "st" to the number.
16-
test("should append 'st' for numbers ending with 1, except those ending with 11", () => {
16+
/*test("should append 'st' for numbers ending with 1, except those ending with 11", () => {
1717
expect(getOrdinalNumber(1)).toEqual("1st");
1818
expect(getOrdinalNumber(21)).toEqual("21st");
1919
expect(getOrdinalNumber(131)).toEqual("131st");
20+
});*/
21+
22+
describe("getOrdinalNumber", () => {
23+
test("appends th for numbers ending in 11, 12, or 13", () => {
24+
expect(getOrdinalNumber(11)).toEqual("11th");
25+
expect(getOrdinalNumber(12)).toEqual("12th");
26+
expect(getOrdinalNumber(13)).toEqual("13th");
27+
expect(getOrdinalNumber(111)).toEqual("111th");
28+
expect(getOrdinalNumber(112)).toEqual("112th");
29+
expect(getOrdinalNumber(113)).toEqual("113th");
30+
});
31+
test("appends st for numbers ending in 1 but not 11", () => {
32+
expect(getOrdinalNumber(1)).toEqual("1st");
33+
expect(getOrdinalNumber(131)).toEqual("131st");
34+
});
35+
test("appends nd for numbers ending in 2 but not 12", () => {
36+
expect(getOrdinalNumber(2)).toEqual("2nd");
37+
expect(getOrdinalNumber(932)).toEqual("932nd");
38+
});
39+
test("appends rd for numbers ending in 3 but not 13", () => {
40+
expect(getOrdinalNumber(3)).toEqual("3rd");
41+
expect(getOrdinalNumber(33)).toEqual("33rd");
42+
});
43+
test("appends th for all other numbers", () => {
44+
expect(getOrdinalNumber(20)).toEqual("20th");
45+
expect(getOrdinalNumber(24)).toEqual("24th");
46+
expect(getOrdinalNumber(100)).toEqual("100th");
47+
});
2048
});

0 commit comments

Comments
 (0)