コード例 #1
0
 public void Setup()
 {
     _dispatcher      = new ManualDispatcher();
     _viewTemplate    = new AnalysisViewTemplate();
     _analyser        = new Mock <IAnalysis>();
     _analysisStorage = new Mock <IAnalysisStorage>();
 }
コード例 #2
0
        public AnalysisViewModel(IDispatcher dispatcher,
                                 AnalysisViewTemplate viewTemplate,
                                 IAnalysis analyser,
                                 IAnalysisStorage analysisStorage,
                                 IPluginLoader pluginLoader)
        {
            _dispatcher             = dispatcher ?? throw new ArgumentNullException(nameof(dispatcher));
            _analyser               = analyser ?? throw new ArgumentNullException(nameof(analyser));
            _analysisStorage        = analysisStorage ?? throw new ArgumentNullException(nameof(analysisStorage));
            _viewTemplate           = viewTemplate ?? throw new ArgumentNullException(nameof(viewTemplate));
            _pluginLoader           = pluginLoader ?? throw new ArgumentNullException(nameof(pluginLoader));
            _pages                  = new ObservableCollection <AnalysisPageViewModel>();
            _addPageCommand         = new DelegateCommand(AddNewPage);
            _removeCommand          = new DelegateCommand(RemoveThis);
            _captureSnapshotCommand = new DelegateCommand2(CaptureSnapshot)
            {
                CanBeExecuted = true
            };

            if (viewTemplate.Pages.Any())
            {
                foreach (var pageTemplate in viewTemplate.Pages)
                {
                    // TODO: Solve this conundrum!
                    AddPage((PageTemplate)pageTemplate);
                }
            }
            else
            {
                AddNewPage();
            }

            _selectedPage = _pages.FirstOrDefault();
        }
コード例 #3
0
        /// <inheritdoc />
        public Task SaveSnapshot(IAnalysis analysis, AnalysisViewTemplate viewTemplate)
        {
            var tmp = analysis as ActiveAnalysis;

            if (tmp == null)
            {
                throw new ArgumentException("It makes no sense to create a snapshot from anything else but an active analysis",
                                            nameof(analysis));
            }

            var analysisSnapshot = tmp.CreateSnapshot();
            var template         = new AnalysisTemplate(analysisSnapshot.Analysers.Select(x => new AnalyserTemplate
            {
                Id = x.Id,
                AnalyserPluginId = x.AnalyserPluginId,
                Configuration    = x.Configuration
            }));
            var clone   = viewTemplate.Clone();
            var results = analysisSnapshot.Analysers.Select(x => new AnalyserResult
            {
                AnalyserId = x.Id,
                Result     = x.Result
            }).ToList();
            var snapshot = new Core.Analysis.AnalysisSnapshot(template, clone, results);

            return(_snapshots.Save(snapshot));
        }
コード例 #4
0
        public IAnalysis CreateAnalysis(AnalysisTemplate template, AnalysisViewTemplate viewTemplate)
        {
            ActiveAnalysisConfiguration analysisConfiguration;

            var id       = AnalysisId.CreateNew();
            var analysis = new ActiveAnalysis(id,
                                              template,
                                              _taskScheduler,
                                              _dataSourceAnalyserEngine,
                                              TimeSpan.FromMilliseconds(100));

            try
            {
                analysisConfiguration = new ActiveAnalysisConfiguration(id, template, viewTemplate);
                lock (_syncRoot)
                {
                    _templates.Add(analysisConfiguration);
                    _analyses.Add(analysis.Id, analysis);
                    _lastSavedAnalyses.Add(analysis.Id, analysisConfiguration);
                }
            }
            catch (Exception)
            {
                analysis.Dispose();                 //< ActiveAnalysis actually spawns new analyses on the engine so we should cancel those in case an exception si thrown here...
                throw;
            }

            SaveAsync(analysisConfiguration).Wait();

            return(analysis);
        }
コード例 #5
0
        public void TestCreateAnalysis3()
        {
            var storage = new AnalysisStorage(_taskScheduler,
                                              _filesystem,
                                              _dataSourceAnalyserEngine.Object,
                                              _typeFactory);
            var analysisTemplate     = new AnalysisTemplate();
            var analysisViewTemplate = new AnalysisViewTemplate();
            var analysis             = storage.CreateAnalysis(analysisTemplate, analysisViewTemplate);

            analysisViewTemplate.Add(new PageTemplate {
                Title = "A great page"
            });

            var task = storage.SaveAsync(analysis.Id);

            task.Should().NotBeNull();
            task.Wait(TimeSpan.FromSeconds(5)).Should().BeTrue("because the modified template should've been saved");

            var anotherStorage = new AnalysisStorage(_taskScheduler,
                                                     _filesystem,
                                                     _dataSourceAnalyserEngine.Object,
                                                     _typeFactory);

            anotherStorage.AnalysisTemplates.Should().HaveCount(1, "because we've created and saved one template");
            var template = anotherStorage.AnalysisTemplates.First();

            template.Should().NotBeNull();
            template.ViewTemplate.Pages.Should().HaveCount(1, "because we've added one page to that template");
            var pageTemplate = template.ViewTemplate.Pages.First();

            pageTemplate.Should().NotBeNull();
            pageTemplate.Title.Should().Be("A great page");
        }
