public void CreateCalculationFeatures_GivenCalculations_ReturnsCalculationFeaturesCollection() { // Setup IPipingCalculationScenario <PipingInput> calculationA = PipingCalculationScenarioTestFactory.CreateCalculationWithValidInput( new HydraulicBoundaryLocation(1, string.Empty, 5.0, 4.0)); IPipingCalculationScenario <PipingInput> calculationB = PipingCalculationScenarioTestFactory.CreateCalculationWithValidInput( new HydraulicBoundaryLocation(1, string.Empty, 2.2, 3.8)); calculationA.InputParameters.SurfaceLine.ReferenceLineIntersectionWorldPoint = new Point2D(1.0, 3.0); calculationB.InputParameters.SurfaceLine.ReferenceLineIntersectionWorldPoint = new Point2D(1.0, 4.0); // Call IEnumerable <MapFeature> features = PipingMapDataFeaturesFactory.CreateCalculationFeatures(new[] { calculationA, calculationB }); // Assert Assert.AreEqual(2, features.Count()); Assert.AreEqual(1, features.ElementAt(0).MapGeometries.Count()); Assert.AreEqual(1, features.ElementAt(1).MapGeometries.Count()); AssertEqualPointCollections(new[] { new Point2D(1.0, 3.0), new Point2D(5.0, 4.0) }, features.ElementAt(0).MapGeometries.ElementAt(0)); AssertEqualPointCollections(new[] { new Point2D(1.0, 4.0), new Point2D(2.2, 3.8) }, features.ElementAt(1).MapGeometries.ElementAt(0)); }
public void ExitPointL_OnValidChange_NotifyObserverAndCalculationPropertyChanged() { // Setup IPipingCalculationScenario <PipingInput> calculation = PipingCalculationScenarioTestFactory.CreateCalculationWithValidInput(new TestHydraulicBoundaryLocation()); var exitPointL = (RoundedDouble)0.3; // Call & Assert SetPropertyAndVerifyNotificationsAndOutputForCalculation(row => row.ExitPointL = exitPointL, calculation); }
public void ExitPointL_NotOnSurfaceLine_ThrowsArgumentOutOfRangeExceptionAndDoesNotNotifyObservers() { // Setup IPipingCalculationScenario <PipingInput> calculation = PipingCalculationScenarioTestFactory.CreateCalculationWithValidInput(new TestHydraulicBoundaryLocation()); var exitPointL = (RoundedDouble)3.0; // Call & Assert const string expectedMessage = "Het gespecificeerde punt moet op het profiel liggen (bereik [0,0, 1,0])."; SetPropertyToInvalidValueAndVerifyException(row => row.ExitPointL = exitPointL, calculation, expectedMessage); }
public void ExitPointL_ExitPointNotBeyondEntryPoint_ThrowsArgumentOutOfRangeExceptionDoesNotNotifyObservers(double newValue) { // Setup IPipingCalculationScenario <PipingInput> calculation = PipingCalculationScenarioTestFactory.CreateCalculationWithValidInput(new TestHydraulicBoundaryLocation()); var exitPointL = (RoundedDouble)newValue; // Call & Assert const string expectedMessage = "Het uittredepunt moet landwaarts van het intredepunt liggen."; SetPropertyToInvalidValueAndVerifyException(row => row.ExitPointL = exitPointL, calculation, expectedMessage); }
private static void AssertPropertyChangeWithOrWithoutCalculationOutput( Action <PipingCalculationRow> setProperty, Action <IPipingCalculationScenario <PipingInput> > assertions, bool hasOutput, bool expectUpdates) { // Setup var mockRepository = new MockRepository(); var inputObserver = mockRepository.StrictMock <IObserver>(); if (expectUpdates) { inputObserver.Expect(o => o.UpdateObserver()); } var calculationObserver = mockRepository.StrictMock <IObserver>(); if (expectUpdates && hasOutput) { calculationObserver.Expect(o => o.UpdateObserver()); } var handler = mockRepository.Stub <IObservablePropertyChangeHandler>(); mockRepository.ReplayAll(); IPipingCalculationScenario <PipingInput> calculation = PipingCalculationScenarioTestFactory.CreateCalculationWithValidInput(new TestHydraulicBoundaryLocation(), hasOutput); var row = new PipingCalculationRow(calculation, string.Empty, handler); calculation.Attach(calculationObserver); calculation.InputParameters.Attach(inputObserver); // Call setProperty(row); // Assert assertions(calculation); if (expectUpdates) { Assert.IsFalse(calculation.HasOutput); } else { Assert.AreEqual(hasOutput, calculation.HasOutput); } mockRepository.VerifyAll(); }