示例#1
0
        public void ProteinService_Get_Test2()
        {
            // Arrange
            var downloader = MockRepository.GenerateMock <IProjectSummaryDownloader>();

            downloader.Expect(x => x.Download()).Repeat.Once();
            downloader.Stub(x => x.FilePath).Return("..\\..\\..\\HFM.Proteins.Tests\\TestFiles\\summary.json");

            var service = new ProteinService(null, downloader)
            {
                Logger = new Logging.DebugLogger()
            };
            var protein = CreateValidProtein(2483);

            service.Add(protein);
            // Act
            Protein p = service.Get(2483, true);

            Assert.IsNotNull(p);
            p = service.Get(2482, true);
            Assert.IsNull(p);
            // Call twice to internally exercise the projects not found list
            p = service.Get(2482, true);
            Assert.IsNull(p);
            // Assert
            downloader.VerifyAllExpectations();
        }
示例#2
0
        private (PointPairList Points, string Label) BuildSlotPoints(IEnumerable <ProteinBenchmark> benchmarks, Dictionary <int, double> projectToXAxisOrdinal)
        {
            bool calculateBonus = Preferences.Get <BonusCalculation>(Preference.BonusCalculation) != BonusCalculation.None;

            var    points = new PointPairList();
            string label  = null;

            foreach (var b in benchmarks)
            {
                var protein = ProteinService.Get(b.ProjectID);
                if (protein is null)
                {
                    continue;
                }

                if (label is null)
                {
                    label = GetSlotNameAndProcessor(b, protein);
                }

                double y = GetPPD(protein, b.AverageFrameTime, calculateBonus);
                points.Add(projectToXAxisOrdinal[b.ProjectID], y);
            }

            return(points, label);
        }
示例#3
0
 private Protein GetProtein(int?projectID)
 {
     if (!projectID.HasValue)
     {
         return(null);
     }
     return(ProteinService.Get(projectID.Value));
 }
示例#4
0
 public void ProteinService_FileName_Test()
 {
    // Arrange
    var prefs = MockRepository.GenerateStub<IPreferenceSet>();
    prefs.Stub(x => x.ApplicationDataFolderPath).Return(Environment.CurrentDirectory);
    // Act
    var service = new ProteinService(prefs, null);
    // Assert
    Assert.AreEqual(System.IO.Path.Combine(Environment.CurrentDirectory, Constants.ProjectInfoFileName), service.FileName);
 }
示例#5
0
        public static IProteinService CreateProteinService()
        {
            var service = new ProteinService();

            var protein = new Protein();

            protein.ProjectNumber = 6600;
            protein.WorkUnitName  = "WorkUnitName";
            protein.Core          = "GROGPU2";
            protein.Credit        = 450;
            protein.KFactor       = 0;
            protein.Frames        = 100;
            protein.NumberOfAtoms = 5000;
            protein.PreferredDays = 2;
            protein.MaximumDays   = 3;
            service.Add(protein);

            protein = new Protein();
            protein.ProjectNumber = 5797;
            protein.WorkUnitName  = "WorkUnitName2";
            protein.Core          = "GROGPU2";
            protein.Credit        = 675;
            protein.KFactor       = 2.3;
            protein.Frames        = 100;
            protein.NumberOfAtoms = 7000;
            protein.PreferredDays = 2;
            protein.MaximumDays   = 3;
            service.Add(protein);

            protein = new Protein();
            protein.ProjectNumber = 8011;
            protein.WorkUnitName  = "WorkUnitName3";
            protein.Core          = "GRO-A4";
            protein.Credit        = 106.6;
            protein.KFactor       = 0.75;
            protein.Frames        = 100;
            protein.NumberOfAtoms = 9000;
            protein.PreferredDays = 2.13;
            protein.MaximumDays   = 4.62;
            service.Add(protein);

            protein = new Protein();
            protein.ProjectNumber = 6903;
            protein.WorkUnitName  = "WorkUnitName4";
            protein.Core          = "GRO-A5";
            protein.Credit        = 22706;
            protein.KFactor       = 38.05;
            protein.Frames        = 100;
            protein.NumberOfAtoms = 11000;
            protein.PreferredDays = 5;
            protein.MaximumDays   = 12;
            service.Add(protein);

            return(service);
        }
