Files
4566704 138c929bd4 feat(hardware): 自 go-hua 迁入硬件信息采集与变更检测
- WMI 采集主板/BIOS/显卡/内存/CPU/硬盘等 11 类设备 + 变更比对
- 新增依赖 gopsutil/yusufpapurcu/wmi, 附测试、例程与 README
2026-09-20 12:29:36 +08:00

99 lines
3.4 KiB
Go

package hardware
import "testing"
func TestCheckBaseBoardChanged(t *testing.T) {
now := []BaseBoard{{Product: "X570", Manufacturer: "ASUS"}}
if CheckBaseBoardChanged(now, []BaseBoard{{Product: "X570", Manufacturer: "ASUS"}}) {
t.Error("相同主板不应判定变更")
}
if !CheckBaseBoardChanged(now, []BaseBoard{{Product: "B550", Manufacturer: "ASUS"}}) {
t.Error("主板型号变化应判定变更")
}
if !CheckBaseBoardChanged(now, []BaseBoard{{Product: "X570", Manufacturer: "ASUS"}, {Product: "B550", Manufacturer: "MSI"}}) {
t.Error("数量变化应判定变更")
}
if !CheckBaseBoardChanged(now, nil) {
t.Error("数量变化应判定变更")
}
}
func TestCheckBiosChanged(t *testing.T) {
now := []Bios{{SMBIOSBIOSVersion: "1.0"}}
if CheckBiosChanged(now, []Bios{{SMBIOSBIOSVersion: "1.0"}}) {
t.Error("相同 BIOS 不应判定变更")
}
if !CheckBiosChanged(now, []Bios{{SMBIOSBIOSVersion: "2.0"}}) {
t.Error("BIOS 版本变化应判定变更")
}
}
func TestCheckProcessorChanged(t *testing.T) {
now := []Processor{{Name: "Ryzen 5800X"}}
if CheckProcessorChanged(now, []Processor{{Name: "Ryzen 5800X"}}) {
t.Error("相同 CPU 不应判定变更")
}
if !CheckProcessorChanged(now, []Processor{{Name: "Ryzen 5900X"}}) {
t.Error("CPU 型号变化应判定变更")
}
// 多个相同硬件乱序
now2 := []Processor{{Name: "A"}, {Name: "B"}}
if CheckProcessorChanged(now2, []Processor{{Name: "B"}, {Name: "A"}}) {
t.Error("乱序但集合相同不应判定变更")
}
// 重复硬件与新增硬件
if !CheckProcessorChanged([]Processor{{Name: "A"}, {Name: "A"}}, []Processor{{Name: "A"}, {Name: "B"}}) {
t.Error("重复硬件与不同硬件混合应判定变更")
}
}
func TestCheckPhysicalMemoryChanged(t *testing.T) {
now := []PhysicalMemory{{Capacity: 8589934592}}
if CheckPhysicalMemoryChanged(now, []PhysicalMemory{{Capacity: 8589934592}}) {
t.Error("相同容量不应判定变更")
}
if !CheckPhysicalMemoryChanged(now, []PhysicalMemory{{Capacity: 17179869184}}) {
t.Error("容量变化应判定变更")
}
}
func TestCheckVideoControllerChanged(t *testing.T) {
now := []VideoController{{Name: "RTX 3060"}}
if CheckVideoControllerChanged(now, []VideoController{{Name: "RTX 3060"}}) {
t.Error("相同显卡不应判定变更")
}
if !CheckVideoControllerChanged(now, []VideoController{{Name: "RTX 4060"}}) {
t.Error("显卡变化应判定变更")
}
}
func TestCheckDiskDriveChanged(t *testing.T) {
now := []DiskDrive{{Caption: "Samsung SSD 980"}}
if CheckDiskDriveChanged(now, []DiskDrive{{Caption: "Samsung SSD 980"}}) {
t.Error("相同硬盘不应判定变更")
}
if !CheckDiskDriveChanged(now, []DiskDrive{{Caption: "Samsung SSD 990"}}) {
t.Error("硬盘变化应判定变更")
}
}
func TestCheckSoundDeviceChanged(t *testing.T) {
now := []SoundDevice{{Name: "Realtek"}}
if CheckSoundDeviceChanged(now, []SoundDevice{{Name: "Realtek"}}) {
t.Error("相同声卡不应判定变更")
}
if !CheckSoundDeviceChanged(now, []SoundDevice{{Name: "Creative"}}) {
t.Error("声卡变化应判定变更")
}
}
func TestCheckNetworkAdapterChanged(t *testing.T) {
now := []NetworkAdapter{{Name: "Intel I219"}}
if CheckNetworkAdapterChanged(now, []NetworkAdapter{{Name: "Intel I219"}}) {
t.Error("相同网卡不应判定变更")
}
if !CheckNetworkAdapterChanged(now, []NetworkAdapter{{Name: "Realtek 8168"}}) {
t.Error("网卡变化应判定变更")
}
}