public void Read_NullParameters_ReturnsDuneLocationOutputWithNaN()
        {
            // Setup
            var convergence = new Random(36).NextEnumValue <CalculationConvergence>();
            var entity      = new DuneLocationCalculationOutputEntity
            {
                WaterLevel             = null,
                WaveHeight             = null,
                WavePeriod             = null,
                TargetProbability      = null,
                TargetReliability      = null,
                CalculatedProbability  = null,
                CalculatedReliability  = null,
                CalculationConvergence = Convert.ToByte(convergence)
            };

            // Call
            DuneLocationCalculationOutput output = entity.Read();

            // Assert
            Assert.IsNaN(output.WaterLevel);
            Assert.IsNaN(output.WaveHeight);
            Assert.IsNaN(output.WavePeriod);
            Assert.IsNaN(output.TargetProbability);
            Assert.IsNaN(output.TargetReliability);
            Assert.IsNaN(output.CalculatedProbability);
            Assert.IsNaN(output.CalculatedReliability);
            Assert.AreEqual(convergence, output.CalculationConvergence);
        }
示例#2
0
        public void Create_WithNaNParameters_ReturnsDuneLocationCalculationOutputEntityWithNullValues()
        {
            // Setup
            var random = new Random(21);
            var output = new DuneLocationCalculationOutput(random.NextEnumValue <CalculationConvergence>(), new DuneLocationCalculationOutput.ConstructionProperties
            {
                WaterLevel            = double.NaN,
                WaveHeight            = double.NaN,
                WavePeriod            = double.NaN,
                TargetProbability     = double.NaN,
                TargetReliability     = double.NaN,
                CalculatedProbability = double.NaN,
                CalculatedReliability = double.NaN
            });

            // Call
            DuneLocationCalculationOutputEntity entity = output.Create();

            // Assert
            Assert.IsNotNull(entity);
            Assert.IsNull(entity.WaterLevel);
            Assert.IsNull(entity.WaveHeight);
            Assert.IsNull(entity.WavePeriod);
            Assert.IsNull(entity.TargetProbability);
            Assert.IsNull(entity.TargetReliability);
            Assert.IsNull(entity.CalculatedProbability);
            Assert.IsNull(entity.CalculatedReliability);
            Assert.AreEqual(Convert.ToByte(output.CalculationConvergence), entity.CalculationConvergence);
        }
示例#3
0
        public void Create_WithValidParameters_ReturnsDuneLocationCalculationOutputEntity()
        {
            // Setup
            var random = new Random(21);
            var output = new DuneLocationCalculationOutput(random.NextEnumValue <CalculationConvergence>(), new DuneLocationCalculationOutput.ConstructionProperties
            {
                WaterLevel            = random.NextDouble(),
                WaveHeight            = random.NextDouble(),
                WavePeriod            = random.NextDouble(),
                TargetProbability     = random.NextDouble(),
                TargetReliability     = random.NextDouble(),
                CalculatedProbability = random.NextDouble(),
                CalculatedReliability = random.NextDouble()
            });

            // Call
            DuneLocationCalculationOutputEntity entity = output.Create();

            // Assert
            Assert.IsNotNull(entity);
            Assert.AreEqual(output.WaterLevel, entity.WaterLevel, output.WaterLevel.GetAccuracy());
            Assert.AreEqual(output.WaveHeight, entity.WaveHeight, output.WaveHeight.GetAccuracy());
            Assert.AreEqual(output.WavePeriod, entity.WavePeriod, output.WavePeriod.GetAccuracy());
            Assert.AreEqual(output.TargetProbability, entity.TargetProbability);
            Assert.AreEqual(output.TargetReliability, entity.TargetReliability, output.TargetReliability.GetAccuracy());
            Assert.AreEqual(output.CalculatedProbability, entity.CalculatedProbability);
            Assert.AreEqual(output.CalculatedReliability, entity.CalculatedReliability, output.CalculatedReliability.GetAccuracy());
            Assert.AreEqual(Convert.ToByte(output.CalculationConvergence), entity.CalculationConvergence);
        }
