-
-
Notifications
You must be signed in to change notification settings - Fork 337
Expand file tree
/
Copy pathget-ordinal-number.js
More file actions
51 lines (47 loc) · 1.6 KB
/
get-ordinal-number.js
File metadata and controls
51 lines (47 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
function getOrdinalNumber(num) {
// This is for num argument validation that go inside the function.
if ( !Number.isInteger(num)) {
throw new Error("Invalid input: the value must be a number");
}
// This allow float number to be round into it nearest integer.
const mainReminder = num % 100;
const secondReminder = num % 10;
if (mainReminder === 11 || mainReminder === 12 || mainReminder === 13) {
return `${num}th`;
}
switch (true) {
case secondReminder === 1:
return `${num}st`;
case secondReminder === 2:
return `${num}nd`;
case secondReminder === 3:
return `${num}rd`;
default:
return `${num}th`;
}
}
module.exports = getOrdinalNumber;
function testAssert(inputNumber, outputNUmber) {
console.assert(
inputNumber === outputNUmber,
`Test failed: expected ${outputNUmber}, but got ${inputNumber}`
);
}
//Basic test of first digit integer
testAssert(getOrdinalNumber(1), "1st");
testAssert(getOrdinalNumber(2), "2nd");
testAssert(getOrdinalNumber(3), "3rd");
testAssert(getOrdinalNumber(4), "4th");
//Test for 11, 12 and 13
testAssert(getOrdinalNumber(11), "11th");
testAssert(getOrdinalNumber(12), "12th");
testAssert(getOrdinalNumber(13), "13th");
//Test for double digit number
testAssert(getOrdinalNumber(21), "21st");
testAssert(getOrdinalNumber(32), "32nd");
testAssert(getOrdinalNumber(43), "43rd");
//Normal number and float number test.
testAssert(getOrdinalNumber(101), "101st");
testAssert(getOrdinalNumber(202), "202nd");
testAssert(() => getOrdinalNumber(1.2), "Invalid input");
testAssert(() => getOrdinalNumber(10.51), "Invalid input");