Show folder names immediately and refresh stale index sizes without walking the whole drive.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
using Explorer.Application;
|
||||
|
||||
namespace Explorer.Application.Tests;
|
||||
|
||||
public class BackgroundWorkPolicyTests
|
||||
{
|
||||
private static BackgroundWorkInputs Idle(TimeSpan? idle = null, bool enabled = true, bool ac = true,
|
||||
bool acOnly = true, bool foreground = false, bool runNow = false)
|
||||
=> new(
|
||||
enabled,
|
||||
TimeSpan.FromMinutes(10),
|
||||
idle ?? TimeSpan.FromMinutes(12),
|
||||
acOnly,
|
||||
ac,
|
||||
foreground,
|
||||
runNow);
|
||||
|
||||
[Fact]
|
||||
public void Below_threshold_stays_active()
|
||||
{
|
||||
var decision = BackgroundWorkPolicy.Evaluate(Idle(TimeSpan.FromMinutes(3)));
|
||||
Assert.Equal(UserActivityState.Active, decision.Activity);
|
||||
Assert.False(decision.MaintenanceAllowed);
|
||||
Assert.Equal(MaintenanceSkipReason.BelowIdleThreshold, decision.SkipReason);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Idle_past_threshold_allows_maintenance()
|
||||
{
|
||||
var decision = BackgroundWorkPolicy.Evaluate(Idle());
|
||||
Assert.Equal(UserActivityState.Idle, decision.Activity);
|
||||
Assert.True(decision.MaintenanceAllowed);
|
||||
Assert.Equal(MaintenanceSkipReason.None, decision.SkipReason);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Activity_resumes_and_blocks_maintenance()
|
||||
{
|
||||
var decision = BackgroundWorkPolicy.Evaluate(Idle(TimeSpan.Zero));
|
||||
Assert.Equal(UserActivityState.Active, decision.Activity);
|
||||
Assert.False(decision.MaintenanceAllowed);
|
||||
Assert.Equal(MaintenanceSkipReason.UserActive, decision.SkipReason);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Foreground_jobs_block_even_when_idle()
|
||||
{
|
||||
var decision = BackgroundWorkPolicy.Evaluate(Idle(foreground: true));
|
||||
Assert.False(decision.MaintenanceAllowed);
|
||||
Assert.Equal(MaintenanceSkipReason.ForegroundOperations, decision.SkipReason);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Disabled_policy_never_allows()
|
||||
{
|
||||
var decision = BackgroundWorkPolicy.Evaluate(Idle(enabled: false));
|
||||
Assert.False(decision.MaintenanceAllowed);
|
||||
Assert.Equal(MaintenanceSkipReason.Disabled, decision.SkipReason);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Ac_only_skips_on_battery()
|
||||
{
|
||||
var decision = BackgroundWorkPolicy.Evaluate(Idle(ac: false, acOnly: true));
|
||||
Assert.Equal(UserActivityState.Idle, decision.Activity);
|
||||
Assert.False(decision.MaintenanceAllowed);
|
||||
Assert.Equal(MaintenanceSkipReason.OnBattery, decision.SkipReason);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Ac_only_allows_on_ac()
|
||||
{
|
||||
var decision = BackgroundWorkPolicy.Evaluate(Idle(ac: true, acOnly: true));
|
||||
Assert.True(decision.MaintenanceAllowed);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Run_now_bypasses_idle_and_battery_but_not_foreground()
|
||||
{
|
||||
var allowed = BackgroundWorkPolicy.Evaluate(Idle(TimeSpan.Zero, ac: false, runNow: true));
|
||||
Assert.True(allowed.MaintenanceAllowed);
|
||||
|
||||
var blocked = BackgroundWorkPolicy.Evaluate(Idle(TimeSpan.Zero, foreground: true, runNow: true));
|
||||
Assert.False(blocked.MaintenanceAllowed);
|
||||
Assert.Equal(MaintenanceSkipReason.ForegroundOperations, blocked.SkipReason);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user