// Copyright (C) Stichting Deltares 2019. All rights reserved. // // This file is part of the Dam Engine. // // The Dam Engine is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System.Collections.Generic; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.General.Sensors; using NUnit.Framework; namespace Deltares.DamEngine.Calculators.Tests.Sensors { [TestFixture] public class SensorLocationTest { readonly Location location = new Location(); #region Setup [TestFixtureSetUp] public void FixtureSetup() { } [TestFixtureTearDown] public void FixtureTearDown() { } [SetUp] public void TestSetup() { } [TearDown] public void TestTearDown() { } #endregion #region Sensor Or Location Data Value Tests [Test] public void GetValue_Pl1PlLineOffsetBelowDikeToeAtPolderAndDataSourceTypeIgnore_ShouldReturnNull() { // setup var sensor = new Sensor(); const double sensorValue = 1.1; var sensorValues = new Dictionary { {sensor, sensorValue}}; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.Ignore; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder, sensorValues, sensor); // assert Assert.IsNull(actualValue); } [Test] public void GetValue_Pl1PlLineOffsetBelowDikeToeAtPolderAndDataSourceTypeLocationData_ShouldReturnValue() { // setup var sensor = new Sensor(); const double testValue = 1.1; var sensorValues = new Dictionary { { sensor, testValue } }; var sensorLocation = CreateValidSensorLocation(); location.PlLineOffsetBelowDikeToeAtPolder = testValue; sensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.LocationData; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder, sensorValues, sensor); // assert Assert.AreEqual(testValue, actualValue); } [Test] public void GetValue_Pl1PlLineOffsetBelowDikeToeAtPolderAndDataSourceTypeSensor_ShouldReturnNull() { // setup var sensor = new Sensor(); const double sensorValue = 1.1; var sensorValues = new Dictionary { { sensor, sensorValue } }; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.Sensor; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder, sensorValues, sensor); // assert Assert.IsNull(actualValue); } [Test] public void GetValue_Pl1PLLineOffsetBelowDikeTopAtPolderAndDataSourceTypeIgnore_ShouldReturnNull() { // setup var sensor = new Sensor(); const double sensorValue = 1.1; var sensorValues = new Dictionary { { sensor, sensorValue } }; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = DataSourceTypeSensors.Ignore; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder, sensorValues, sensor); // assert Assert.IsNull(actualValue); } [Test] public void GetValue_Pl1PLLineOffsetBelowDikeTopAtPolderAndDataSourceTypeLocationData_ShouldReturnValue() { // setup var sensor = new Sensor(); const double testValue = 1.1; var sensorValues = new Dictionary { { sensor, testValue } }; var sensorLocation = CreateValidSensorLocation(); location.PlLineOffsetBelowDikeTopAtPolder = testValue; sensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = DataSourceTypeSensors.LocationData; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder, sensorValues, sensor); // assert Assert.AreEqual(testValue, actualValue); } [Test] public void GetValue_Pl1PLLineOffsetBelowDikeTopAtPolderAndDataSourceTypeSensor_ShouldReturnNull() { // setup var sensor = new Sensor(); const double sensorValue = 1.1; var sensorValues = new Dictionary { { sensor, sensorValue } }; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = DataSourceTypeSensors.Sensor; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder, sensorValues, sensor); // assert Assert.IsNull(actualValue); } [Test] public void GetValue_Pl1PlLineOffsetBelowDikeTopAtRiverAndDataSourceTypeIgnore_ShouldReturnNull() { // setup var sensor = new Sensor(); const double sensorValue = 1.1; var sensorValues = new Dictionary { { sensor, sensorValue } }; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver = DataSourceTypeSensors.Ignore; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver, sensorValues, sensor); // assert Assert.IsNull(actualValue); } [Test] public void GetValue_Pl1PlLineOffsetBelowDikeTopAtRiverAndDataSourceTypeLocationData_ShouldReturnValue() { // setup var sensor = new Sensor(); const double testValue = 1.1; var sensorValues = new Dictionary { { sensor, testValue } }; var sensorLocation = CreateValidSensorLocation(); location.PlLineOffsetBelowDikeTopAtRiver = testValue; sensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver = DataSourceTypeSensors.LocationData; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver, sensorValues, sensor); // assert Assert.AreEqual(testValue, actualValue); } [Test] public void GetValue_Pl1PlLineOffsetBelowDikeTopAtRiverAndDataSourceTypeSensor_ShouldReturnNull() { // setup var sensor = new Sensor(); const double sensorValue = 1.1; var sensorValues = new Dictionary { { sensor, sensorValue } }; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver = DataSourceTypeSensors.Sensor; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver, sensorValues, sensor); // assert Assert.IsNull(actualValue); } [Test] public void GetValue_Pl1PLLineOffsetBelowShoulderBaseInsideAndDataSourceTypeIgnore_ShouldReturnNull() { // setup var sensor = new Sensor(); const double sensorValue = 1.1; var sensorValues = new Dictionary { { sensor, sensorValue } }; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl1PlLineOffsetBelowShoulderBaseInside = DataSourceTypeSensors.Ignore; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1PlLineOffsetBelowShoulderBaseInside, sensorValues, sensor); // assert Assert.IsNull(actualValue); } [Test] public void GetValue_Pl1PLLineOffsetBelowShoulderBaseInsideAndDataSourceTypeLocationData_ShouldReturnValue() { // setup var sensor = new Sensor(); const double testValue = 1.1; var sensorValues = new Dictionary { { sensor, testValue } }; var sensorLocation = CreateValidSensorLocation(); location.PlLineOffsetBelowShoulderBaseInside = testValue; sensorLocation.SourceTypePl1PlLineOffsetBelowShoulderBaseInside = DataSourceTypeSensors.LocationData; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1PlLineOffsetBelowShoulderBaseInside, sensorValues, sensor); // assert Assert.AreEqual(testValue, actualValue); } [Test] public void GetValue_Pl1PLLineOffsetBelowShoulderBaseInsideAndDataSourceTypeSensor_ShouldReturnNull() { // setup var sensor = new Sensor(); const double sensorValue = 1.1; var sensorValues = new Dictionary { { sensor, sensorValue } }; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl1PlLineOffsetBelowShoulderBaseInside = DataSourceTypeSensors.Sensor; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1PlLineOffsetBelowShoulderBaseInside, sensorValues, sensor); // assert Assert.IsNull(actualValue); } [Test] public void GetValue_WaterLevelAtPolderAndDataSourceTypeIgnore_ShouldReturnNull() { // setup var sensor = new Sensor(); const double sensorValue = 1.1; var sensorValues = new Dictionary { { sensor, sensorValue } }; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl1WaterLevelAtPolder = DataSourceTypeSensors.Ignore; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1WaterLevelAtPolder, sensorValues, sensor); // assert Assert.IsNull(actualValue); } [Test] public void GetValue_WaterLevelAtPolderAndDataSourceTypeLocationData_ShouldReturnValue() { // setup var sensor = new Sensor(); const double testValue = 1.1; var sensorValues = new Dictionary { { sensor, testValue } }; var sensorLocation = CreateValidSensorLocation(); location.PolderLevel = testValue; sensorLocation.SourceTypePl1WaterLevelAtPolder = DataSourceTypeSensors.LocationData; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1WaterLevelAtPolder, sensorValues, sensor); // assert Assert.AreEqual(testValue, actualValue); } [Test] public void GetValue_WaterLevelAtPolderAndDataSourceTypeSensor_ShouldReturnValue() { // setup var sensor = new Sensor(); const double expectedValue = 1.1; var sensorValues = new Dictionary { { sensor, expectedValue } }; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl1WaterLevelAtPolder = DataSourceTypeSensors.Sensor; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1WaterLevelAtPolder, sensorValues, sensor); // assert Assert.AreEqual(expectedValue, actualValue); } [Test] public void GetValue_WaterLevelAtRiverAndDataSourceTypeIgnore_ShouldReturnNull() { // setup var sensor = new Sensor(); const double sensorValue = 1.1; var sensorValues = new Dictionary { { sensor, sensorValue } }; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl1WaterLevelAtRiver = DataSourceTypeSensors.Ignore; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1WaterLevelAtRiver, sensorValues, sensor); // assert Assert.IsNull(actualValue); } [Test] public void GetValue_WaterLevelAtRiverAndDataSourceTypeLocationData_ShouldReturnValue() { // setup var sensor = new Sensor(); const double testValue = 1.1; var sensorValues = new Dictionary { { sensor, testValue } }; var sensorLocation = CreateValidSensorLocation(); location.RiverLevel = testValue; Assert.AreEqual(testValue, location.RiverLevel); sensorLocation.SourceTypePl1WaterLevelAtRiver = DataSourceTypeSensors.LocationData; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1WaterLevelAtRiver, sensorValues, sensor); // assert Assert.AreEqual(testValue, actualValue); } [Test] public void GetValue_WaterLevelAtRiverAndDataSourceTypeSensor_ShouldReturnValue() { // setup var sensor = new Sensor(); const double expectedValue = 1.1; var sensorValues = new Dictionary { { sensor, expectedValue } }; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl1WaterLevelAtRiver = DataSourceTypeSensors.Sensor; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl1WaterLevelAtRiver, sensorValues, sensor); // assert Assert.AreEqual(expectedValue, actualValue); } [Test] public void GetValue_Pl3AndDataSourceTypeIgnore_ShouldReturnNull() { // setup var sensor = new Sensor(); const double sensorValue = 1.1; var sensorValues = new Dictionary { { sensor, sensorValue } }; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl3 = DataSourceTypeSensors.Ignore; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl3, sensorValues, sensor); // assert Assert.IsNull(actualValue); } [Test] public void GetValue_Pl3AndDataSourceTypeLocationData_ShouldReturnValue() { // setup var sensor = new Sensor(); const double testValue = 1.1; var sensorValues = new Dictionary { { sensor, testValue } }; var sensorLocation = CreateValidSensorLocation(); location.HeadPl3 = testValue; sensorLocation.SourceTypePl3 = DataSourceTypeSensors.LocationData; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl3, sensorValues, sensor); // assert Assert.AreEqual(testValue, actualValue); } [Test] public void GetValue_Pl3AndDataSourceTypeSensor_ShouldReturnValue() { // setup var sensor = new Sensor(); const double expectedValue = 1.1; var sensorValues = new Dictionary { { sensor, expectedValue } }; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl3 = DataSourceTypeSensors.Sensor; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl3, sensorValues, sensor); // assert Assert.AreEqual(expectedValue, actualValue); } [Test] public void GetValue_Pl4AndDataSourceTypeIgnore_ShouldReturnNull() { // setup var sensor = new Sensor(); const double sensorValue = 1.1; var sensorValues = new Dictionary { { sensor, sensorValue } }; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl4 = DataSourceTypeSensors.Ignore; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl4, sensorValues, sensor); // assert Assert.IsNull(actualValue); } [Test] public void GetValue_Pl4AndDataSourceTypeLocationData_ShouldReturnValue() { // setup var sensor = new Sensor(); const double testValue = 1.1; var sensorValues = new Dictionary { { sensor, testValue } }; var sensorLocation = CreateValidSensorLocation(); location.HeadPl4 = testValue; sensorLocation.SourceTypePl4 = DataSourceTypeSensors.LocationData; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl4, sensorValues, sensor); // assert Assert.AreEqual(testValue, actualValue); } [Test] public void GetValue_Pl4AndDataSourceTypeSensor_ShouldReturnValue() { // setup var sensor = new Sensor(); const double expectedValue = 1.1; var sensorValues = new Dictionary { { sensor, expectedValue } }; var sensorLocation = CreateValidSensorLocation(); sensorLocation.SourceTypePl4 = DataSourceTypeSensors.Sensor; // call var actualValue = sensorLocation.GetValue(x => x.SourceTypePl4, sensorValues, sensor); // assert Assert.AreEqual(expectedValue, actualValue); } #endregion #region Helper methods /// /// Creates and initializes a valid sensor location for testing. /// /// private SensorLocation CreateValidSensorLocation() { var factory = new SensorFactory(); var sensorLocation = factory.CreateSensorLocation(location); return sensorLocation; } #endregion } }