54 lines
1.9 KiB
C#
54 lines
1.9 KiB
C#
using AcDream.UI.Abstractions.Panels.Settings;
|
|
|
|
namespace AcDream.UI.Abstractions.Tests.Panels.Settings;
|
|
|
|
/// <summary>
|
|
/// L.0: <see cref="GameplaySettings"/> default-pin tests + value-equality
|
|
/// guarantees. Defaults are intentionally NOT bit-exact to retail's
|
|
/// <c>0x50C4A54A</c> mask — see GameplaySettings remarks for rationale.
|
|
/// </summary>
|
|
public sealed class GameplaySettingsTests
|
|
{
|
|
[Fact]
|
|
public void Default_values_are_typical_user_friendly()
|
|
{
|
|
// These defaults are reviewed in the L.0 brainstorm — typical-user
|
|
// starting point, not retail-bitmask. A change to any of these
|
|
// should be a deliberate decision, not a drive-by.
|
|
var d = GameplaySettings.Default;
|
|
Assert.True(d.AutoTarget);
|
|
Assert.True(d.AutoRepeatAttack);
|
|
Assert.True(d.ToggleRun);
|
|
Assert.False(d.AdvancedCombatUI);
|
|
Assert.True(d.ShowTooltips);
|
|
Assert.False(d.VividTargetingIndicator);
|
|
Assert.False(d.SideBySideVitals);
|
|
Assert.True(d.CoordinatesOnRadar); // retail default mask includes 0x00400000
|
|
Assert.True(d.SpellDuration);
|
|
Assert.True(d.AllowGive);
|
|
Assert.True(d.ShowHelm);
|
|
Assert.True(d.ShowCloak);
|
|
Assert.False(d.LockUI);
|
|
Assert.False(d.UseMouseTurning);
|
|
}
|
|
|
|
[Fact]
|
|
public void Equality_is_value_based()
|
|
{
|
|
var a = GameplaySettings.Default;
|
|
var b = GameplaySettings.Default with { AutoTarget = false };
|
|
var c = GameplaySettings.Default with { AutoTarget = false };
|
|
Assert.NotEqual(a, b);
|
|
Assert.Equal(b, c);
|
|
}
|
|
|
|
[Fact]
|
|
public void With_expression_clones_one_field()
|
|
{
|
|
var d = GameplaySettings.Default with { LockUI = true };
|
|
Assert.True(d.LockUI);
|
|
// Other fields untouched.
|
|
Assert.Equal(GameplaySettings.Default.AutoTarget, d.AutoTarget);
|
|
Assert.Equal(GameplaySettings.Default.ShowHelm, d.ShowHelm);
|
|
}
|
|
}
|