public void TemperatureThresholdEventHandlerFiresTest()
        {
            // Arrange
            Thermometer thermometer = new Thermometer();
            List <TemperatureThreshold> temperatureThresholdList = TestUtils.CreateTemperatureThresholds(TemperatureDirection.Decreasing);

            thermometer.SetTemperatureThresholds(temperatureThresholdList);
            thermometer.TemperatureThresholdReached += HandleTemperatureThresholdReached;
            thermometer.Temperature  = new Temperature(2);
            _eventHandlerCalledCount = 0;

            // Act
            thermometer.Temperature = new Temperature(0);

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            const string expectedThresholdName = "Freezing";

            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);

            Assert.Equal(_eventHandlerCalledCount, 1);
            Assert.Equal(expectedThresholdName, _name);

            // todo Need value comparison not reference compariosn (or override equality)
            Assert.Equal(new Temperature(0), _temperature);
            Assert.Equal(new Temperature(.5), _tolerance);
            Assert.Equal(TemperatureDirection.Decreasing, _direction);
        }
Exemplo n.º 2
0
        public void RemainsAtDecreasingThresholdWithDecreasingTemperatureTest()
        {
            // Arrange
            Thermometer thermometer = new Thermometer();
            List <TemperatureThreshold> temperatureThresholdList = TestUtils.CreateTemperatureThresholds(TemperatureDirection.Decreasing);

            thermometer.SetTemperatureThresholds(temperatureThresholdList);
            thermometer.Temperature = new Temperature(2);

            // Act
            thermometer.Temperature = new Temperature(0);                       // decreasing temperature

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);

            // Act
            thermometer.Temperature = new Temperature(-.1);                     // decreasing temperature

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);

            // Act
            thermometer.Temperature = new Temperature(-.2);                     // decreasing temperature

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
        }
        [InlineData("Freezing", TemperatureDirection.Decreasing, 2, 0, true)]               //  decreasing threshold, decreasing temperature
        public void HitsTemperatureThresholdTest(string thresholdName, TemperatureDirection temperatureDirection, double previousTemperature, double thresholdTemperature, bool hitsTemperatureThreshold)
        {
            // Arrange
            List <TemperatureThreshold> temperatureThresholdList = new List <TemperatureThreshold>
            {
                new TemperatureThreshold
                {
                    Name        = thresholdName,
                    Temperature = new Temperature(thresholdTemperature),
                    Tolerance   = new Temperature(0.5),
                    Direction   = temperatureDirection
                }
            };

            Thermometer thermometer = new Thermometer();

            thermometer.SetTemperatureThresholds(temperatureThresholdList);
            thermometer.Temperature = new Temperature(previousTemperature);

            // Act
            thermometer.Temperature = new Temperature(thresholdTemperature);

            // Assert
            Assert.Equal(hitsTemperatureThreshold, thermometer.IsAtTemperatureThreshold);
            if (thermometer.IsAtTemperatureThreshold)
            {
                string expectedThresholdName = thresholdName;
                Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);
            }
        }
Exemplo n.º 4
0
        public void HitAllTemperatureThresholdsDecreasingTest()
        {
            // Arrange
            Thermometer thermometer = new Thermometer();
            List <TemperatureThreshold> temperatureThresholdList = TestUtils.CreateTemperatureThresholds(TemperatureDirection.Decreasing);

            thermometer.SetTemperatureThresholds(temperatureThresholdList);
            thermometer.Temperature = new Temperature(110);

            // Act
            thermometer.Temperature = new Temperature(100);             // decreasing temperature

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            string expectedThresholdName = "Boiling";

            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);

            // Act
            thermometer.Temperature = new Temperature(20);             // decreasing temperature

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            expectedThresholdName = "Room Temperature";
            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);

            // Act
            thermometer.Temperature = new Temperature(0);             // decreasing temperature

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            expectedThresholdName = "Freezing";
            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);
        }
        public void HitsFreezingThresholdWhenTemperatureIsDeceasingTest()
        {
            // Arrange
            Thermometer thermometer = new Thermometer();
            List <TemperatureThreshold> temperatureThresholdList = TestUtils.CreateTemperatureThresholds(TemperatureDirection.Decreasing);

            thermometer.SetTemperatureThresholds(temperatureThresholdList);
            thermometer.Temperature = new Temperature(2);
            const string expectedThresholdName = "Freezing";

            // Act
            thermometer.Temperature = new Temperature(.5);

            // Assert
            Assert.False(thermometer.IsAtTemperatureThreshold);

            // Act
            thermometer.Temperature = new Temperature(.4);

            // Assert
            Assert.False(thermometer.IsAtTemperatureThreshold);

            // Act
            thermometer.Temperature = new Temperature(0);

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);

            // Act
            thermometer.Temperature = new Temperature(-.4);

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);

            // Act
            thermometer.Temperature = new Temperature(+.4);

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);

            // Act
            thermometer.Temperature = new Temperature(-.5);

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);

            // Act
            thermometer.Temperature = new Temperature(+.5);

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);
        }
