89 lines
3.3 KiB
C#
89 lines
3.3 KiB
C#
using System.Linq;
|
|
using Paca.Browser;
|
|
using Paca.Browser.Extensions;
|
|
using Paca.Browser.Tabs;
|
|
using Xunit;
|
|
|
|
namespace Paca.Tests.Browser;
|
|
|
|
public class ChromeTaskManagerAdvancedTests
|
|
{
|
|
[Fact]
|
|
public void CollectTasks_Includes_Gpu_Process_And_Tabs()
|
|
{
|
|
var tabMgr = new TabManager(() => new TabItem());
|
|
tabMgr.NewTab("https://github.com");
|
|
tabMgr.NewTab("https://youtube.com");
|
|
|
|
var tasks = BrowserTaskManager.CollectTasks(tabMgr);
|
|
|
|
// Must include Main Browser, GPU Process, and 2 Tabs
|
|
Assert.Contains(tasks, t => t.Type == BrowserTaskType.Browser && t.Id == "browser-main");
|
|
Assert.Contains(tasks, t => t.Type == BrowserTaskType.Gpu && t.Id == "gpu-process");
|
|
Assert.Equal(2, tasks.Count(t => t.Type == BrowserTaskType.Tab));
|
|
}
|
|
|
|
[Fact]
|
|
public void BrowserTaskManager_Sorts_By_Columns()
|
|
{
|
|
var tabMgr = new TabManager(() => new TabItem());
|
|
var t1 = tabMgr.NewTab("https://a.com");
|
|
var t2 = tabMgr.NewTab("https://b.com");
|
|
|
|
var tasks = BrowserTaskManager.CollectTasks(tabMgr);
|
|
|
|
// Sort by Memory Descending
|
|
var byMemory = BrowserTaskManager.SortTasks(tasks, BrowserTaskSortColumn.Memory, descending: true);
|
|
Assert.True(byMemory[0].MemoryBytes >= byMemory[1].MemoryBytes);
|
|
|
|
// Sort by CPU Descending
|
|
var byCpu = BrowserTaskManager.SortTasks(tasks, BrowserTaskSortColumn.Cpu, descending: true);
|
|
Assert.True(byCpu[0].CpuPercent >= byCpu[1].CpuPercent);
|
|
}
|
|
|
|
[Fact]
|
|
public void BrowserTaskItem_Formats_NetworkDisplay()
|
|
{
|
|
var task = new BrowserTaskItem(
|
|
Id: "tab-1",
|
|
Title: "Tab 1",
|
|
Url: "https://example.com",
|
|
Type: BrowserTaskType.Tab,
|
|
MemoryBytes: 50 * 1024 * 1024,
|
|
CpuPercent: 2.5,
|
|
NetworkBytesPerSec: 1536000); // ~1.5 MB/s
|
|
|
|
Assert.Equal("50.0 MB", task.MemoryDisplay);
|
|
Assert.Equal("2.5%", task.CpuDisplay);
|
|
Assert.Equal("1.5 MB/s", task.NetworkDisplay);
|
|
}
|
|
|
|
[Fact]
|
|
public void CollectTasks_Differentiates_Active_And_Background_Tabs()
|
|
{
|
|
var tabMgr = new TabManager(() => new TabItem());
|
|
var activeTab = tabMgr.NewTab("https://active.com", activate: true);
|
|
var bgTab = tabMgr.NewTab("https://background.com", activate: false);
|
|
|
|
var tasks = BrowserTaskManager.CollectTasks(tabMgr);
|
|
var activeTask = tasks.First(t => t.Id == activeTab.Id.ToString());
|
|
var bgTask = tasks.First(t => t.Id == bgTab.Id.ToString());
|
|
|
|
// Active tab must show higher or equal CPU activity and allocated working set
|
|
Assert.True(activeTask.CpuPercent > bgTask.CpuPercent, "Active tab should report higher CPU usage than background tab");
|
|
Assert.True(activeTask.MemoryBytes >= bgTask.MemoryBytes, "Active tab should report equal or higher memory");
|
|
}
|
|
|
|
[Fact]
|
|
public void EndTask_ClosesTab_Or_DisablesExtension()
|
|
{
|
|
var tabMgr = new TabManager(() => new TabItem());
|
|
var tab1 = tabMgr.NewTab("https://closeme.com");
|
|
var tasks = BrowserTaskManager.CollectTasks(tabMgr);
|
|
var tabTask = tasks.First(t => t.Id == tab1.Id.ToString());
|
|
|
|
bool ended = BrowserTaskManager.EndTask(tabTask, tabMgr);
|
|
Assert.True(ended);
|
|
Assert.DoesNotContain(tab1, tabMgr.Tabs);
|
|
}
|
|
}
|