Exemple #1
0
        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();
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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();
        }
Exemple #4
0
        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);
            }
        }