public void Name_AlwaysOnChange_NotifyObserverAndCalculationPropertyChanged() { // Setup var mockRepository = new MockRepository(); var observer = mockRepository.StrictMock <IObserver>(); observer.Expect(o => o.UpdateObserver()); var handler = mockRepository.Stub <IObservablePropertyChangeHandler>(); mockRepository.ReplayAll(); const string newValue = "Test new name"; var calculation = new TestCalculation(); var row = new TestCalculationRow(calculation, handler); calculation.Attach(observer); // Call row.Name = newValue; // Assert Assert.AreEqual(newValue, calculation.Name); mockRepository.VerifyAll(); }
public void SetProperties_IndividualProperties_UpdateDataAndNotifyObservers() { // Setup var mocks = new MockRepository(); var projectObserver = mocks.StrictMock <IObserver>(); const int numberOfChangedProperties = 1; projectObserver.Expect(o => o.UpdateObserver()).Repeat.Times(numberOfChangedProperties); var failureMechanism = mocks.StrictMock <ICalculatableFailureMechanism>(); mocks.ReplayAll(); var calculation = new TestCalculation(); var testCalculationContext = new TestCalculationContext(calculation, new CalculationGroup(), failureMechanism); calculation.Attach(projectObserver); var properties = new CalculationContextProperties { Data = testCalculationContext }; // Call const string newName = "Some new cool pretty name"; properties.Name = newName; // Assert Assert.AreEqual(newName, calculation.Name); mocks.VerifyAll(); }
public void DoPostUpdateActions_Always_NotifiesCalculationObservers() { // Setup var mocks = new MockRepository(); var inquiryHelper = mocks.StrictMock <IInquiryHelper>(); var observer = mocks.StrictMock <IObserver>(); observer.Expect(o => o.UpdateObserver()); mocks.ReplayAll(); var calculation = new TestCalculation(); calculation.Attach(observer); var handler = new TestClearIllustrationPointsOfCalculationChangeHandler(inquiryHelper, calculation); // Call handler.DoPostUpdateActions(); // Assert mocks.VerifyAll(); }
private static void AssertPropertyChangeWithOrWithoutCalculationOutput( Action <CalculationRow <TestCalculation> > setProperty, Action <TestCalculation> 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(); object assignedOutput = null; var calculation = new TestCalculation { InputParameters = { HydraulicBoundaryLocation = new TestHydraulicBoundaryLocation() } }; if (hasOutput) { assignedOutput = new object(); } calculation.Output = assignedOutput; var row = new TestCalculationRow(calculation, handler); calculation.Attach(calculationObserver); calculation.InputParameters.Attach(inputObserver); // Call setProperty(row); // Assert assertions(calculation); if (expectUpdates) { Assert.IsNull(calculation.Output); } else { Assert.AreSame(assignedOutput, calculation.Output); } }