1616
1717function getAngleType ( angle ) {
1818 // TODO: Implement this function
19+ // Check for invalid angles (outside 0-360 range or negative)
20+ if ( angle <= 0 || angle >= 360 ) {
21+ return "Invalid angle" ;
22+ }
23+
24+ // Check for acute angle (0 < angle < 90)
25+ if ( angle < 90 ) {
26+ return "Acute angle" ;
27+ }
28+
29+ // Check for right angle (exactly 90)
30+ if ( angle === 90 ) {
31+ return "Right angle" ;
32+ }
33+
34+ // Check for obtuse angle (90 < angle < 180)
35+ if ( angle < 180 ) {
36+ return "Obtuse angle" ;
37+ }
38+
39+ // Check for straight angle (exactly 180)
40+ if ( angle === 180 ) {
41+ return "Straight angle" ;
42+ }
43+
44+ // Check for reflex angle (180 < angle < 360)
45+ if ( angle < 360 ) {
46+ return "Reflex angle" ;
47+ }
48+
49+ // This should not be reached due to the first check, but included for completeness
50+ return "Invalid angle" ;
1951}
2052
2153// The line below allows us to load the getAngleType function into tests in other files.
@@ -29,9 +61,152 @@ function assertEquals(actualOutput, targetOutput) {
2961 actualOutput === targetOutput ,
3062 `Expected ${ actualOutput } to equal ${ targetOutput } `
3163 ) ;
32- }
64+ }
3365
3466// TODO: Write tests to cover all cases, including boundary and invalid cases.
3567// Example: Identify Right Angles
68+
69+ // ============================================================
70+ // ACUTE ANGLE TESTS (0 < angle < 90)
71+ // ============================================================
72+ console . log ( "--- Acute Angle Tests (0° < angle < 90°) ---" ) ;
73+
74+ const acute1 = getAngleType ( 1 ) ;
75+ assertEquals ( acute1 , "Acute angle" ) ;
76+ console . log ( " Test: 1° is Acute angle" ) ;
77+
78+ const acute2 = getAngleType ( 45 ) ;
79+ assertEquals ( acute2 , "Acute angle" ) ;
80+ console . log ( " Test: 45° is Acute angle" ) ;
81+
82+ const acute3 = getAngleType ( 60 ) ;
83+ assertEquals ( acute3 , "Acute angle" ) ;
84+ console . log ( "Test: 60° is Acute angle" ) ;
85+
86+ const acute4 = getAngleType ( 89 ) ;
87+ assertEquals ( acute4 , "Acute angle" ) ;
88+ console . log ( " Test: 89° is Acute angle (boundary - just below 90°)" ) ;
89+
90+ const acute5 = getAngleType ( 0.5 ) ;
91+ assertEquals ( acute5 , "Acute angle" ) ;
92+ console . log ( " Test: 0.5° is Acute angle (decimal)" ) ;
93+
94+ // ============================================================
95+ // RIGHT ANGLE TEST (exactly 90)
96+ // ============================================================
97+ console . log ( "\n--- Right Angle Test (exactly 90°) ---" ) ;
98+
3699const right = getAngleType ( 90 ) ;
37100assertEquals ( right , "Right angle" ) ;
101+ console . log ( " Test: 90° is Right angle" ) ;
102+
103+ // ============================================================
104+ // OBTUSE ANGLE TESTS (90 < angle < 180)
105+ // ============================================================
106+ console . log ( "\n--- Obtuse Angle Tests (90° < angle < 180°) ---" ) ;
107+
108+ const obtuse1 = getAngleType ( 91 ) ;
109+ assertEquals ( obtuse1 , "Obtuse angle" ) ;
110+ console . log ( " Test: 91° is Obtuse angle (boundary - just above 90°)" ) ;
111+
112+ const obtuse2 = getAngleType ( 120 ) ;
113+ assertEquals ( obtuse2 , "Obtuse angle" ) ;
114+ console . log ( " Test: 120° is Obtuse angle" ) ;
115+
116+ const obtuse3 = getAngleType ( 135 ) ;
117+ assertEquals ( obtuse3 , "Obtuse angle" ) ;
118+ console . log ( " Test: 135° is Obtuse angle" ) ;
119+
120+ const obtuse4 = getAngleType ( 179 ) ;
121+ assertEquals ( obtuse4 , "Obtuse angle" ) ;
122+ console . log ( " Test: 179° is Obtuse angle (boundary - just below 180°)" ) ;
123+
124+ const obtuse5 = getAngleType ( 150.5 ) ;
125+ assertEquals ( obtuse5 , "Obtuse angle" ) ;
126+ console . log ( " Test: 150.5° is Obtuse angle (decimal)" ) ;
127+
128+ // ============================================================
129+ // STRAIGHT ANGLE TEST (exactly 180)
130+ // ============================================================
131+ console . log ( "\n--- Straight Angle Test (exactly 180°) ---" ) ;
132+
133+ const straight = getAngleType ( 180 ) ;
134+ assertEquals ( straight , "Straight angle" ) ;
135+ console . log ( " Test: 180° is Straight angle" ) ;
136+
137+ // ============================================================
138+ // REFLEX ANGLE TESTS (180 < angle < 360)
139+ // ============================================================
140+ console . log ( "\n--- Reflex Angle Tests (180° < angle < 360°) ---" ) ;
141+
142+ const reflex1 = getAngleType ( 181 ) ;
143+ assertEquals ( reflex1 , "Reflex angle" ) ;
144+ console . log ( " Test: 181° is Reflex angle (boundary - just above 180°)" ) ;
145+
146+ const reflex2 = getAngleType ( 200 ) ;
147+ assertEquals ( reflex2 , "Reflex angle" ) ;
148+ console . log ( " Test: 200° is Reflex angle" ) ;
149+
150+ const reflex3 = getAngleType ( 270 ) ;
151+ assertEquals ( reflex3 , "Reflex angle" ) ;
152+ console . log ( " Test: 270° is Reflex angle" ) ;
153+
154+ const reflex4 = getAngleType ( 300 ) ;
155+ assertEquals ( reflex4 , "Reflex angle" ) ;
156+ console . log ( " Test: 300° is Reflex angle" ) ;
157+
158+ const reflex5 = getAngleType ( 359 ) ;
159+ assertEquals ( reflex5 , "Reflex angle" ) ;
160+ console . log ( " Test: 359° is Reflex angle (boundary - just below 360°)" ) ;
161+
162+ const reflex6 = getAngleType ( 225.7 ) ;
163+ assertEquals ( reflex6 , "Reflex angle" ) ;
164+ console . log ( " Test: 225.7° is Reflex angle (decimal)" ) ;
165+
166+ // ============================================================
167+ // INVALID ANGLE TESTS
168+ // ============================================================
169+ console . log ( "\n--- Invalid Angle Tests ---" ) ;
170+
171+ // Zero
172+ const invalid1 = getAngleType ( 0 ) ;
173+ assertEquals ( invalid1 , "Invalid angle" ) ;
174+ console . log ( " Test: 0° is Invalid angle" ) ;
175+
176+ // Negative angles
177+ const invalid2 = getAngleType ( - 1 ) ;
178+ assertEquals ( invalid2 , "Invalid angle" ) ;
179+ console . log ( " Test: -1° is Invalid angle" ) ;
180+
181+ const invalid3 = getAngleType ( - 45 ) ;
182+ assertEquals ( invalid3 , "Invalid angle" ) ;
183+ console . log ( " Test: -45° is Invalid angle" ) ;
184+
185+ const invalid4 = getAngleType ( - 90 ) ;
186+ assertEquals ( invalid4 , "Invalid angle" ) ;
187+ console . log ( " Test: -90° is Invalid angle" ) ;
188+
189+ const invalid5 = getAngleType ( - 180 ) ;
190+ assertEquals ( invalid5 , "Invalid angle" ) ;
191+ console . log ( " Test: -180° is Invalid angle" ) ;
192+
193+ // 360 and above
194+ const invalid6 = getAngleType ( 360 ) ;
195+ assertEquals ( invalid6 , "Invalid angle" ) ;
196+ console . log ( " Test: 360° is Invalid angle (boundary)" ) ;
197+
198+ const invalid7 = getAngleType ( 361 ) ;
199+ assertEquals ( invalid7 , "Invalid angle" ) ;
200+ console . log ( " Test: 361° is Invalid angle" ) ;
201+
202+ const invalid8 = getAngleType ( 400 ) ;
203+ assertEquals ( invalid8 , "Invalid angle" ) ;
204+ console . log ( " Test: 400° is Invalid angle" ) ;
205+
206+ const invalid9 = getAngleType ( 720 ) ;
207+ assertEquals ( invalid9 , "Invalid angle" ) ;
208+ console . log ( " Test: 720° is Invalid angle (full rotation)" ) ;
209+
210+ const invalid10 = getAngleType ( 1000 ) ;
211+ assertEquals ( invalid10 , "Invalid angle" ) ;
212+ console . log ( " Test: 1000° is Invalid angle" ) ;
0 commit comments