public void Create_AllOutputValuesSet_ReturnEntity(StabilityStoneCoverWaveConditionsOutputType outputType)
        {
            // Setup
            var       output = new TestWaveConditionsOutput();
            const int order  = 22;

            // Call
            StabilityStoneCoverWaveConditionsOutputEntity entity = output.CreateStabilityStoneCoverWaveConditionsOutputEntity(outputType, order);

            // Assert
            Assert.AreEqual(order, entity.Order);
            Assert.AreEqual(output.WaterLevel, entity.WaterLevel, output.WaterLevel.GetAccuracy());
            Assert.AreEqual(output.WaveHeight, entity.WaveHeight, output.WaveHeight.GetAccuracy());
            Assert.AreEqual(output.WavePeakPeriod, entity.WavePeakPeriod, output.WavePeakPeriod.GetAccuracy());
            Assert.AreEqual(output.WaveAngle, entity.WaveAngle, output.WaveAngle.GetAccuracy());
            Assert.AreEqual(Convert.ToByte(outputType), entity.OutputType);
            Assert.AreEqual(output.WaveDirection, entity.WaveDirection, output.WaveDirection.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(output.CalculationConvergence, (CalculationConvergence)entity.CalculationConvergence);

            Assert.AreEqual(0, entity.StabilityStoneCoverWaveConditionsOutputEntityId);
            Assert.AreEqual(0, entity.StabilityStoneCoverWaveConditionsCalculationEntityId);
        }
        /// <summary>
        /// Creates a <see cref="StabilityStoneCoverWaveConditionsOutputEntity"/> based on the information
        /// of the <see cref="WaveConditionsOutput"/>.
        /// </summary>
        /// <param name="output">The calculation output for stability stone cover failure mechanism to
        /// create a database entity for.</param>
        /// <param name="type">The type of <see cref="StabilityStoneCoverWaveConditionsOutputType"/>.</param>
        /// <param name="order">The position of <paramref name="output"/> in the list of all outputs.</param>
        /// <returns>A new <see cref="StabilityStoneCoverWaveConditionsOutputEntity"/>.</returns>
        internal static StabilityStoneCoverWaveConditionsOutputEntity CreateStabilityStoneCoverWaveConditionsOutputEntity(
            this WaveConditionsOutput output, StabilityStoneCoverWaveConditionsOutputType type, int order)
        {
            var entity = new StabilityStoneCoverWaveConditionsOutputEntity
            {
                Order                  = order,
                WaterLevel             = output.WaterLevel.ToNaNAsNull(),
                WaveHeight             = output.WaveHeight.ToNaNAsNull(),
                WavePeakPeriod         = output.WavePeakPeriod.ToNaNAsNull(),
                WaveAngle              = output.WaveAngle.ToNaNAsNull(),
                OutputType             = Convert.ToByte(type),
                WaveDirection          = output.WaveDirection.ToNaNAsNull(),
                TargetProbability      = output.TargetProbability.ToNaNAsNull(),
                TargetReliability      = output.TargetReliability.ToNaNAsNull(),
                CalculatedProbability  = output.CalculatedProbability.ToNaNAsNull(),
                CalculatedReliability  = output.CalculatedReliability.ToNaNAsNull(),
                CalculationConvergence = Convert.ToByte(output.CalculationConvergence)
            };

            return(entity);
        }
        public void Create_AllOutputValuesNaN_ReturnEntityWithNullValues(StabilityStoneCoverWaveConditionsOutputType outputType)
        {
            // Setup
            var output = new WaveConditionsOutput(double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN,
                                                  double.NaN, double.NaN, double.NaN, CalculationConvergence.NotCalculated);

            // Call
            StabilityStoneCoverWaveConditionsOutputEntity entity = output.CreateStabilityStoneCoverWaveConditionsOutputEntity(outputType, 22);

            // Assert
            Assert.IsNull(entity.WaterLevel);
            Assert.IsNull(entity.WaveHeight);
            Assert.IsNull(entity.WavePeakPeriod);
            Assert.IsNull(entity.WaveAngle);
            Assert.AreEqual(Convert.ToByte(outputType), entity.OutputType);
            Assert.IsNull(entity.WaveDirection);
            Assert.IsNull(entity.TargetProbability);
            Assert.IsNull(entity.TargetReliability);
            Assert.IsNull(entity.CalculatedProbability);
            Assert.IsNull(entity.CalculatedReliability);

            Assert.AreEqual(0, entity.StabilityStoneCoverWaveConditionsOutputEntityId);
            Assert.AreEqual(0, entity.StabilityStoneCoverWaveConditionsCalculationEntityId);
        }