Skip to content

Commit c0d9240

Browse files
committed
Updated the funciton so it handels other tests, and added more tests too
1 parent 9600443 commit c0d9240

File tree

2 files changed

+74
-3
lines changed

2 files changed

+74
-3
lines changed
Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,28 @@
11
function getOrdinalNumber(num) {
2-
if(num === 1)
3-
return "1st";
4-
return 0;
2+
//
3+
if (typeof num !== "number" || !Number.isInteger(num) || num <= 0) {
4+
return "Input must be a positive integer.";
5+
}
6+
7+
const lastTwoDigits = num % 100;
8+
const lastDigit = num % 10;
9+
10+
if (lastTwoDigits >= 11 && lastTwoDigits <= 13) {
11+
return `${num}th`;
12+
}
13+
14+
switch (lastDigit) {
15+
case 1:
16+
return `${num}st`;
17+
case 2:
18+
return `${num}nd`;
19+
case 3:
20+
return `${num}rd`;
21+
default:
22+
return `${num}th`;
23+
}
24+
return num;
525
}
626

27+
console.log(getOrdinalNumber(21)); // "1st"
728
module.exports = getOrdinalNumber;

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

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,54 @@ const getOrdinalNumber = require("./get-ordinal-number");
1010

1111
test("should return '1st' for 1", () => {
1212
expect(getOrdinalNumber(1)).toEqual("1st");
13+
expect(getOrdinalNumber(21)).toEqual("21st");
14+
expect(getOrdinalNumber(101)).toEqual("101st");
1315
});
16+
17+
// Case 2: Identify the ordinal number for 1
18+
// except those ending in 12
19+
test("append 'nd' to numbers ending in 2, except those ending in 12", () => {
20+
expect( getOrdinalNumber(2) ).toEqual("2nd");
21+
expect( getOrdinalNumber(22) ).toEqual("22nd");
22+
expect( getOrdinalNumber(132) ).toEqual("132nd");
23+
});
24+
25+
// Case 3: Identify the ordinal numbers for 3 to 12
26+
test("should return correct ordinal suffixes for numbers 3 to 12", () => {
27+
expect( getOrdinalNumber(3) ).toEqual("3rd");
28+
expect( getOrdinalNumber(4) ).toEqual("4th");
29+
expect( getOrdinalNumber(5) ).toEqual("5th");
30+
expect( getOrdinalNumber(6) ).toEqual("6th");
31+
expect( getOrdinalNumber(7) ).toEqual("7th");
32+
expect( getOrdinalNumber(8) ).toEqual("8th");
33+
expect( getOrdinalNumber(9) ).toEqual("9th");
34+
expect( getOrdinalNumber(10) ).toEqual("10th");
35+
expect( getOrdinalNumber(11) ).toEqual("11th");
36+
expect( getOrdinalNumber(12) ).toEqual("12th");
37+
});
38+
// Case 4: Identify the ordinal numbers for numbers above 12
39+
test("should return correct ordinal suffixes for numbers above 12", () => {
40+
expect( getOrdinalNumber(13) ).toEqual("13th");
41+
expect( getOrdinalNumber(19) ).toEqual("19th");
42+
expect( getOrdinalNumber(23) ).toEqual("23rd");
43+
expect( getOrdinalNumber(34) ).toEqual("34th");
44+
expect( getOrdinalNumber(45) ).toEqual("45th");
45+
expect( getOrdinalNumber(56) ).toEqual("56th");
46+
expect( getOrdinalNumber(67) ).toEqual("67th");
47+
});
48+
49+
// Case 5: Identify the ordinal numbers for numbers like 20 30 40 etc
50+
test("should return correct ordinal suffixes for multiples of ten", () => {
51+
expect( getOrdinalNumber(20) ).toEqual("20th");
52+
expect( getOrdinalNumber(30) ).toEqual("30th");
53+
expect( getOrdinalNumber(70) ).toEqual("70th");
54+
expect( getOrdinalNumber(50) ).toEqual("50th");
55+
});
56+
57+
// Case 6: dealing with big numbers
58+
test("should return correct ordinal suffixes for big numbers", () => {
59+
expect( getOrdinalNumber(111) ).toEqual("111th");
60+
expect( getOrdinalNumber(4712) ).toEqual("4712th");
61+
expect( getOrdinalNumber(10003) ).toEqual("10003rd");
62+
expect( getOrdinalNumber(10012) ).toEqual("10012th");
63+
});

0 commit comments

Comments
 (0)