예제 #1
0
        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);
            }
        }
예제 #2
0
        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));
        }