示例#1
0
        public void Create_WithValidCollection_ReturnsEntityWithExpectedResults()
        {
            // Setup
            var random = new Random(21);
            int order  = random.Next();

            var duneLocation = new TestDuneLocation();
            var calculation  = new DuneLocationCalculation(duneLocation);

            var calculations = new DuneLocationCalculationsForTargetProbability(random.NextDouble(0, 0.1))
            {
                DuneLocationCalculations =
                {
                    calculation
                }
            };

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

            registry.Register(duneLocationEntity, duneLocation);

            // Call
            DuneLocationCalculationForTargetProbabilityCollectionEntity entity = calculations.Create(order, registry);

            // Assert
            Assert.IsNotNull(entity);
            Assert.AreEqual(order, entity.Order);
            Assert.AreEqual(calculations.TargetProbability, entity.TargetProbability);

            DuneLocationCalculationEntity duneLocationCalculationEntity = entity.DuneLocationCalculationEntities.Single();

            Assert.AreSame(duneLocationEntity, duneLocationCalculationEntity.DuneLocationEntity);
            CollectionAssert.IsEmpty(duneLocationCalculationEntity.DuneLocationCalculationOutputEntities);
        }
示例#2
0
        private static DuneLocationCalculation CreateDuneLocationCalculation(DuneLocationCalculationEntity calculationEntity,
                                                                             ReadConversionCollector collector)
        {
            var calculation = new DuneLocationCalculation(collector.Get(calculationEntity.DuneLocationEntity));

            calculationEntity.Read(calculation);
            return(calculation);
        }
示例#3
0
 private static void CreateDuneLocationOutput(DuneLocationCalculationEntity calculationEntity,
                                              DuneLocationCalculationOutput output)
 {
     if (output != null)
     {
         calculationEntity.DuneLocationCalculationOutputEntities.Add(output.Create());
     }
 }
