|
19 | 19 |
|
20 | 20 | // Implement a function getAngleType |
21 | 21 | function getAngleType(angle) { |
22 | | - if (angle > 0 && angle < 90) { |
23 | | - return "Acute angle"; |
24 | | - } else if (angle === 90) { |
25 | | - return "Right angle"; |
26 | | - } else if (angle > 90 && angle < 180) { |
27 | | - return "Obtuse angle"; |
28 | | - } else if (angle === 180) { |
29 | | - return "Straight angle"; |
30 | | - } else if (angle > 180 && angle < 360) { |
31 | | - return "Reflex angle"; |
32 | | - } else { |
| 22 | + |
| 23 | + if (typeof angle !== "number" || !Number.isFinite(angle)) { |
33 | 24 | return "Invalid angle"; |
34 | 25 | } |
| 26 | + |
| 27 | + |
| 28 | + if (angle <= 0 || angle >= 360) { |
| 29 | + return "Invalid angle"; |
| 30 | + } |
| 31 | + |
| 32 | + |
| 33 | + if (angle < 90) return "Acute angle"; |
| 34 | + if (angle === 90) return "Right angle"; |
| 35 | + if (angle < 180) return "Obtuse angle"; |
| 36 | + if (angle === 180) return "Straight angle"; |
| 37 | + return "Reflex angle"; |
35 | 38 | } |
36 | 39 |
|
37 | | -// Export for use in other files / Jest tests |
38 | | -//module.exports = getAngleType; |
39 | 40 |
|
40 | | -// Helper function for assertions |
41 | | -function assertEquals(actualOutput, targetOutput) { |
42 | | - console.assert( |
43 | | - actualOutput === targetOutput, |
44 | | - `Expected ${actualOutput} to equal ${targetOutput}` |
45 | | - ); |
46 | | -} |
| 41 | +module.exports = getAngleType; |
47 | 42 |
|
48 | 43 |
|
49 | | -// The line below allows us to load the getAngleType function into tests in other files. |
50 | | -// This will be useful in the "rewrite tests with jest" step. |
51 | | -//module.exports = getAngleType; |
52 | | - |
53 | | -// This helper function is written to make our assertions easier to read. |
54 | | -// If the actual output matches the target output, the test will pass |
55 | | -/*function assertEquals(actualOutput, targetOutput) { |
| 44 | +function assertEquals(actualOutput, targetOutput) { |
56 | 45 | console.assert( |
57 | 46 | actualOutput === targetOutput, |
58 | 47 | `Expected ${actualOutput} to equal ${targetOutput}` |
59 | 48 | ); |
60 | | -}*/ |
| 49 | +} |
61 | 50 |
|
62 | | -// TODO: Write tests to cover all cases, including boundary and invalid cases. |
63 | | -// Example: Identify Right Angles |
64 | 51 | // ===> TESTS |
65 | | - |
66 | | -// Acute angles (0 < angle < 90) |
67 | 52 | console.log("Testing Acute angles..."); |
68 | 53 | assertEquals(getAngleType(1), "Acute angle"); |
69 | | -assertEquals(getAngleType(45), "Acute angle"); |
70 | | -assertEquals(getAngleType(89), "Acute angle"); |
71 | | -assertEquals(getAngleType(0.5), "Acute angle"); |
72 | | - |
73 | | -// Right angle (=90) |
74 | | -console.log("Testing Right angle..."); |
75 | | -assertEquals(getAngleType(90), "Right angle"); |
76 | | - |
77 | | -// Obtuse angles (90 < angle < 180) |
78 | | -console.log("Testing Obtuse angles..."); |
79 | | -assertEquals(getAngleType(91), "Obtuse angle"); |
80 | | -assertEquals(getAngleType(135), "Obtuse angle"); |
81 | | -assertEquals(getAngleType(179), "Obtuse angle"); |
82 | | - |
83 | | -// Straight angle (=180) |
84 | | -console.log("Testing Straight angle..."); |
85 | | -assertEquals(getAngleType(180), "Straight angle"); |
86 | 54 |
|
87 | | -// Reflex angles (180 < angle < 360) |
88 | | -console.log("Testing Reflex angles..."); |
89 | | -assertEquals(getAngleType(181), "Reflex angle"); |
90 | | -assertEquals(getAngleType(270), "Reflex angle"); |
91 | | -assertEquals(getAngleType(359), "Reflex angle"); |
92 | | -assertEquals(getAngleType(359.9), "Reflex angle"); |
93 | 55 |
|
94 | | -// Invalid angles (angle <= 0 or angle >= 360) |
95 | | -console.log("Testing Invalid angles..."); |
96 | | -assertEquals(getAngleType(0), "Invalid angle"); |
97 | | -assertEquals(getAngleType(-1), "Invalid angle"); |
98 | | -assertEquals(getAngleType(-45), "Invalid angle"); |
99 | | -assertEquals(getAngleType(360), "Invalid angle"); |
100 | | -assertEquals(getAngleType(361), "Invalid angle"); |
101 | | -assertEquals(getAngleType(720), "Invalid angle"); |
| 56 | +console.log("Testing input validation..."); |
| 57 | +assertEquals(getAngleType("90"), "Invalid angle"); |
| 58 | +assertEquals(getAngleType(null), "Invalid angle"); |
| 59 | +assertEquals(getAngleType(NaN), "Invalid angle"); |
| 60 | +assertEquals(getAngleType(Infinity), "Invalid angle"); |
102 | 61 |
|
103 | 62 | console.log("\n✅ All tests completed successfully!"); |
0 commit comments