public void TryCreateShouldSucceedWithData() { string[] data = { "abc", "battery.charge: 100", "battery.charge.low: 20" }; UpsStatus upsStatus = UpsStatus.TryCreate(data, Logger.None); Assert.True(upsStatus.Succeeded); }
public UpsStatus ParseUpsStatusMessage(string[] lines) { var dict = new Dictionary <string, string>(); var splitLines = lines.Select(line => line.Split(new[] { ':' }, 2)); foreach (var line in splitLines) { if (line.Length == 2) { dict.Add(line[0].Trim(), line[1].Trim()); } } var statusStr = dict.GetStringOrEmpty("STATUS"); var status = Status.Unknown; if (!string.IsNullOrWhiteSpace(statusStr)) { // it is possible to have multiple values for status "ONLINE REPLACEBATT" Enum.TryParse(statusStr.Replace(' ', ','), true, out status); } var senseStr = dict.GetStringOrEmpty("SENSE"); var sense = Sense.Unknown; if (!string.IsNullOrWhiteSpace(senseStr)) { Enum.TryParse(senseStr, true, out sense); } var ret = new UpsStatus() { Apc = dict.GetStringOrEmpty("APC"), Date = dict.GetDateTime("DATE"), Hostname = dict.GetStringOrEmpty("HOSTNAME"), Version = dict.GetStringOrEmpty("VERSION"), UpsName = dict.GetStringOrEmpty("UPSNAME"), Cable = dict.GetStringOrEmpty("CABLE"), Driver = dict.GetStringOrEmpty("DRIVER"), Model = dict.GetStringOrEmpty("MODEL"), UpsMode = dict.GetStringOrEmpty("UPSMODE"), StartTime = dict.GetDateTime("STARTTIME"), Status = status, MasterUpd = dict.GetNullableDateTime("MASTERUPD"), EndApc = dict.GetDateTime("END APC"), LineV = dict.GetNullableDouble("LINEV"), LoadPct = dict.GetNullableDouble("LOADPCT"), BCharge = dict.GetNullableDouble("BCHARGE"), TimeLeft = dict.GetNullableDouble("TIMELEFT"), MBattChg = dict.GetNullableDouble("MBATTCHG"), MinTimeL = dict.GetNullableDouble("MINTIMEL"), MaxTime = dict.GetNullableInt("MAXTIME"), MaxLineV = dict.GetNullableDouble("MAXLINEV"), OutputV = dict.GetNullableDouble("OUTPUTV"), Sense = sense, LoTrans = dict.GetNullableDouble("LOTRANS"), HiTrans = dict.GetNullableDouble("HITRANS"), RetPct = dict.GetNullableDouble("RETPCT"), ITemp = dict.GetNullableDouble("ITEMP"), // AlarmDel = dict.GetNullableInt("ALARMDEL"), BattV = dict.GetNullableDouble("BATTV"), LineFreq = dict.GetNullableDouble("LINEFREQ"), LastXfer = dict.GetStringOrEmpty("LASTXFER"), NumXfers = dict.GetNullableInt("NUMXFERS"), TOnBatt = dict.GetNullableInt("TOnBatt"), CumOnBatt = dict.GetNullableInt("CUMONBATT"), XOffBatt = dict.GetNullableDateTime("XOFFBATT"), SelfTest = dict.GetNullableBool("SELFTEST"), StatFlag = dict.GetStringOrEmpty("STATFLAG"), SerialNo = dict.GetStringOrEmpty("SERIALNO"), BattDate = dict.GetNullableDateTime("BATTDATE"), NomInV = dict.GetNullableDouble("NOMINV"), NomBattV = dict.GetNullableDouble("NOMBATTV"), Firmware = dict.GetStringOrEmpty("FIRMWARE") }; return(ret); }
public async Task <ActionResult <UpsStatus> > Status([FromServices] UpsStatusService statusService) { UpsStatus upsStatus = await statusService.GetStatusAsync(); return(upsStatus); }