示例#6
0
        public void ProteinService_FileName_Test()
        {
            // Arrange
            var prefs = MockRepository.GenerateStub <IPreferenceSet>();

            prefs.Stub(x => x.ApplicationDataFolderPath).Return(Environment.CurrentDirectory);
            // Act
            var service = new ProteinService(prefs, null);

            // Assert
            Assert.AreEqual(System.IO.Path.Combine(Environment.CurrentDirectory, Constants.ProjectInfoFileName), service.FileName);
        }
示例#7
0
        private void SetProtein()
        {
            var projectID = SelectedSlotProject?.Value;

            if (projectID is null)
            {
                Protein = null;
                return;
            }

            Protein = ProteinService.Get(projectID.Value);
        }
示例#8
0
 public void ProteinService_Get_Test1()
 {
    // Arrange
    var service = new ProteinService();
    var protein = CreateValidProtein(2483);
    service.Add(protein);
    // Act & Assert
    Protein p = service.Get(2483);
    Assert.IsNotNull(p);
    p = service.Get(2482);
    Assert.IsNull(p);
 }
示例#9
0
        public void ProteinService_Get_Test1()
        {
            // Arrange
            var service = new ProteinService();
            var protein = CreateValidProtein(2483);

            service.Add(protein);
            // Act & Assert
            Protein p = service.Get(2483);

            Assert.IsNotNull(p);
            p = service.Get(2482);
            Assert.IsNull(p);
        }
示例#10
0
        public void ProteinService_Get_Test3()
        {
            // Arrange
            var downloader = MockRepository.GenerateMock <IProjectSummaryDownloader>();
            var service    = new ProteinService(null, downloader)
            {
                Logger = new Logging.DebugLogger()
            };

            // Act
            service.Get(2482, true);
            // Assert
            Assert.IsTrue(service.ProjectsNotFound.ContainsKey(2482));
        }
示例#11
0
        private WorkUnitModel BuildWorkUnitModel(SlotModel slotModel, WorkUnit workUnit)
        {
            Debug.Assert(slotModel != null);
            Debug.Assert(workUnit != null);

            Protein protein = ProteinService.GetOrRefresh(workUnit.ProjectID) ?? new Protein();

            // update the data
            workUnit.UnitRetrievalTime = LastRetrievalTime;
            var workUnitModel = new WorkUnitModel(slotModel, workUnit);

            workUnitModel.CurrentProtein = protein;
            return(workUnitModel);
        }
示例#12
0
        public void ProteinService_ResetRefreshParameters_Test()
        {
            // Arrange
            var downloader = MockRepository.GenerateMock <IProjectSummaryDownloader>();

            downloader.Expect(x => x.ResetDownloadParameters()).Repeat.Once();
            var service = new ProteinService(null, downloader);

            service.ProjectsNotFound.Add(2968, DateTime.MinValue);
            // Act
            service.ResetRefreshParameters();
            // Assert
            Assert.IsFalse(service.ProjectsNotFound.ContainsKey(2968));
            downloader.VerifyAllExpectations();
        }
示例#13
0
        public void ProteinService_GetProjects_Test1()
        {
            // Arrange
            var service  = new ProteinService();
            var projects = Enumerable.Range(1, 5).ToList();

            foreach (int projectNumber in projects)
            {
                service.Add(CreateValidProtein(projectNumber));
            }
            // Act
            var serviceProjects = service.GetProjects();

            // Assert
            Assert.IsTrue(projects.SequenceEqual(serviceProjects));
        }
示例#14
0
        public override void Generate(IBenchmarksReportSource source)
        {
            var benchmarkText = new List <string>();

            var slotIdentifier = source.SlotIdentifier;
            var projects       = source.Projects;

            if (slotIdentifier is null || projects.Count == 0)
            {
                Result = benchmarkText;
                return;
            }

            string numberFormat     = NumberFormat.Get(Preferences.Get <int>(Preference.DecimalPlaces));
            var    bonusCalculation = Preferences.Get <BonusCalculation>(Preference.BonusCalculation);
            bool   calculateBonus   = bonusCalculation != BonusCalculation.None;

            foreach (var projectID in projects)
            {
                var protein = ProteinService.Get(projectID);
                if (protein is null)
                {
                    benchmarkText.Add(String.Format(CultureInfo.InvariantCulture, " Project ID: {0} Not Found", projectID));
                    benchmarkText.AddRange(Enumerable.Repeat(String.Empty, 2));
                    continue;
                }

                var benchmarks = BenchmarkService.GetBenchmarks(slotIdentifier.Value, protein.ProjectNumber)
                                 .OrderBy(x => x.SlotIdentifier.Name)
                                 .ThenBy(x => x.Threads);

                benchmarkText
                .AddRange(EnumerateProjectInformation(protein)
                          .Concat(Enumerable.Repeat(String.Empty, 2)));

                foreach (var b in benchmarks)
                {
                    benchmarkText
                    .AddRange(EnumerateBenchmarkInformation(protein, b, numberFormat, calculateBonus)
                              .Concat(EnumerateSlotInformation(FindRunningSlot(b), numberFormat, bonusCalculation))
                              .Concat(Enumerable.Repeat(String.Empty, 2)));
                }
            }

            Result = benchmarkText;
        }