Exemplo n.º 6
0
        public void TemperatureFlucturationWithIncreasingAndDecreasingTemperaturesTest()
        {
            // Arrange
            List <TemperatureThreshold> temperatureThresholdList = TestUtils.CreateTemperatureThresholds(TemperatureDirection.Decreasing);
            Thermometer thermometer = new Thermometer();

            thermometer.SetTemperatureThresholds(temperatureThresholdList);
            thermometer.Temperature = new Temperature(2.0);
            const string expectedThresholdName = "Freezing";

            // Act
            thermometer.Temperature = new Temperature(0.0);                             // decreasing temperature

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);

            // Act
            thermometer.Temperature = new Temperature(-0.1);                            // decreasing temperature

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);

            // Act
            thermometer.Temperature = new Temperature(0.0);                             // increasing temperature

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);

            // Act
            thermometer.Temperature = new Temperature(-0.1);                            // decreasing temperature

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);

            // Act
            thermometer.Temperature = new Temperature(0.2);                             // increasing temperature

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);
        }
Exemplo n.º 7
0
        public void HitsRoomTemperatureThresholdWhenTemperatureIsDeceasingTest()
        {
            // Arrange
            Thermometer thermometer = new Thermometer();
            List <TemperatureThreshold> temperatureThresholdList = TestUtils.CreateTemperatureThresholds(TemperatureDirection.Decreasing);

            thermometer.SetTemperatureThresholds(temperatureThresholdList);
            thermometer.Temperature = new Temperature(22);

            // Act
            thermometer.Temperature = new Temperature(20);                      // decreasing temperature

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            const string expectedThresholdName = "Room Temperature";

            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);
        }
        public void ConvertFahrenheitTemperatureTest()
        {
            // Arrange
            List <TemperatureThreshold> temperatureThresholdList = TestUtils.CreateTemperatureThresholds(TemperatureDirection.Decreasing);
            Thermometer thermometer = new Thermometer();

            thermometer.SetTemperatureThresholds(temperatureThresholdList);
            thermometer.Temperature = new Temperature(40, TemperatureType.Fahrenheit);

            // Act
            thermometer.Temperature = new Temperature(32, TemperatureType.Fahrenheit);

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);
            const string expectedThresholdName = "Freezing";

            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);
        }
Exemplo n.º 9
0
        public void RunThermometerMonitor()
        {
            Thermometer thermometer = new Thermometer();
            List <TemperatureThreshold> temperatureThresholdList = CreateTemperatureThresholds();

            thermometer.SetTemperatureThresholds(temperatureThresholdList);
            thermometer.TemperatureThresholdReached += HandleThermometerThresholdReached;

            WriteLine("\nWelcome to the temperature monitor.");
            WriteLine(thermometer.ToString());
            WriteLine("Temperature values are followed by C or F.");
            WriteLine("Examples: 100C, 100 C, 100c, 20.0C, 32.0F, 32 F, 0.0C, -0.1C, +0.1C");
            WriteLine("Enter blank line to exit.\n");

            while (true)
            {
                Write("Enter temperature >");
                string input = ReadLine();

                if (string.IsNullOrWhiteSpace(input))
                {
                    break;
                }

                Temperature temperature;
                bool        parsedTemperature = ReadTemperature(input, out temperature);

                if (parsedTemperature)
                {
                    WriteLine($"Temperature = {temperature}");
                    thermometer.Temperature = temperature;
                }
                else
                {
                    WriteLine("Could not parse input. Try again.");
                }
            }
        }
        public void TemperatureThresholdEventHandlerFiresOnceAtThresholdTest()
        {
            // Arrange
            Thermometer thermometer = new Thermometer();
            List <TemperatureThreshold> temperatureThresholdList = TestUtils.CreateTemperatureThresholds(TemperatureDirection.Decreasing);

            thermometer.SetTemperatureThresholds(temperatureThresholdList);
            thermometer.TemperatureThresholdReached += HandleTemperatureThresholdReached;
            thermometer.Temperature  = new Temperature(2);
            _eventHandlerCalledCount = 0;

            // Act
            thermometer.Temperature = new Temperature(0);

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);

            // Act
            thermometer.Temperature = new Temperature(-0.1);

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);

            // Act
            thermometer.Temperature = new Temperature(-0.2);

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);

            // Act
            thermometer.Temperature = new Temperature(-0.3);

            // Assert
            Assert.True(thermometer.IsAtTemperatureThreshold);

            Assert.Equal(1, _eventHandlerCalledCount);
        }
        public void PassedThroughThresholdWithDreasingTemperatureTest()
        {
            // Arrange
            Thermometer thermometer = new Thermometer();
            List <TemperatureThreshold> temperatureThresholdList = TestUtils.CreateTemperatureThresholds(TemperatureDirection.Decreasing);

            thermometer.SetTemperatureThresholds(temperatureThresholdList);
            thermometer.Temperature = new Temperature(12);

            // Act
            thermometer.Temperature = new Temperature(+10);

            // Assert
            Assert.False(thermometer.IsAtTemperatureThreshold);

            // Act
            thermometer.Temperature = new Temperature(-10);

            // Assert
            const string expectedThresholdName = "Boiling";

            Assert.True(thermometer.IsAtTemperatureThreshold);
            Assert.Equal(expectedThresholdName, thermometer.CurrentTemperatureThreshold.Name);
        }