예제 #1
0
        private void DoTestFinaliseTemplate()
        {
            using (Fake.CreateScope())
            {
                // PREPARE
                m_Monitor.Reset();
                IEnumerable <MinutiaRecord> minutae = m_ViewModel.Minutae.ToArray();
                // Record the input minutia type before the operation
                MinutiaType inputType = m_ViewModel.InputMinutiaType;

                // EXECUTE:
                byte[] template = m_IViewModel.FinaliseTemplate();

                // ASSERT:
                // First check that the template is correctly converted
                CollectionAssert.AreEqual(
                    IsoTemplateHelper.ToIsoTemplate(minutae),
                    template);
                // Check the workspace is cleared
                Assert.AreEqual(CAPTURE_NO_TEMPLATE, m_ViewModel.Capture);
                Assert.IsTrue(m_IViewModel.IsSaveTemplatePermitted);
                Assert.AreEqual(minutae.Count(), m_ViewModel.Minutae.Count());
                Assert.AreEqual(0, m_Monitor.GetEventResponses <UserActionRequiredEventArgs>("UserActionRequired").Count());
                Assert.AreEqual(0, m_Monitor.GetEventResponses <PropertyChangedEventArgs>("PropertyChanged").Count());
                Assert.AreEqual(inputType, m_ViewModel.InputMinutiaType);
            }
        }
        private Guid DoTestBeginInitialise()
        {
            using (Fake.CreateScope())
            {
                // PREPARE:
                // Indicate that the settings are valid
                A.CallTo(() => m_SettingsManager.ValidateCurrentSettings()).Returns(true);
                A.CallTo(() => m_SettingsManager.GetCurrentSetting(Setting.ApiKey)).Returns("");
                A.CallTo(() => m_SettingsManager.GetCurrentSetting(Setting.RootUrl)).Returns("");
                // Return a valid identifier for asynchronous connection operation
                Guid identifier = Guid.NewGuid();
                A.CallTo(() => m_DataController.BeginInitialise(A <DataControllerConfig> ._)).Returns(identifier);

                // EXECUTE:
                // First start the initialisation
                ((IMainWindowViewModel)m_ViewModel).BeginInitialise();

                // ASSERT:
                // Assert public state of ViewModel
                Assert.AreEqual(Activity.Transitioning, m_ViewModel.CurrentActivity);
                Assert.IsFalse(m_ViewModel.IsTemplating);
                Assert.IsNull(m_ViewModel.Exception);
                Assert.AreEqual(INITIALISING_PROMPT_TEXT, m_ViewModel.PromptText);

                // Assert IDataController interaction
                // TODO: Check DataControllerConfig value
                A.CallTo(() => m_DataController.BeginInitialise(A <DataControllerConfig> ._))
                .MustHaveHappened(Repeated.Exactly.Once);
                A.CallTo(() => m_DataController.BeginGetCapture(A <ScannerType> ._))
                .MustNotHaveHappened();
                A.CallTo(() => m_DataController.AbortRequest(A <Guid> ._))
                .MustNotHaveHappened();
                A.CallTo(() => m_DataController.BeginSaveTemplate(A <long> ._, A <byte[]> ._))
                .MustNotHaveHappened();

                // Assert ITemplatingViewModel interaction
                A.CallTo(() => m_TemplatingViewModel.BeginInitialise()).MustHaveHappened(Repeated.Exactly.Once);
                A.CallTo(() => m_TemplatingViewModel.BeginTemplating(A <CaptureInfo> ._)).MustNotHaveHappened();
                A.CallTo(() => m_TemplatingViewModel.EscapeAction()).MustNotHaveHappened();
                A.CallTo(() => m_TemplatingViewModel.FinaliseTemplate()).MustNotHaveHappened();
                A.CallTo(() => m_TemplatingViewModel.QuitTemplating()).MustNotHaveHappened();
                A.CallTo(m_TemplatingViewModel)
                .Where(x => x.Method.Name.Equals("set_InputMinutiaType"))
                .WhenArgumentsMatch(x => x.Get <MinutiaType>(0).Equals(DEFAULT_MINUTIA_TYPE))
                .MustNotHaveHappened();

                // Assert ISettingsValidator interaction
                AssertSettingsChecked();

                // Assert that view model made no calls to other fake objects
                AssertNoCallsToSettingsViewModel();
                AssertNoCallsToWindowService();
                AssertNoCallsToDispatcherHelper();

                // Return the identifier so that the operation can be completed later
                return(identifier);
            }
        }