示例#15
0
        public void ProteinService_Refresh_Test()
        {
            // Arrange
            var downloader = MockRepository.GenerateMock <IProjectSummaryDownloader>();

            downloader.Expect(x => x.Download()).Repeat.Once();
            downloader.Stub(x => x.FilePath).Return("..\\..\\..\\HFM.Proteins.Tests\\TestFiles\\summary.json");

            var service = new ProteinService(null, downloader)
            {
                Logger = new Logging.DebugLogger()
            };

            Assert.AreEqual(0, service.GetProjects().Count());
            // Act
            service.Refresh();
            // Assert
            Assert.AreNotEqual(0, service.GetProjects().Count());
        }
示例#16
0
 public void ProteinService_Get_Test2()
 {
    // Arrange
    var downloader = MockRepository.GenerateMock<IProjectSummaryDownloader>();
    downloader.Expect(x => x.Download()).Repeat.Once();
    downloader.Stub(x => x.FilePath).Return("..\\..\\..\\HFM.Proteins.Tests\\TestFiles\\summary.json");
    
    var service = new ProteinService(null, downloader) { Logger = new Logging.DebugLogger() };
    var protein = CreateValidProtein(2483);
    service.Add(protein);
    // Act
    Protein p = service.Get(2483, true);
    Assert.IsNotNull(p);
    p = service.Get(2482, true);
    Assert.IsNull(p);
    // Call twice to internally exercise the projects not found list
    p = service.Get(2482, true);
    Assert.IsNull(p);
    // Assert
    downloader.VerifyAllExpectations();
 }
示例#17
0
        public void ProteinService_RefreshAsync_Test()
        {
            // Arrange
            var downloader = MockRepository.GenerateMock <IProjectSummaryDownloader>();
            var taskSource = new TaskCompletionSource <object>();

            taskSource.SetResult(null);
            downloader.Expect(x => x.DownloadAsync(null)).Return(taskSource.Task).Repeat.Once();
            downloader.Stub(x => x.FilePath).Return("..\\..\\..\\HFM.Proteins.Tests\\TestFiles\\summary.json");

            var service = new ProteinService(null, downloader)
            {
                Logger = new Logging.DebugLogger()
            };

            Assert.AreEqual(0, service.GetProjects().Count());
            // Act
            service.RefreshAsync(null).Wait();
            // Assert
            Assert.AreNotEqual(0, service.GetProjects().Count());
        }
示例#18
0
        public void BenchmarkPresenter_DescriptionLinkClicked_StartsLocalProcess()
        {
            // Arrange
            var dataContainer = new ProteinDataContainer();

            dataContainer.Data.Add(new Protein {
                ProjectNumber = 12345, Description = "http://someurl"
            });
            var proteinService   = new ProteinService(dataContainer, null, null);
            var benchmarkService = CreateBenchmarkServiceWithOneSlotAndProject();
            var model            = CreateModel(proteinService, benchmarkService);

            using (var presenter = new MockFormBenchmarksPresenter(model))
            {
                presenter.Show();
                var localProcess = new MockLocalProcessService();
                // Act
                presenter.DescriptionLinkClicked(localProcess);
                // Assert
                Assert.AreEqual(1, presenter.Model.SlotProjects.Count);
                Assert.IsTrue(localProcess.Invocations.First().FileName == "http://someurl");
            }
        }
