public void Interpret(Data data, SQLiteConnection conn) { if (data.Type == ECollectorType.SMART) { ListData <HardDisk> disks = data as ListData <HardDisk>; if (disks == null) { return; } long device_id = GetDeviceID(data, conn); if (device_id >= 0) { List <string> drive_letter_list = HardDisk.FailingDrives(disks.Data); SmartStatus smart_status = new SmartStatus(); EStatusType status = smart_status.GetStatus(drive_letter_list); SetDeviceStatus(device_id, status, SmartStatus.Types, drive_letter_list.JoinStrings(", "), conn); } } }
void ProperlyShowFailedDrives() { HardDisk hd = new HardDisk() { DeviceID = "ABC123", FailureIsPredicted = true }; hd.DriveLetters.Add("E:"); hd.DriveLetters.Add("C:"); Assert.Equal("ABC123", hd.DeviceID); Assert.True(hd.FailureIsPredicted.Value); Assert.Equal(2, hd.DriveLetters.Count); Assert.Equal("C:, E:", hd.DriveLettersAsString); HardDisk hd2 = new HardDisk() { DeviceID = "XYZ789", FailureIsPredicted = false }; hd2.DriveLetters.Add("F:"); hd2.DriveLetters.Add("H:"); HardDisk hd3 = new HardDisk() { DeviceID = "EEE777", FailureIsPredicted = true }; hd3.DriveLetters.Add("J:"); hd3.DriveLetters.Add("I:"); List <HardDisk> drives = new List <HardDisk>(new HardDisk[] { hd, hd2, hd3 }); List <string> failing = HardDisk.FailingDrives(drives); string joined = failing.JoinStrings(", "); Assert.Equal("C:, E:, I:, J:", joined); }