Skip to content

Commit 04f5a7f

Browse files
committed
get ordinal numbers updated template
1 parent 2a422f5 commit 04f5a7f

File tree

1 file changed

+57
-1
lines changed

1 file changed

+57
-1
lines changed
Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,61 @@
1+
12
function getOrdinalNumber(num) {
2-
return "1st";
3+
const remainder10 = num % 10;
4+
const remainder100 = num % 100;
5+
6+
if (remainder100 >= 11 && remainder100 <= 13) {
7+
return `${num}th`;
8+
}
9+
10+
switch (remainder10) {
11+
case 1:
12+
return `${num}st`;
13+
case 2:
14+
return `${num}nd`;
15+
case 3:
16+
return `${num}rd`;
17+
default:
18+
return `${num}th`;
19+
}
320
}
421

522
module.exports = getOrdinalNumber;
23+
24+
25+
const getOrdinalNumber = require("./getOrdinalNumber");
26+
27+
describe("getOrdinalNumber()", () => {
28+
test("should return '1st' for 1", () => {
29+
expect(getOrdinalNumber(1)).toBe("1st");
30+
});
31+
32+
test("should return '2nd' for 2", () => {
33+
expect(getOrdinalNumber(2)).toBe("2nd");
34+
});
35+
36+
test("should return '3rd' for 3", () => {
37+
expect(getOrdinalNumber(3)).toBe("3rd");
38+
});
39+
40+
test("should return '4th' for 4", () => {
41+
expect(getOrdinalNumber(4)).toBe("4th");
42+
});
43+
44+
test("should return '11th', '12th', '13th' for special cases", () => {
45+
expect(getOrdinalNumber(11)).toBe("11th");
46+
expect(getOrdinalNumber(12)).toBe("12th");
47+
expect(getOrdinalNumber(13)).toBe("13th");
48+
});
49+
50+
test("should return correct suffixes for 21, 22, 23", () => {
51+
expect(getOrdinalNumber(21)).toBe("21st");
52+
expect(getOrdinalNumber(22)).toBe("22nd");
53+
expect(getOrdinalNumber(23)).toBe("23rd");
54+
});
55+
56+
test("should return '111th' for numbers ending with 11, 12, 13 even if larger", () => {
57+
expect(getOrdinalNumber(111)).toBe("111th");
58+
expect(getOrdinalNumber(112)).toBe("112th");
59+
expect(getOrdinalNumber(113)).toBe("113th");
60+
});
61+
});

0 commit comments

Comments
 (0)