示例#4
0
        public void Read_EntityWithValidValues_SetsCalculationsWithExpectedValues()
        {
            // Setup
            var random = new Random(21);

            var duneLocationEntityOne          = new DuneLocationEntity();
            var calculationEntityWithoutOutput = new DuneLocationCalculationEntity
            {
                DuneLocationEntity = duneLocationEntityOne
            };

            var duneLocationEntityTwo       = new DuneLocationEntity();
            var calculationEntityWithOutput = new DuneLocationCalculationEntity
            {
                DuneLocationEntity = duneLocationEntityTwo,
                DuneLocationCalculationOutputEntities =
                {
                    new DuneLocationCalculationOutputEntity()
                }
            };

            var collectionEntity = new DuneLocationCalculationForTargetProbabilityCollectionEntity
            {
                TargetProbability = random.NextDouble(0, 0.1),
                DuneLocationCalculationEntities =
                {
                    calculationEntityWithoutOutput,
                    calculationEntityWithOutput
                }
            };

            var duneLocationOne = new TestDuneLocation("1");
            var duneLocationTwo = new TestDuneLocation("2");
            var collector       = new ReadConversionCollector();

            collector.Read(duneLocationEntityOne, duneLocationOne);
            collector.Read(duneLocationEntityTwo, duneLocationTwo);

            // Call
            DuneLocationCalculationsForTargetProbability calculations = collectionEntity.Read(collector);

            // Assert
            Assert.AreEqual(collectionEntity.TargetProbability, calculations.TargetProbability);

            IEnumerable <DuneLocationCalculation> duneLocationCalculations = calculations.DuneLocationCalculations;

            Assert.AreEqual(collectionEntity.DuneLocationCalculationEntities.Count, duneLocationCalculations.Count());

            DuneLocationCalculation calculationOne = duneLocationCalculations.ElementAt(0);

            Assert.AreSame(collector.Get(duneLocationEntityOne), calculationOne.DuneLocation);
            Assert.IsNull(calculationOne.Output);

            DuneLocationCalculation calculationTwo = duneLocationCalculations.ElementAt(1);

            Assert.AreSame(collector.Get(duneLocationEntityTwo), calculationTwo.DuneLocation);
            Assert.IsNotNull(calculationTwo.Output);
        }
        public void Read_CalculationEntityWithOutput_SetsDuneLocationCalculationWithoutOutput()
        {
            // Setup
            var calculation = new DuneLocationCalculation(new TestDuneLocation());

            var entity = new DuneLocationCalculationEntity();

            // Call
            entity.Read(calculation);

            // Assert
            Assert.IsNull(calculation.Output);
        }
        public void Read_CalculationNull_ThrowsArgumentNullException()
        {
            // Setup
            var entity = new DuneLocationCalculationEntity();

            // Call
            TestDelegate call = () => entity.Read(null);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(call);

            Assert.AreEqual("calculation", exception.ParamName);
        }
        public void Read_CalculationEntityWithOutput_SetsDuneLocationCalculationWithOutput()
        {
            // Setup
            var calculation = new DuneLocationCalculation(new TestDuneLocation());

            var    random                = new Random(21);
            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 DuneLocationCalculationEntity
            {
                DuneLocationCalculationOutputEntities =
                {
                    new DuneLocationCalculationOutputEntity
                    {
                        WaterLevel             = waterLevel,
                        WaveHeight             = waveHeight,
                        WavePeriod             = wavePeriod,
                        TargetProbability      = targetProbability,
                        TargetReliability      = targetReliability,
                        CalculatedProbability  = calculatedProbability,
                        CalculatedReliability  = calculatedReliability,
                        CalculationConvergence = Convert.ToByte(convergence)
                    }
                }
            };

            // Call
            entity.Read(calculation);

            // Assert
            DuneLocationCalculationOutput output = calculation.Output;

            Assert.IsNotNull(output);
            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);
        }
        public void Create_CalculationWithoutOutput_ReturnsDuneLocationCalculationEntity()
        {
            // Setup
            var duneLocation = new TestDuneLocation();
            var calculation  = new DuneLocationCalculation(duneLocation);

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

            registry.Register(duneLocationEntity, duneLocation);

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

            // Assert
            Assert.IsNotNull(entity);
            CollectionAssert.IsEmpty(entity.DuneLocationCalculationOutputEntities);
        }
        public void Create_CalculationWithAlreadyRegisteredDuneLocation_ReturnsEntityWithDuneLocationEntity()
        {
            // Setup
            var duneLocation = new TestDuneLocation();
            var calculation  = new DuneLocationCalculation(duneLocation);

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

            registry.Register(duneLocationEntity, duneLocation);

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

            // Assert
            Assert.IsNotNull(entity);
            Assert.AreSame(duneLocationEntity, entity.DuneLocationEntity);
        }
        /// <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);
        }
示例#12
0
        /// <summary>
        /// Creates a <see cref="DuneLocationCalculationEntity"/> based on the information of the <see cref="DuneLocationCalculation"/>.
        /// </summary>
        /// <param name="calculation">The calculation to create a database entity for.</param>
        /// <param name="registry">The object keeping track of create operations.</param>
        /// <returns>A new <see cref="DuneLocationCalculationEntity"/>.</returns>
        /// <exception cref="ArgumentNullException">Thrown when any parameter is <c>null</c>.</exception>
        internal static DuneLocationCalculationEntity Create(this DuneLocationCalculation calculation, PersistenceRegistry registry)
        {
            if (calculation == null)
            {
                throw new ArgumentNullException(nameof(calculation));
            }

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

            var duneLocationCalculationEntity = new DuneLocationCalculationEntity
            {
                DuneLocationEntity = registry.Get(calculation.DuneLocation)
            };

            CreateDuneLocationOutput(duneLocationCalculationEntity, calculation.Output);

            return(duneLocationCalculationEntity);
        }