Skip to content

Commit 7536db7

Browse files
committed
Completed get-ordinal-number exercise
1 parent d110d21 commit 7536db7

File tree

2 files changed

+76
-3
lines changed

2 files changed

+76
-3
lines changed
Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,30 @@
11
function getOrdinalNumber(num) {
2-
return "1st";
2+
if (isNaN(num)) {
3+
return "";
4+
}
5+
6+
const numberString = String(num);
7+
const lastDigit = Number(numberString.slice(-1));
8+
const lastDigits = Number(numberString.slice(-2));
9+
let ordinal;
10+
11+
console.log("lastDigits", lastDigits);
12+
13+
if (num === 0) {
14+
ordinal = "";
15+
} else if (lastDigits === 11) {
16+
ordinal = "th";
17+
} else if (lastDigit === 1) {
18+
ordinal = "st";
19+
} else if (lastDigit === 2) {
20+
ordinal = "nd";
21+
} else if (lastDigit === 3) {
22+
ordinal = "rd";
23+
} else {
24+
ordinal = "th";
25+
}
26+
27+
return `${num}${ordinal}`;
328
}
429

530
module.exports = getOrdinalNumber;

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

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,54 @@ const getOrdinalNumber = require("./get-ordinal-number");
88
// When the number is 1,
99
// Then the function should return "1st"
1010

11-
test("should return '1st' for 1", () => {
12-
expect(getOrdinalNumber(1)).toEqual("1st");
11+
test("should return '@' for ", () => {
12+
expect(getOrdinalNumber("@")).toEqual("");
13+
});
14+
15+
test("should return '0' for 0", () => {
16+
expect(getOrdinalNumber(0)).toEqual("0");
17+
});
18+
19+
test("should return '11th' for 11", () => {
20+
expect(getOrdinalNumber(11)).toEqual("11th");
21+
});
22+
23+
test("should return '-11th' for -11", () => {
24+
expect(getOrdinalNumber(-11)).toEqual("-11th");
25+
});
26+
27+
test("should return `22nd` for 22", () => {
28+
expect(getOrdinalNumber(22)).toEqual("22nd");
29+
});
30+
31+
test("should return `123rd` for 123", () => {
32+
expect(getOrdinalNumber(123)).toEqual("123rd");
33+
});
34+
35+
test("should return '1234th' for 1234", () => {
36+
expect(getOrdinalNumber(1234)).toEqual("1234th");
37+
});
38+
39+
test("should return '12345th' for 12345", () => {
40+
expect(getOrdinalNumber(12345)).toEqual("12345th");
41+
});
42+
43+
test("should return '123456th' for 123456", () => {
44+
expect(getOrdinalNumber(123456)).toEqual("123456th");
45+
});
46+
47+
test("should return '1234567th' for 1234567", () => {
48+
expect(getOrdinalNumber(1234567)).toEqual("1234567th");
49+
});
50+
51+
test("should return '12345678th' for 12345678", () => {
52+
expect(getOrdinalNumber(12345678)).toEqual("12345678th");
53+
});
54+
55+
test("should return '123456789th' for 123456789", () => {
56+
expect(getOrdinalNumber(123456789)).toEqual("123456789th");
57+
});
58+
59+
test("should return '1234567890' for 1234567890th", () => {
60+
expect(getOrdinalNumber(1234567890)).toEqual("1234567890th");
1361
});

0 commit comments

Comments
 (0)