from pathlib import Path
root = Path(__file__).resolve().parents[2]
checks = {
    'tabs class': ('Component/Selectors/Tabs/MASTabControl.vb', 'Partial Public NotInheritable Class MASTabControl'),
    'tabs first enabled auto-select': ('Component/Selectors/Tabs/MASTabControl.vb', 'If _selectedIndex < 0 AndAlso enabled Then'),
    'tabs events': ('Component/Selectors/Tabs/MASTabControl.vb', 'Public Event SelectedItemChanged As EventHandler'),
    'breadcrumb set items': ('Component/Navigation/Breadcrumb/MASBreadcrumb.vb', 'Public Function SetItems(items As IEnumerable(Of String)) As MASBreadcrumb'),
    'breadcrumb invalid read empty': ('Component/Navigation/Breadcrumb/MASBreadcrumb.vb', 'If index < 0 OrElse index >= _items.Count Then Return String.Empty'),
    'pagination configure': ('Component/Navigation/Pagination/MASPagination.vb', 'Public Function Configure(totalPages As Integer,'),
    'pagination previous capability': ('Component/Navigation/Pagination/MASPagination.vb', 'Return _currentPage > 1'),
    'toolbar command': ('Component/Reusable/Toolbar/MASToolbar.CommandBar.vb', 'Public Function AddCommand(commandId As String,'),
    'toolbar split command': ('Component/Reusable/Toolbar/MASToolbar.CommandBar.vb', 'Public Function AddSplitCommand(commandId As String,'),
    'toolbar search': ('Component/Reusable/Toolbar/MASToolbar.Items.vb', 'Public Function AddSearchBox(id As String,'),
    'toolbar fixed width guard': ('Component/Reusable/Toolbar/MASToolbar.Items.vb', 'Throw New ArgumentOutOfRangeException(NameOf(widthDip))'),
    'toolbar disposes children': ('Component/Reusable/Toolbar/MASToolbar.Items.vb', 'item.Control.Dispose()'),
    'factory tabs': ('MASSystem/Application/Facade/MASApplicationWindowControls.ControlFactory.Navigation.vb', 'Public Function AddTabControl(Optional configure As Action(Of MASTabControl) = Nothing) As MASTabControl'),
    'factory command bar': ('MASSystem/Application/Facade/MASApplicationWindowControls.ControlFactory.Navigation.vb', 'Public Function AddCommandBar(Optional configure As Action(Of MASToolbar) = Nothing) As MASToolbar'),
}
failed=[]
for name,(rel,needle) in checks.items():
    text=(root/rel).read_text(encoding='utf-8-sig')
    if needle not in text: failed.append(name)
doc=root/'docs/reference/controls/navigation-and-commands.md'
if not doc.exists(): failed.append('documentation file')
if failed:
    print('FAILED:', ', '.join(failed)); raise SystemExit(1)
print(f'Assertions: {len(checks)} passed, 0 failed')
