public async Task SensorWithValidConnectionShouldReturnValidReading()
        {
            var networkConnectionMock = new Mock <ISensorConnection>();

            networkConnectionMock.Setup(connection => connection.ReadAsync())
            .ReturnsAsync(ConnectionResponse.Valid("Message!"));
            var sensor = new ConnectionSensor(networkConnectionMock.Object);

            var reading = await sensor.ReadAsync();

            Assert.True(reading.IsValid);
        }
        public async Task SensorWithInvalidConnectionShouldReturnInvalidReading()
        {
            var networkConnectionMock = new Mock <ISensorConnection>();

            networkConnectionMock.Setup(connection => connection.ReadAsync())
            .ReturnsAsync(ConnectionResponse.Error(
                              new ResponseError(SensorConnectionConstants.CONNECTION_FAILED_READING)));
            var sensor = new ConnectionSensor(networkConnectionMock.Object);

            var reading = await sensor.ReadAsync();

            Assert.False(reading.IsValid);
        }
        static void Main(string[] args)
        {
            var timer      = new Timer();
            var connection = new NetworkStatusConnection(
                new HttpNetworkClient(new HttpClient()), new Uri("https://www.google.com"));
            var sensor       = new ConnectionSensor(connection);
            var timerFactory = new TimerFactory();
            var repository   = new ReadingsRepository();
            var scheduler    = new ReadScheduler(timerFactory, repository);

            var scheduledReadings = scheduler.ScheduleReadings(sensor, 15);

            System.Console.ReadKey();
        }