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); }
private static DuneLocationCalculation CreateDuneLocationCalculation(DuneLocationCalculationEntity calculationEntity, ReadConversionCollector collector) { var calculation = new DuneLocationCalculation(collector.Get(calculationEntity.DuneLocationEntity)); calculationEntity.Read(calculation); return(calculation); }
private static void CreateDuneLocationOutput(DuneLocationCalculationEntity calculationEntity, DuneLocationCalculationOutput output) { if (output != null) { calculationEntity.DuneLocationCalculationOutputEntities.Add(output.Create()); } }
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); }
/// <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); }