예제 #1
0
        public void TimeEstimateWeightIsMaximumOfChildWeights()
        {
            var command1Mock = GetCommandMock();
            command1Mock.Setup((command) => command.ProcessTimeEstimate).Returns(new TestTimeEstimate(9));

            var command2Mock = GetCommandMock();
            command2Mock.Setup((command) => command.ProcessTimeEstimate).Returns(new TestTimeEstimate(20));

            var dataRouter = new DataRouter();
            dataRouter.Add(TypedDataType.Text, command1Mock.Object);
            dataRouter.Add(TypedDataType.Uri, command2Mock.Object);

            Assert.AreEqual(20, dataRouter.ProcessTimeEstimate.ProgressWeight);
        }
예제 #2
0
        public void ProcessCallsRoutedProcess()
        {
            var inputTracker = GetMutableProgressTracker();
            var inputData = GetTextData();

            var commandMock = GetCommandMock();
            commandMock.Setup((command) => command.Process(inputData, inputTracker, CancellationToken.None)).Returns((TypedData) null);

            var dataRouter = new DataRouter();
            dataRouter.Add(TypedDataType.Text, commandMock.Object);

            dataRouter.Process(inputData, inputTracker, CancellationToken.None);

            commandMock.Verify((command) => command.Process(inputData, inputTracker, CancellationToken.None), Times.Once());
        }
예제 #3
0
        public void ProcessReturnsData()
        {
            var expectedOutput = GetTextData();

            var inputTracker = GetMutableProgressTracker();
            var inputData = GetTextData();

            var commandMock = GetCommandMock();
            commandMock.Setup((command) => command.Process(inputData, inputTracker, CancellationToken.None)).Returns(expectedOutput);

            var dataRouter = new DataRouter();
            dataRouter.Add(TypedDataType.Text, commandMock.Object);

            var actualOutput = dataRouter.Process(inputData, inputTracker, CancellationToken.None);
            Assert.AreSame(expectedOutput, actualOutput);
        }
예제 #4
0
        public void NoTimeEstimateWeightIfNoRoutes()
        {
            var dataRouter = new DataRouter();

            Assert.AreEqual(0, dataRouter.ProcessTimeEstimate.ProgressWeight);
        }
예제 #5
0
        public override void Execute(IMutableProgressTracker progress, CancellationToken cancelToken)
        {
            var clipboard = new Clipboard();
            var router = new DataRouter {
                { TypedDataType.Image, ImageUploader },
                { TypedDataType.Text, TextUploader },
                { TypedDataType.Uri, UrlShortener },
                { TypedDataType.Stream, FileUploader },
            };

            var commandChain = new CommandChain(
                clipboard,
                router,
                clipboard
            );

            using (commandChain.Process(null, progress, cancelToken)) {
                // Auto-dispose
            }

            progress.Status = "URL saved to clipboard";
        }
예제 #6
0
파일: DataRouter.cs 프로젝트: strager/NoCap
 public DataRouterTimeEstimate(DataRouter dataRouter)
 {
     this.dataRouter = dataRouter;
 }