Skip to content

Commit 8295046

Browse files
Implement getOrdinalNumber function and add comprehensive tests for ordinal suffixes
1 parent 4332537 commit 8295046

2 files changed

Lines changed: 80 additions & 1 deletion

File tree

‎practice-tdd/get-ordinal-number.js‎

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,21 @@
11
export function getOrdinalNumber(num) {
2-
return "1st";
2+
3+
if (num % 100 === 11 || num % 100 === 12 || num % 100 === 13) {
4+
return num + "th";
5+
};
6+
7+
if (num % 10 === 1) {
8+
return num + "st";
9+
};
10+
11+
if (num % 10 === 2) {
12+
return num + "nd";
13+
};
14+
15+
if (num % 10 === 3) {
16+
return num + "rd";
17+
};
18+
19+
return num + "th";
320
}
21+

‎practice-tdd/get-ordinal-number.test.js‎

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,64 @@ test("should append 'st' for numbers ending with 1, except those ending with 11"
1818
expect(getOrdinalNumber(21)).toEqual("21st");
1919
expect(getOrdinalNumber(131)).toEqual("131st");
2020
});
21+
22+
test("should append 'th' for numbers ending with 11", () => {
23+
expect(getOrdinalNumber(11)).toEqual("11th");
24+
expect(getOrdinalNumber(111)).toEqual("111th");
25+
expect(getOrdinalNumber(2111)).toEqual("2111th");
26+
});
27+
28+
test("should append 'nd' for numbers ending with 2 except those ending in 12", () => {
29+
expect(getOrdinalNumber(2)).toEqual("2nd");
30+
expect(getOrdinalNumber(22)).toEqual("22nd");
31+
expect(getOrdinalNumber(4022)).toEqual("4022nd");
32+
});
33+
34+
test("should append 'th' for numbers ending in 12", () => {
35+
expect(getOrdinalNumber(12)).toEqual("12th");
36+
expect(getOrdinalNumber(112)).toEqual("112th");
37+
expect(getOrdinalNumber(1012)).toEqual("1012th");
38+
});
39+
40+
test("should append 'rd' for numbers ending with 3 except those ending in 13", () => {
41+
expect(getOrdinalNumber(3)).toEqual("3rd");
42+
expect(getOrdinalNumber(33)).toEqual("33rd");
43+
expect(getOrdinalNumber(3033)).toEqual("3033rd");
44+
});
45+
46+
test("should append 'th' for numbers ending in 13", () => {
47+
expect(getOrdinalNumber(113)).toEqual("113th");
48+
expect(getOrdinalNumber(13)).toEqual("13th");
49+
expect(getOrdinalNumber(1013)).toEqual("1013th");
50+
});
51+
52+
test("should append 'th' for numbers ending in 4", () => {
53+
expect(getOrdinalNumber(4)).toEqual("4th");
54+
expect(getOrdinalNumber(14)).toEqual("14th");
55+
expect(getOrdinalNumber(24)).toEqual("24th");
56+
});
57+
58+
test("should append 'th' for numbers ending in 5", () => {
59+
expect(getOrdinalNumber(5)).toEqual("5th");
60+
expect(getOrdinalNumber(15)).toEqual("15th");
61+
expect(getOrdinalNumber(1025)).toEqual("1025th");
62+
});
63+
64+
test("should append 'th' for numbers ending in 6, 7, 8, 9", () => {
65+
expect(getOrdinalNumber(6)).toEqual("6th");
66+
expect(getOrdinalNumber(7)).toEqual("7th");
67+
expect(getOrdinalNumber(8)).toEqual("8th");
68+
expect(getOrdinalNumber(9)).toEqual("9th");
69+
});
70+
71+
test("should append 'th' for numbers ending in 10", () => {
72+
expect(getOrdinalNumber(10)).toEqual("10th");
73+
expect(getOrdinalNumber(110)).toEqual("110th");
74+
expect(getOrdinalNumber(1010)).toEqual("1010th");
75+
});
76+
77+
test("should append 'th' for numbers ending in 20", () => {
78+
expect(getOrdinalNumber(20)).toEqual("20th");
79+
expect(getOrdinalNumber(120)).toEqual("120th");
80+
expect(getOrdinalNumber(1120)).toEqual("1120th");
81+
});

0 commit comments

Comments
 (0)