from pathlib import Path
root=Path(__file__).resolve().parents[2]
checks={
'MenuBar public class':('Component/Menus/MenuBar/MASMenuBar.vb','Public NotInheritable Class MASMenuBar'),
'MenuBar factory':('MASSystem/Application/Facade/MASApplicationWindowControls.ControlFactory.Navigation.vb','Public Function AddMenuBar(Optional configure As Action(Of MASMenuBar) = Nothing) As MASMenuBar'),
'MenuBar shell route':('MASSystem/Application/Facade/MASApplicationWindowControls.ControlFactory.Navigation.vb','Return _shell.AttachStandardMenuBar(configure)'),
'Menu configure null guard':('Component/Menus/MenuBar/MASMenuBar.vb','If configure Is Nothing Then Throw New ArgumentNullException(NameOf(configure))'),
'Menu global handler':('Component/Menus/MenuBar/MASMenuBar.vb','Public Function OnCommand(handler As Action(Of String)) As MASMenuBar'),
'Menu invalid text read':('Component/Menus/MenuBar/MASMenuBar.vb','If index < 0 OrElse index >= _menus.Count Then Return String.Empty'),
'Menu clear event':('Component/Menus/MenuBar/MASMenuBar.vb','RaiseSelectedIndexChangedSafe()'),
'Rail public class':('Component/Navigation/NavigationRail/MASNavigationRail.vb','Public NotInheritable Class MASNavigationRail'),
'Rail factory':('MASSystem/Application/Facade/MASApplicationWindowControls.ControlFactory.Navigation.vb','Public Function AddNavigationRail(Optional title As String = Nothing,'),
'Rail max items':('Component/Tokens/Component/NavigationRailTokens.vb','Friend Const MaxItems As Integer = 48'),
'Rail visible items':('Component/Tokens/Component/NavigationRailTokens.vb','Friend Const MaxVisibleItems As Integer = 9'),
'Rail default title':('Component/Tokens/Component/NavigationRailTokens.vb','Friend Const DefaultTitle As String = "Navigation"'),
'Rail exact key compare':('Component/Navigation/NavigationRail/MASNavigationRail.vb','StringComparison.Ordinal'),
'Rail first selection':('Component/Navigation/NavigationRail/MASNavigationRail.vb','If _selectedIndex < 0 Then _selectedIndex = 0'),
'Rail boundary':('Component/Navigation/NavigationRail/MASNavigationRail.vb','Application routing, PageHost state, drawer/shell'),
'Document link':('docs/reference-guide.md','reference/controls/menu-bar-and-navigation-rail.md'),
}
failed=[]
for name,(p,s) in checks.items():
    text=(root/p).read_text(encoding='utf-8-sig')
    if s not in text: failed.append(name)
print(f'Assertions: {len(checks)-len(failed)} passed, {len(failed)} failed')
if failed:
    print('\n'.join(f'- {x}' for x in failed)); raise SystemExit(1)
