feat(ui): port retained widget foundations
This commit is contained in:
parent
44f9ec13d9
commit
d825572e31
44 changed files with 84813 additions and 292 deletions
39
tests/AcDream.App.Tests/UI/UiButtonStateMachineTests.cs
Normal file
39
tests/AcDream.App.Tests/UI/UiButtonStateMachineTests.cs
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
using AcDream.App.UI;
|
||||
|
||||
namespace AcDream.App.Tests.UI;
|
||||
|
||||
public sealed class UiButtonStateMachineTests
|
||||
{
|
||||
public static TheoryData<UiButtonVisualInput, uint> RequestedCases
|
||||
=> new()
|
||||
{
|
||||
{ new(false, false, false, false, false), UiButtonStateMachine.Normal },
|
||||
{ new(false, false, true, false, true), UiButtonStateMachine.NormalRollover },
|
||||
{ new(false, false, true, true, false), UiButtonStateMachine.NormalRollover },
|
||||
{ new(false, false, true, true, true), UiButtonStateMachine.NormalPressed },
|
||||
{ new(false, true, false, false, false), UiButtonStateMachine.Highlight },
|
||||
{ new(false, true, true, false, true), UiButtonStateMachine.HighlightRollover },
|
||||
{ new(false, true, true, true, false), UiButtonStateMachine.HighlightRollover },
|
||||
{ new(false, true, true, true, true), UiButtonStateMachine.HighlightPressed },
|
||||
{ new(true, false, true, true, true), UiButtonStateMachine.Ghosted },
|
||||
{ new(true, true, true, true, true), UiButtonStateMachine.Ghosted },
|
||||
};
|
||||
|
||||
[Theory]
|
||||
[MemberData(nameof(RequestedCases))]
|
||||
public void RequestedState_MatchesRetailPrecedence(UiButtonVisualInput input, uint expected)
|
||||
=> Assert.Equal(expected, UiButtonStateMachine.RequestedState(input));
|
||||
|
||||
[Fact]
|
||||
public void ResolveState_MissingRequestedState_PreservesCustomState()
|
||||
{
|
||||
var available = new HashSet<uint> { 0x10000053u };
|
||||
|
||||
uint resolved = UiButtonStateMachine.ResolveState(
|
||||
0x10000053u,
|
||||
new UiButtonVisualInput(false, false, true, false, true),
|
||||
available);
|
||||
|
||||
Assert.Equal(0x10000053u, resolved);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue