@@ -365,3 +365,84 @@ def test_change_area_color(self) -> None:
365365 sf = sa ._bg_surface
366366 self .assertEqual (sa .update_area_color ('red' ), sa )
367367 self .assertNotEqual (sf , sa ._bg_surface )
368+
369+ def test_get_scrollbar_default_config_returns_south (self ) -> None :
370+ """
371+ Test get_scrollbar returns the South scrollbar for default config (SOUTH_EAST).
372+ """
373+ menu = MenuUtils .generic_menu ()
374+ sa = menu .get_scrollarea ()
375+ south_scrollbar = sa .get_scrollbar (POSITION_SOUTH )
376+ self .assertIsNotNone (south_scrollbar )
377+ self .assertEqual (south_scrollbar .get_orientation (), ORIENTATION_HORIZONTAL )
378+
379+ def test_get_scrollbar_default_config_returns_east (self ) -> None :
380+ """
381+ Test get_scrollbar returns the East scrollbar for default config (SOUTH_EAST).
382+ """
383+ menu = MenuUtils .generic_menu ()
384+ sa = menu .get_scrollarea ()
385+ east_scrollbar = sa .get_scrollbar (POSITION_EAST )
386+ self .assertIsNotNone (east_scrollbar )
387+ self .assertEqual (east_scrollbar .get_orientation (), ORIENTATION_VERTICAL )
388+
389+ def test_get_scrollbar_default_config_returns_none_for_north (self ) -> None :
390+ """
391+ Test get_scrollbar returns None for North scrollbar on default config.
392+ """
393+ menu = MenuUtils .generic_menu ()
394+ sa = menu .get_scrollarea ()
395+ self .assertIsNone (sa .get_scrollbar (POSITION_NORTH ))
396+
397+ def test_get_scrollbar_default_config_returns_none_for_west (self ) -> None :
398+ """
399+ Test get_scrollbar returns None for West scrollbar on default config.
400+ """
401+ menu = MenuUtils .generic_menu ()
402+ sa = menu .get_scrollarea ()
403+ self .assertIsNone (sa .get_scrollbar (POSITION_WEST ))
404+
405+ def test_get_scrollbar_returns_none_for_center_position (self ) -> None :
406+ """
407+ Test get_scrollbar returns None for POSITION_CENTER (not a scrollbar position).
408+ """
409+ menu = MenuUtils .generic_menu ()
410+ sa = menu .get_scrollarea ()
411+ # POSITION_CENTER is a valid position string but not a scrollbar position
412+ self .assertIsNone (sa .get_scrollbar (POSITION_CENTER ))
413+
414+ def test_get_scrollbar_full_config_returns_all_scrollbars (self ) -> None :
415+ """
416+ Test get_scrollbar returns all scrollbars for SCROLLAREA_POSITION_FULL config.
417+ """
418+ theme_full = TEST_THEME .copy ()
419+ theme_full .scrollarea_position = SCROLLAREA_POSITION_FULL
420+ menu_full = MenuUtils .generic_menu (theme = theme_full )
421+ sa_full = menu_full .get_scrollarea ()
422+
423+ self .assertIsNotNone (sa_full .get_scrollbar (POSITION_NORTH ))
424+ self .assertIsNotNone (sa_full .get_scrollbar (POSITION_SOUTH ))
425+ self .assertIsNotNone (sa_full .get_scrollbar (POSITION_EAST ))
426+ self .assertIsNotNone (sa_full .get_scrollbar (POSITION_WEST ))
427+
428+ def test_get_scrollbar_none_config_returns_no_scrollbars (self ) -> None :
429+ """
430+ Test get_scrollbar returns None for all positions when SCROLLAREA_POSITION_NONE.
431+ """
432+ theme_none = TEST_THEME .copy ()
433+ theme_none .scrollarea_position = SCROLLAREA_POSITION_NONE
434+ menu_none = MenuUtils .generic_menu (theme = theme_none )
435+ sa_none = menu_none .get_scrollarea ()
436+
437+ self .assertIsNone (sa_none .get_scrollbar (POSITION_NORTH ))
438+ self .assertIsNone (sa_none .get_scrollbar (POSITION_EAST ))
439+ self .assertIsNone (sa_none .get_scrollbar (POSITION_SOUTH ))
440+ self .assertIsNone (sa_none .get_scrollbar (POSITION_WEST ))
441+
442+ def test_get_scrollbar_raises_value_error_for_invalid_string (self ) -> None :
443+ """
444+ Test get_scrollbar raises ValueError for a genuinely invalid position string.
445+ """
446+ menu = MenuUtils .generic_menu ()
447+ sa = menu .get_scrollarea ()
448+ self .assertRaises (AssertionError , lambda : sa .get_scrollbar ("INVALID_POSITION_STRING" ))
0 commit comments