示例#19
0
        public void ProteinService_Get_Test4()
        {
            // Arrange
            var downloader = MockRepository.GenerateMock <IProjectSummaryDownloader>();

            downloader.Expect(x => x.Download()).Repeat.Once();
            downloader.Stub(x => x.FilePath).Return("..\\..\\..\\HFM.Proteins.Tests\\TestFiles\\summary.json");

            var service = new ProteinService(null, downloader)
            {
                Logger = new Logging.DebugLogger()
            };

            // Set project not found to excercise removal code
            service.ProjectsNotFound.Add(6940, DateTime.MinValue);
            // Act
            Protein p = service.Get(6940, true);

            Assert.IsNotNull(p);
            // Assert
            downloader.VerifyAllExpectations();
            Assert.IsFalse(service.ProjectsNotFound.ContainsKey(6940));
        }
示例#20
0
      public void ProteinService_RefreshAsync_Test()
      {
         // Arrange
         var downloader = MockRepository.GenerateMock<IProjectSummaryDownloader>();
         var taskSource = new TaskCompletionSource<object>();
         taskSource.SetResult(null);
         downloader.Expect(x => x.DownloadAsync(null)).Return(taskSource.Task).Repeat.Once();
         downloader.Stub(x => x.FilePath).Return("..\\..\\..\\HFM.Proteins.Tests\\TestFiles\\summary.json");

         var service = new ProteinService(null, downloader) { Logger = new Logging.DebugLogger() };
         Assert.AreEqual(0, service.GetProjects().Count());
         // Act
         service.RefreshAsync(null).Wait();
         // Assert
         Assert.AreNotEqual(0, service.GetProjects().Count());
      }
示例#21
0
 public void ProteinService_Get_Test3()
 {
    // Arrange
    var downloader = MockRepository.GenerateMock<IProjectSummaryDownloader>();
    var service = new ProteinService(null, downloader) { Logger = new Logging.DebugLogger() };
    // Act
    service.Get(2482, true);
    // Assert
    Assert.IsTrue(service.ProjectsNotFound.ContainsKey(2482));
 }
示例#22
0
 public void ProteinService_ResetRefreshParameters_Test()
 {
    // Arrange
    var downloader = MockRepository.GenerateMock<IProjectSummaryDownloader>();
    downloader.Expect(x => x.ResetDownloadParameters()).Repeat.Once();
    var service = new ProteinService(null, downloader);
    service.ProjectsNotFound.Add(2968, DateTime.MinValue);
    // Act
    service.ResetRefreshParameters();
    // Assert
    Assert.IsFalse(service.ProjectsNotFound.ContainsKey(2968));
    downloader.VerifyAllExpectations();
 }
示例#23
0
      public void ProteinService_Get_Test4()
      {
         // Arrange
         var downloader = MockRepository.GenerateMock<IProjectSummaryDownloader>();
         downloader.Expect(x => x.Download()).Repeat.Once();
         downloader.Stub(x => x.FilePath).Return("..\\..\\..\\HFM.Proteins.Tests\\TestFiles\\summary.json");

         var service = new ProteinService(null, downloader) { Logger = new Logging.DebugLogger() };
         // Set project not found to excercise removal code
         service.ProjectsNotFound.Add(6940, DateTime.MinValue);
         // Act
         Protein p = service.Get(6940, true);
         Assert.IsNotNull(p);
         // Assert
         downloader.VerifyAllExpectations();
         Assert.IsFalse(service.ProjectsNotFound.ContainsKey(6940));
      }
示例#24
0
      public void ProteinService_Refresh_Test()
      {
         // Arrange
         var downloader = MockRepository.GenerateMock<IProjectSummaryDownloader>();
         downloader.Expect(x => x.Download()).Repeat.Once();
         downloader.Stub(x => x.FilePath).Return("..\\..\\..\\HFM.Proteins.Tests\\TestFiles\\summary.json");

         var service = new ProteinService(null, downloader) { Logger = new Logging.DebugLogger() };
         Assert.AreEqual(0, service.GetProjects().Count());
         // Act
         service.Refresh();
         // Assert
         Assert.AreNotEqual(0, service.GetProjects().Count());
      }
示例#25
0
 public void ProteinService_GetProjects_Test1()
 {
    // Arrange
    var service = new ProteinService();
    var projects = Enumerable.Range(1, 5).ToList();
    foreach (int projectNumber in projects)
    {
       service.Add(CreateValidProtein(projectNumber));
    }
    // Act
    var serviceProjects = service.GetProjects();
    // Assert
    Assert.IsTrue(projects.SequenceEqual(serviceProjects));
 }