mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-20 23:58:05 +08:00
85 lines
2.9 KiB
C#
85 lines
2.9 KiB
C#
using Shouldly;
|
|
using Xunit;
|
|
|
|
namespace AtomUI.Desktop.Controls.Tests.Theme;
|
|
|
|
public class DesktopControlsDataEntryThemeScopeMigrationTests
|
|
{
|
|
private static readonly string[] ControlDirectories =
|
|
[
|
|
"src/AtomUI.Desktop.Controls/AutoComplete",
|
|
"src/AtomUI.Desktop.Controls/ButtonSpinner",
|
|
"src/AtomUI.Desktop.Controls/Cascader",
|
|
"src/AtomUI.Desktop.Controls/CheckBox",
|
|
"src/AtomUI.Desktop.Controls/ComboBox",
|
|
"src/AtomUI.Desktop.Controls/DatePicker",
|
|
"src/AtomUI.Desktop.Controls/Form",
|
|
"src/AtomUI.Desktop.Controls/Input",
|
|
"src/AtomUI.Desktop.Controls/Mentions",
|
|
"src/AtomUI.Desktop.Controls/NumericUpDown",
|
|
"src/AtomUI.Desktop.Controls/OtpLineEdit",
|
|
"src/AtomUI.Desktop.Controls/OptionButtonGroup",
|
|
"src/AtomUI.Desktop.Controls/RadioButton",
|
|
"src/AtomUI.Desktop.Controls/Rate",
|
|
"src/AtomUI.Desktop.Controls/Select",
|
|
"src/AtomUI.Desktop.Controls/Slider",
|
|
"src/AtomUI.Desktop.Controls/Switch",
|
|
"src/AtomUI.Desktop.Controls/TimePicker",
|
|
"src/AtomUI.Desktop.Controls/Transfer",
|
|
"src/AtomUI.Desktop.Controls/TreeSelect",
|
|
"src/AtomUI.Desktop.Controls/Upload",
|
|
"src/AtomUI.Desktop.Controls/Primitives/AddOnDecoratedBox",
|
|
"src/AtomUI.Desktop.Controls/Primitives/InfoPickerInput"
|
|
];
|
|
|
|
private static readonly string[] ThemeDirectories =
|
|
ControlDirectories.Select(static directory => $"{directory}/Themes").ToArray();
|
|
|
|
[Fact]
|
|
public void DataEntry_Controls_Remove_Legacy_Token_Scope_Registration()
|
|
{
|
|
foreach (var relativeDirectory in ControlDirectories)
|
|
{
|
|
var codeFiles = Directory.GetFiles(
|
|
GetRepoFile(relativeDirectory),
|
|
"*.cs",
|
|
SearchOption.AllDirectories);
|
|
|
|
codeFiles.ShouldNotBeEmpty();
|
|
|
|
foreach (var codeFile in codeFiles)
|
|
{
|
|
var text = File.ReadAllText(codeFile);
|
|
text.ShouldNotContain("RegisterTokenResourceScope");
|
|
text.ShouldNotContain("ScopeProvider");
|
|
}
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void DataEntry_Control_Themes_Use_Explicit_Token_Resources()
|
|
{
|
|
foreach (var relativeDirectory in ThemeDirectories)
|
|
{
|
|
ThemeAssetScopeAssertions.AssertDirectoryUsesExplicitTokenResources(relativeDirectory);
|
|
}
|
|
}
|
|
|
|
private static string GetRepoFile(string relativePath)
|
|
{
|
|
var directory = AppContext.BaseDirectory;
|
|
while (directory is not null)
|
|
{
|
|
var candidate = Path.Combine(directory, relativePath);
|
|
if (File.Exists(candidate) || Directory.Exists(candidate))
|
|
{
|
|
return candidate;
|
|
}
|
|
|
|
directory = Directory.GetParent(directory)?.FullName;
|
|
}
|
|
|
|
throw new FileNotFoundException(relativePath);
|
|
}
|
|
}
|