コード例 #6
0
 public void Setup()
 {
     _dispatcher   = new ManualDispatcher();
     _viewTemplate = new AnalysisViewTemplate();
     _analyser     = new Mock <IAnalysis>();
     _id           = AnalysisId.CreateNew();
     _analyser.Setup(x => x.Id).Returns(_id);
     _analysisStorage = new Mock <IAnalysisStorage>();
     _pluginRegistry  = new PluginRegistry();
 }
コード例 #7
0
        public void TestCtor1()
        {
            var id            = AnalysisId.CreateNew();
            var template      = new AnalysisTemplate();
            var viewTemplate  = new AnalysisViewTemplate();
            var configuration = new ActiveAnalysisConfiguration(id, template, viewTemplate);

            configuration.Id.Should().Be(id);
            configuration.Template.Should().BeSameAs(template);
            configuration.ViewTemplate.Should().BeSameAs(viewTemplate);
        }
コード例 #8
0
        public void TestSerialize1()
        {
            var template = new AnalysisViewTemplate
            {
                Name = "Ronny"
            };

            var actualTemplate = template.Roundtrip();

            actualTemplate.Should().NotBeNull();
            actualTemplate.Name.Should().Be("Ronny");
        }
コード例 #9
0
        public void TestRoundtripEmpty()
        {
            var id            = AnalysisId.CreateNew();
            var template      = new AnalysisTemplate();
            var viewTemplate  = new AnalysisViewTemplate();
            var configuration = new ActiveAnalysisConfiguration(id, template, viewTemplate);

            var actualConfiguration = configuration.Roundtrip();

            actualConfiguration.Id.Should().Be(id);
            actualConfiguration.Template.Should().NotBeNull();
            actualConfiguration.ViewTemplate.Should().NotBeNull();
        }
コード例 #10
0
        public AnalysisViewModel CreateNew()
        {
            var viewTemplate = new AnalysisViewTemplate();
            var template     = new AnalysisTemplate();
            var analysis     = _analysisStorage.CreateAnalysis(template, viewTemplate);
            var viewModel    = new AnalysisViewModel(_dispatcher, viewTemplate, analysis, _analysisStorage);

            _active.Add(viewModel);
            _activeById.Add(viewModel.Id, viewModel);

            viewModel.OnRemove += AnalysisOnOnRemove;
            Update();

            return(viewModel);
        }
コード例 #11
0
        public AnalysisViewModel(IDispatcher dispatcher,
                                 AnalysisViewTemplate viewTemplate,
                                 IAnalysis analyser,
                                 IAnalysisStorage analysisStorage,
                                 IPluginLoader pluginLoader)
        {
            _dispatcher             = dispatcher ?? throw new ArgumentNullException(nameof(dispatcher));
            _analyser               = analyser ?? throw new ArgumentNullException(nameof(analyser));
            _analysisStorage        = analysisStorage ?? throw new ArgumentNullException(nameof(analysisStorage));
            _viewTemplate           = viewTemplate ?? throw new ArgumentNullException(nameof(viewTemplate));
            _pluginLoader           = pluginLoader ?? throw new ArgumentNullException(nameof(pluginLoader));
            _pages                  = new ObservableCollection <AnalysisPageViewModel>();
            _addPageCommand         = new DelegateCommand(AddPage);
            _removeCommand          = new DelegateCommand(RemoveThis);
            _captureSnapshotCommand = new DelegateCommand2(CaptureSnapshot)
            {
                CanBeExecuted = true
            };

            AddPage();
            _selectedPage = _pages.FirstOrDefault();
        }
コード例 #12
0
        public AnalysisViewModel(IDispatcher dispatcher,
                                 AnalysisViewTemplate viewTemplate,
                                 IAnalysis analyser,
                                 IAnalysisStorage analysisStorage)
        {
            if (dispatcher == null)
            {
                throw new ArgumentNullException(nameof(dispatcher));
            }
            if (viewTemplate == null)
            {
                throw new ArgumentNullException(nameof(viewTemplate));
            }
            if (analyser == null)
            {
                throw new ArgumentNullException(nameof(analyser));
            }
            if (analysisStorage == null)
            {
                throw new ArgumentNullException(nameof(analysisStorage));
            }

            _dispatcher             = dispatcher;
            _analyser               = analyser;
            _analysisStorage        = analysisStorage;
            _viewTemplate           = viewTemplate;
            _pages                  = new ObservableCollection <AnalysisPageViewModel>();
            _addPageCommand         = new DelegateCommand(AddPage);
            _removeCommand          = new DelegateCommand(RemoveThis);
            _captureSnapshotCommand = new DelegateCommand2(CaptureSnapshot)
            {
                CanBeExecuted = true
            };
            _name = "Unsaved analysis";

            AddPage();
            _selectedPage = _pages.FirstOrDefault();
        }
コード例 #13
0
        public void TestConstruction()
        {
            var template = new AnalysisViewTemplate();

            template.Name.Should().Be("<Unnamed>");
        }