public async Task GetRealtimeDataTests() { var devices = await _sut.DiscoverAsync().ToListAsync(); foreach (var(_, ip, _) in devices) { var(amps, watts, volts) = await _sut.GetRealtimeDataAsync(ip); Assert.InRange(amps, .0001, double.MaxValue); Assert.InRange(watts, .0001, double.MaxValue); Assert.InRange(volts, .0001, double.MaxValue); } }
private async Task <Models.RealtimeData> GetRealtimeDataAsync <T>(TryGetDelegate <T> tryGet, T value) { if (!tryGet(value, out var device)) { await foreach (var item in _client.DiscoverAsync()) { _cache.Add(item); } if (!tryGet(value, out device)) { throw new KeyNotFoundException(value + " not found"); } } return(await _client.GetRealtimeDataAsync(device.IPAddress)); }