Example #1
0
        public async Task Test1(
            IEnumerable <Detail> j1,
            IEnumerable <Detail> j2,
            IEnumerable <LaboriousDetail> j12,
            IEnumerable <LaboriousDetail> j21)
        {
            // Arrange
            var experimentInfo = new ExperimentInfo();

            experimentInfo.J1.AddRange(j1);
            experimentInfo.J2.AddRange(j2);
            experimentInfo.J12.AddRange(j12);
            experimentInfo.J21.AddRange(j21);

            var experiment = new Experiment
            {
                Id          = Guid.NewGuid(),
                TestsAmount = 1
            };

            var generatorMock = new Mock <IExperimentGenerator>();

            generatorMock.Setup(g =>
                                g.GenerateDataForTest(It.Is <Experiment>(ex => ex.Id == experiment.Id), It.IsAny <int>()))
            .Returns(() => experimentInfo);

            var originalGenerator = new ExperimentGenerator(new RandomizeService());

            generatorMock.Setup(g => g.GenerateP(It.IsAny <IOnlineChainNode>()))
            .Callback <IOnlineChainNode>(node => originalGenerator.GenerateP(node));

            ExperimentInfo resultInfo = null;

            var experimentTestResultService = new Mock <IExperimentTestResultService>();

            experimentTestResultService
            .Setup(e => e.SaveExperimentTestResult(It.Is <Guid>(id => id == experiment.Id),
                                                   It.IsAny <ExperimentInfo>()))
            .Callback <Guid, ExperimentInfo>((id, info) => resultInfo = info);

            var experimentPipeline = new ExperimentPipeline(
                generatorMock.Object,
                Mock.Of <IWorkerExperimentService>(),
                experimentTestResultService.Object,
                Mock.Of <IReportsService>(),
                Mock.Of <ILogger <ExperimentPipeline> >(),
                Mock.Of <IOptions <DbSettings> >(),
                new OnlineExecutor());

            // Act
            await experimentPipeline.Run(Enumerable.Empty <Experiment>().Append(experiment));

            // Assert
            Assert.NotNull(resultInfo);
        }