|
1 | 1 | const getOrdinalNumber = require("./get-ordinal-number"); |
| 2 | +// In this week's prep, we started implementing getOrdinalNumber |
2 | 3 |
|
3 | | -// Category 1: Numbers ending in 11, 12, 13 → always "th" |
4 | | -test("appends 'th' to numbers ending in 11, 12, or 13", () => { |
5 | | - const numbers = [11, 12, 13, 111, 1012, 1313]; |
6 | | - numbers.forEach(num => { |
7 | | - expect(getOrdinalNumber(num)).toEqual(`${num}th`); |
8 | | - }); |
9 | | -}); |
10 | | - |
11 | | -// Category 2: Numbers ending in 1 → "st" (except those ending in 11) |
12 | | -test("appends 'st' to numbers ending in 1 except those ending in 11", () => { |
13 | | - const numbers = [1, 21, 101, 1001]; |
14 | | - numbers.forEach(num => { |
15 | | - expect(getOrdinalNumber(num)).toEqual(`${num}st`); |
16 | | - }); |
17 | | -}); |
| 4 | +// continue testing and implementing getOrdinalNumber for additional cases |
| 5 | +// Write your tests using Jest - remember to run your tests often for continual feedback |
18 | 6 |
|
19 | | -// Category 3: Numbers ending in 2 → "nd" (except those ending in 12) |
20 | | -test("appends 'nd' to numbers ending in 2 except those ending in 12", () => { |
21 | | - const numbers = [2, 22, 102, 202]; |
22 | | - numbers.forEach(num => { |
23 | | - expect(getOrdinalNumber(num)).toEqual(`${num}nd`); |
24 | | - }); |
25 | | -}); |
26 | | - |
27 | | -// Category 4: Numbers ending in 3 → "rd" (except those ending in 13) |
28 | | -test("appends 'rd' to numbers ending in 3 except those ending in 13", () => { |
29 | | - const numbers = [3, 23, 103, 1003]; |
30 | | - numbers.forEach(num => { |
31 | | - expect(getOrdinalNumber(num)).toEqual(`${num}rd`); |
32 | | - }); |
33 | | -}); |
34 | | - |
35 | | -// Category 5: All other numbers → "th" |
36 | | -test("appends 'th' to numbers that don't meet special suffix rules", () => { |
37 | | - const numbers = [4, 5, 6, 9, 20, 100, 1004, 1009]; |
38 | | - numbers.forEach(num => { |
39 | | - expect(getOrdinalNumber(num)).toEqual(`${num}th`); |
40 | | - }); |
41 | | -}); |
42 | | - |
43 | | -// Error handling - Non-integers |
44 | | -test("throws an error when number is not an integer", () => { |
45 | | - const invalidInputs = [1.5, "3", null, undefined, {}, [], NaN]; |
46 | | - |
47 | | - invalidInputs.forEach(input => { |
48 | | - expect(() => getOrdinalNumber(input)).toThrow("Input must be an integer"); |
49 | | - }); |
50 | | -}); |
| 7 | +// Case 1: Identify the ordinal number for 1 |
| 8 | +// When the number is 1, |
| 9 | +// Then the function should return "1st" |
51 | 10 |
|
52 | | -// Error handling - Negative values |
53 | | -test("throws an error when number is negative", () => { |
54 | | - expect(() => getOrdinalNumber(-1)).toThrow("Input must be a non-negative integer"); |
| 11 | +test("should return '1st' for 1", () => { |
| 12 | + expect(getOrdinalNumber(1)).toEqual("1st"); |
55 | 13 | }); |
0 commit comments