@@ -186,6 +186,36 @@ def test_format_time_natural_quarter_to(self):
186186 result = engine .format_time (time (14 , 45 ), style = "natural" )
187187 assert "quarter to" in result .lower ()
188188
189+ def test_format_time_natural_quarter_to_noon_boundary (self ):
190+ """At 11:45 AM, 'quarter to' should say 'quarter to 12 PM' not 'AM'."""
191+ from accessiclock .audio .tts_engine import TTSEngine
192+
193+ engine = TTSEngine (force_dummy = True )
194+ result = engine .format_time (time (11 , 45 ), style = "natural" )
195+ assert "quarter to" in result .lower ()
196+ assert "12" in result
197+ assert "PM" in result
198+
199+ def test_format_time_natural_quarter_to_midnight_boundary (self ):
200+ """At 11:45 PM, 'quarter to' should say 'quarter to 12 AM' not 'PM'."""
201+ from accessiclock .audio .tts_engine import TTSEngine
202+
203+ engine = TTSEngine (force_dummy = True )
204+ result = engine .format_time (time (23 , 45 ), style = "natural" )
205+ assert "quarter to" in result .lower ()
206+ assert "12" in result
207+ assert "AM" in result
208+
209+ def test_format_time_natural_quarter_to_no_boundary (self ):
210+ """At 2:45 PM, 'quarter to' should keep PM."""
211+ from accessiclock .audio .tts_engine import TTSEngine
212+
213+ engine = TTSEngine (force_dummy = True )
214+ result = engine .format_time (time (14 , 45 ), style = "natural" )
215+ assert "quarter to" in result .lower ()
216+ assert "3" in result
217+ assert "PM" in result
218+
189219 def test_format_time_natural_irregular_minute (self ):
190220 """Natural style with irregular minutes should show time normally."""
191221 from accessiclock .audio .tts_engine import TTSEngine
0 commit comments