Пример #1
0
        public void MakeCollectBlockOperation_BlockShouldBeManaged_ResultIsIgnored(CollectBlockTestCase testCase)
        {
            var testContext = new TestContext()
            {
                ManageOtherGrids     = testCase.ManageOtherGrids,
                AutoManageThisGrid   = testCase.AutoManageThisGrid,
                AutoManageOtherGrids = testCase.AutoManageOtherGrids,
                IsBlockSameGrid      = testCase.IsBlockSameGrid,
                IsBlockIgnored       = testCase.IsBlockIgnored,
                IsBlockManaged       = testCase.IsBlockManaged
            };
            var mockBackgroundWorker = new FakeBackgroundWorker();

            var result = testContext.Uut.MakeCollectBlockOperation(testContext.MockBlock.Object);

            result
            .ShouldRunToCompletion(mockBackgroundWorker);

            testContext.MockManagedBlockConfigManager
            .ShouldHaveReceived(x => x.MakeParseOperation(testContext.MockBlock.Object), 1);

            mockBackgroundWorker.MockSubOperationScheduler
            .ShouldHaveReceived(x => x(testContext.MockParseOperation.Object), 1);

            result.Result.IsIgnored.ShouldBeTrue();
        }
Пример #2
0
        public void MakeCollectBlockOperation_OperationIsDisposed_OperationIsRecycled(CollectBlockTestCase testCase)
        {
            var testContext = new TestContext()
            {
                ManageOtherGrids     = testCase.ManageOtherGrids,
                AutoManageThisGrid   = testCase.AutoManageThisGrid,
                AutoManageOtherGrids = testCase.AutoManageOtherGrids,
                IsBlockSameGrid      = testCase.IsBlockSameGrid,
                IsBlockIgnored       = testCase.IsBlockIgnored,
                IsBlockManaged       = testCase.IsBlockManaged
            };
            var mockBackgroundWorker = new FakeBackgroundWorker();

            var result = testContext.Uut.MakeCollectBlockOperation(testContext.MockBlock.Object);

            result.ShouldRunToCompletion(mockBackgroundWorker);

            var mockBlockInvocations = testContext.MockBlock
                                       .Invocations.ToArray();

            var mockManagedBlockConfigManagerInvocations = testContext.MockManagedBlockConfigManager
                                                           .Invocations.ToArray();

            var mockSubOperationSchedulerInvocations = mockBackgroundWorker.MockSubOperationScheduler
                                                       .Invocations.ToArray();

            result.ShouldBeAssignableTo <IDisposable>();
            (result as IDisposable).Dispose();

            var secondMockBlock = new Mock <IMyTerminalBlock>();

            secondMockBlock
            .Setup(x => x.CubeGrid)
            .Returns(() => testContext.MockBlock.Object.CubeGrid);

            testContext.MockManagedBlockConfigManager
            .Invocations.Clear();

            mockBackgroundWorker.MockSubOperationScheduler
            .Invocations.Clear();

            testContext.Uut.MakeCollectBlockOperation(secondMockBlock.Object)
            .ShouldBeSameAs(result);

            result.ShouldRunToCompletion(mockBackgroundWorker);

            secondMockBlock.Invocations.Count.ShouldBe(mockBlockInvocations.Length);
            foreach (var i in Enumerable.Range(0, mockBlockInvocations.Length))
            {
                secondMockBlock.Invocations[i].ShouldBe(mockBlockInvocations[i]);
            }

            testContext.MockManagedBlockConfigManager.Invocations.Count.ShouldBe(mockManagedBlockConfigManagerInvocations.Length);
            foreach (var i in Enumerable.Range(0, mockManagedBlockConfigManagerInvocations.Length))
            {
                testContext.MockManagedBlockConfigManager.Invocations[i].ShouldBe(mockManagedBlockConfigManagerInvocations[i]);
            }

            mockBackgroundWorker.MockSubOperationScheduler.Invocations.Count.ShouldBe(mockSubOperationSchedulerInvocations.Length);
            foreach (var i in Enumerable.Range(0, mockSubOperationSchedulerInvocations.Length))
            {
                mockBackgroundWorker.MockSubOperationScheduler.Invocations[i].ShouldBe(mockSubOperationSchedulerInvocations[i]);
            }
        }