示例#4
0
        /// <summary>
        /// Read the <see cref="DuneLocationCalculationOutputEntity"/> and use the information to construct a <see cref="DuneLocationCalculationOutput"/>.
        /// </summary>
        /// <param name="entity">The <see cref="DuneLocationCalculationOutputEntity"/> to create <see cref="DuneLocationCalculationOutput"/> for.</param>
        /// <returns>A new <see cref="DuneLocationCalculationOutput"/>.</returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="entity"/> is <c>null</c>.</exception>
        internal static DuneLocationCalculationOutput Read(this DuneLocationCalculationOutputEntity entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            return(new DuneLocationCalculationOutput((CalculationConvergence)entity.CalculationConvergence, new DuneLocationCalculationOutput.ConstructionProperties
            {
                WaterLevel = entity.WaterLevel.ToNullAsNaN(),
                WaveHeight = entity.WaveHeight.ToNullAsNaN(),
                WavePeriod = entity.WavePeriod.ToNullAsNaN(),
                TargetProbability = entity.TargetProbability.ToNullAsNaN(),
                TargetReliability = entity.TargetReliability.ToNullAsNaN(),
                CalculatedProbability = entity.CalculatedProbability.ToNullAsNaN(),
                CalculatedReliability = entity.CalculatedReliability.ToNullAsNaN()
            }));
        }
        /// <summary>
        /// Reads the <see cref="DuneLocationCalculationEntity"/> and uses the information to update a
        /// <see cref="DuneLocationCalculation"/>.
        /// </summary>
        /// <param name="entity">The <see cref="DuneLocationCalculationEntity"/> to update the
        /// <see cref="DuneLocationCalculation"/>.</param>
        /// <param name="calculation">The target of the read operation.</param>
        /// <exception cref="ArgumentNullException">Thrown when any parameter is <c>null</c>.</exception>
        internal static void Read(this DuneLocationCalculationEntity entity, DuneLocationCalculation calculation)
        {
            if (entity == null)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            if (calculation == null)
            {
                throw new ArgumentNullException(nameof(calculation));
            }

            DuneLocationCalculationOutputEntity duneLocationCalculationOutputEntity = entity.DuneLocationCalculationOutputEntities.SingleOrDefault();

            if (duneLocationCalculationOutputEntity != null)
            {
                calculation.Output = duneLocationCalculationOutputEntity.Read();
            }
        }
        public void Create_CalculationWithOutput_ReturnsDuneLocationCalculationEntityWithOutput()
        {
            // Setup
            var random = new Random(21);
            var output = new DuneLocationCalculationOutput(random.NextEnumValue <CalculationConvergence>(), new DuneLocationCalculationOutput.ConstructionProperties
            {
                WaterLevel            = random.NextDouble(),
                WaveHeight            = random.NextDouble(),
                WavePeriod            = random.NextDouble(),
                CalculatedProbability = random.NextDouble(),
                CalculatedReliability = random.NextDouble(),
                TargetProbability     = random.NextDouble(),
                TargetReliability     = random.NextDouble()
            });

            var duneLocation = new TestDuneLocation();
            var calculation  = new DuneLocationCalculation(duneLocation)
            {
                Output = output
            };

            var registry           = new PersistenceRegistry();
            var duneLocationEntity = new DuneLocationEntity();

            registry.Register(duneLocationEntity, duneLocation);

            // Call
            DuneLocationCalculationEntity entity = calculation.Create(registry);

            // Assert
            Assert.IsNotNull(entity);

            DuneLocationCalculationOutputEntity outputEntity = entity.DuneLocationCalculationOutputEntities.Single();

            Assert.AreEqual(output.WaterLevel, outputEntity.WaterLevel, output.WaterLevel.GetAccuracy());
            Assert.AreEqual(output.WaveHeight, outputEntity.WaveHeight, output.WaveHeight.GetAccuracy());
            Assert.AreEqual(output.WavePeriod, outputEntity.WavePeriod, output.WavePeriod.GetAccuracy());
            Assert.AreEqual(output.TargetProbability, outputEntity.TargetProbability);
            Assert.AreEqual(output.TargetReliability, outputEntity.TargetReliability, output.TargetReliability.GetAccuracy());
            Assert.AreEqual(output.CalculatedProbability, outputEntity.CalculatedProbability);
            Assert.AreEqual(output.CalculatedReliability, outputEntity.CalculatedReliability, output.CalculatedReliability.GetAccuracy());
            Assert.AreEqual(Convert.ToByte(output.CalculationConvergence), outputEntity.CalculationConvergence);
        }
        public void Read_ValidParameters_ReturnsDuneLocationOutput()
        {
            // Setup
            var    random                = new Random(22);
            double waterLevel            = random.NextDouble();
            double waveHeight            = random.NextDouble();
            double wavePeriod            = random.NextDouble();
            double targetProbability     = random.NextDouble();
            double targetReliability     = random.NextDouble();
            double calculatedProbability = random.NextDouble();
            double calculatedReliability = random.NextDouble();
            var    convergence           = random.NextEnumValue <CalculationConvergence>();
            var    entity                = new DuneLocationCalculationOutputEntity
            {
                WaterLevel             = waterLevel,
                WaveHeight             = waveHeight,
                WavePeriod             = wavePeriod,
                TargetProbability      = targetProbability,
                TargetReliability      = targetReliability,
                CalculatedProbability  = calculatedProbability,
                CalculatedReliability  = calculatedReliability,
                CalculationConvergence = Convert.ToByte(convergence)
            };

            // Call
            DuneLocationCalculationOutput output = entity.Read();

            // Assert
            Assert.AreEqual(waterLevel, output.WaterLevel, output.WaterLevel.GetAccuracy());
            Assert.AreEqual(waveHeight, output.WaveHeight, output.WaveHeight.GetAccuracy());
            Assert.AreEqual(wavePeriod, output.WavePeriod, output.WavePeriod.GetAccuracy());
            Assert.AreEqual(targetProbability, output.TargetProbability);
            Assert.AreEqual(targetReliability, output.TargetReliability, output.TargetReliability.GetAccuracy());
            Assert.AreEqual(calculatedProbability, output.CalculatedProbability);
            Assert.AreEqual(calculatedReliability, output.CalculatedReliability, output.CalculatedReliability.GetAccuracy());
            Assert.AreEqual(convergence, output.CalculationConvergence);
        }