public void Into_ShouldWriteInto()
        {
            string rn = Environment.NewLine;
            //Arrange
            CellCollection cellCollection = new CellCollection(new ICell[]
            {
                new UnselectedCell(new Glyph('0')),
                new UnselectedCell(new Glyph('1')),
                new UnselectedCell(new Glyph('2')),
                new UnselectedCell(new Glyph('3')),
                new UnselectedCell(new Glyph('4')),
                new UnselectedCell(new Glyph('5')),
                new UnselectedCell(new Glyph('6')),
                new UnselectedCell(new Glyph('7')),
                new UnselectedCell(new Glyph('8'))
            });
            FakeWriter   fakeWriter = new FakeWriter();
            BoardPrinter subject    = new BoardPrinter(cellCollection, fakeWriter);

            //Act
            subject.Print();

            //Assert
            fakeWriter.AssertLinesWritten($" 0 | 1 | 2{rn}===+===+==={rn} 3 | 4 | 5{rn}===+===+==={rn} 6 | 7 | 8{rn}");
        }
Пример #2
0
 public void SetupTest()
 {
     channel = new SimpleServiceManagement();
     writer = new FakeWriter();
     cmdlet = new TestAzureNameCommand (channel) { Writer = writer };
     Management.Extensions.CmdletSubscriptionExtensions.SessionManager = new InMemorySessionManager();
 }
Пример #3
0
        public void CompleteAfterMessages()
        {
            var fake           = new FakeWriter();
            var writer         = new BufferedClientStreamWriter <string>(fake, 5);
            var task1          = writer.WriteAsync("1");
            var task2          = writer.WriteAsync("2");
            var completionTask = writer.WriteCompleteAsync();

            AssertNotCompleted(task1, task2, completionTask);

            // Server handles first message
            fake.CompleteCurrentTask();
            AssertCompletedWithStatus(task1, TaskStatus.RanToCompletion);
            AssertNotCompleted(task2, completionTask);

            // Server handles second message
            fake.CompleteCurrentTask();
            AssertCompletedWithStatus(task2, TaskStatus.RanToCompletion);
            AssertNotCompleted(completionTask);

            // Server handles completion
            fake.CompleteCurrentTask();
            AssertCompletedWithStatus(completionTask, TaskStatus.RanToCompletion);

            fake.AssertMessages("1", "2");
            fake.AssertCompleted();
        }
Пример #4
0
        public void FaultedWriteFailsPendingTasks()
        {
            var fake           = new FakeWriter();
            var writer         = new BufferedClientStreamWriter <string>(fake, 5);
            var task1          = writer.WriteAsync("1");
            var task2          = writer.WriteAsync("2");
            var task3          = writer.WriteAsync("3");
            var completionTask = writer.WriteCompleteAsync();

            AssertNotCompleted(task1, task2, task3, completionTask);

            // Server handles first message successfully
            fake.CompleteCurrentTask();
            AssertCompletedWithStatus(task1, TaskStatus.RanToCompletion);
            AssertNotCompleted(task2, task3, completionTask);

            // Server fails second message. All pending tasks become faulted with the same exception.
            var exception = new Exception("Bang");

            fake.FailCurrentTask(exception);
            foreach (var task in new[] { task2, task3, completionTask })
            {
                AssertCompletedWithStatus(task, TaskStatus.Faulted);
                Assert.Same(exception, task.Exception.InnerExceptions[0]);
            }
        }
Пример #5
0
 public SelectBuilderTests()
 {
     _opt    = new HelperOptions();
     _prov   = new FakeDbProvider();
     _writer = new FakeWriter();
     _sut    = new SimpleSqlBuilder <Post>(_opt, _prov, Setup.GetTableInfo <Post>(), _writer);
 }
Пример #6
0
        public void WritesAfterMessagesAreSent()
        {
            // Unlike most other tests, here we write a message, the server completes the
            // task, write another message, server completes etc.

            var fake   = new FakeWriter();
            var writer = new BufferedClientStreamWriter <string>(fake, 5);

            // First message
            var task1 = writer.WriteAsync("1");

            fake.CompleteCurrentTask();
            AssertCompletedWithStatus(task1, TaskStatus.RanToCompletion);

            // Second message
            var task2 = writer.WriteAsync("2");

            fake.CompleteCurrentTask();
            AssertCompletedWithStatus(task2, TaskStatus.RanToCompletion);

            // Completion
            var completionTask = writer.WriteCompleteAsync();

            fake.CompleteCurrentTask();
            AssertCompletedWithStatus(completionTask, TaskStatus.RanToCompletion);

            fake.AssertMessages("1", "2");
            fake.AssertCompleted();
        }
Пример #7
0
        public void SafeWriteObjectWritesToWriter()
        {
            var writer = new FakeWriter();
            var cmd    = new FakeCmdlet(writer);

            cmd.Write("Test");
            Assert.AreEqual("Test", writer.Messages[0]);
        }
Пример #8
0
        public void Setup()
        {
            var requestMessage = new HttpRequestMessage();

            requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(MimeTypes.TextHtml));
            _configuration = new Configuration();
            _writer        = new FakeWriter(requestMessage, _configuration);
        }
Пример #9
0
        public UpdateBuilderTests(ITestOutputHelper x)
        {
            _writer = Setup.FakeWriter();
            _sb     = new StringBuilder();

            _executor = new FakeSqlExecutor();
            _options  = new HelperOptions(Setup.GetTableInfo <Post>());
            _sut      = new UpdateTableBuilder <Post>(_executor, _writer, new FakeEscapeIdentifier(), _options);
        }
Пример #10
0
            private void ItShouldWriteItToDisk()
            {
                var writer = new FakeWriter();

                LotteryNumberSetWriter.WriteSet(writer,
                                                LotteryNumberSet.Generate(() => LotteryNumber.Generate(new MonoStateRandomNumberGenerator(Int32.MaxValue))));

                Assert.True(writer.Written);
            }
Пример #11
0
        public void CompleteWithNoWrites()
        {
            var fake           = new FakeWriter();
            var writer         = new BufferedClientStreamWriter <string>(fake, 5);
            var completionTask = writer.WriteCompleteAsync();

            fake.CompleteCurrentTask();
            AssertCompletedWithStatus(completionTask, TaskStatus.RanToCompletion);
            fake.AssertMessages();
            fake.AssertCompleted();
        }
        public void ShouldPrintExpected()
        {
            //Arrange
            FakeWriter      fakeWriter = new FakeWriter();
            CatsGamePrinter subject    = new CatsGamePrinter(fakeWriter);

            //Act
            subject.Print();

            //Assert
            fakeWriter.AssertLastLine("It's a draw!");
        }
        public void ShouldDisplayWelcome()
        {
            //Arrange
            FakeWriter          fakeWriter = new FakeWriter();
            ConsoleGameStarting subject    = new ConsoleGameStarting(fakeWriter);

            //Act
            subject.DisplayWelcome();

            //Assert
            fakeWriter.AssertLinesWritten("Welcome to Tic-Tac-Toe!");
        }
        public void ShouldPrintBoard()
        {
            //Arrange
            FakeWriter          fakeWriter = new FakeWriter();
            ConsoleGameStarting subject    = new ConsoleGameStarting(fakeWriter);
            FakeBoard           fakeBoard  = new FakeBoard.Builder().Print().Build();

            //Act
            subject.DisplayInitialBoard(fakeBoard);

            //Assert
            fakeBoard.AssertPrintInvoked();
        }
Пример #15
0
        public void BehaviorAfterCompleteCalled()
        {
            var fake   = new FakeWriter();
            var writer = new BufferedClientStreamWriter <string>(fake, 5);

            writer.WriteCompleteAsync();

            // The (object) casts are because to make xUnit understand that the call itself should throw;
            // we don't return a failed task.
            Assert.Throws <InvalidOperationException>(() => (object)writer.WriteCompleteAsync());
            Assert.Throws <InvalidOperationException>(() => (object)writer.WriteAsync("x"));
            Assert.Null(writer.TryWriteAsync("y"));
        }
Пример #16
0
        public void ShouldPrintOutGameOverAndWaitForInput()
        {
            //Arrange
            FakeWriter        fakeWriter = new FakeWriter();
            FakeReader        fakeReader = new FakeReader(Environment.NewLine);
            ConsoleGameEnding subject    = new ConsoleGameEnding(fakeReader, fakeWriter);

            //Act
            subject.Display();

            //Assert
            fakeWriter.AssertLinesWritten("Game over", "Press Enter to Exit");
            fakeReader.AssertReadLineInvoked();
        }
Пример #17
0
        public void ShouldPrintExpected()
        {
            //Arrange
            FakeWriter       fakeWriter = new FakeWriter();
            FakeCell         fakeCell   = new FakeCell.Builder().Value("YEAH").Build();
            FakePlayer       fakePlayer = new FakePlayer.Builder().Cell(fakeCell).Build();
            PlayerWinPrinter subject    = new PlayerWinPrinter(fakePlayer, fakeWriter);

            //Act
            subject.Print();

            //Assert
            fakeWriter.AssertLastLine("Player 'YEAH' has won!");
        }
Пример #18
0
        public void Input_ShouldWritePrompt()
        {
            //Arrange
            FakeCell fakeCell = new FakeCell.Builder().Value("?").Build();
            FakeValidResponse <IGlyph> fakeValidResponse = new FakeValidResponse <IGlyph> .Builder().Response(null).Build();

            FakeWriter     fakeWriter = new FakeWriter();
            HumanMoveInput subject    = new HumanMoveInput(fakeValidResponse, fakeWriter);

            //Act
            subject.Input(fakeCell);

            //Assert
            fakeWriter.AssertLinesWritten("Player ?'s Turn");
        }
Пример #19
0
        public async Task AtomicTaskCompletion()
        {
            const int testSize = 100;
            var       fake     = new FakeWriter();
            var       writer   = new BufferedClientStreamWriter <string>(fake, 1);
            var       msgs     = Enumerable.Range(0, testSize).Select(x => x.ToString()).ToArray();

            foreach (var msg in msgs)
            {
                // This write can fail if task completion inside writer is not atomic.
                Task task = writer.WriteAsync(msg);
                fake.CompleteCurrentTask();
                await task.ConfigureAwait(false);
            }
            fake.AssertMessages(msgs);
        }
Пример #20
0
        public void ShouldRunFirstValidInput()
        {
            //Arrange
            FakeRegexBookEnd fakeRegexBookEnd = new FakeRegexBookEnd.Builder().IsMatch(Bool.True).Build();
            FakeWriter       fakeWriter       = new FakeWriter();
            FakeReader       fakeReader       = new FakeReader("A", "B", "C");
            FakeValidInputResponseAction <string> fakeValidInputResponseAction = new FakeValidInputResponseAction <string> .Builder().Response("A").Build();

            ValidResponse <string> subject = new ValidResponse <string>(fakeRegexBookEnd, new[] { "", "", "" }, fakeValidInputResponseAction, fakeWriter, fakeReader);

            //Act
            string input = subject.Response();

            //Assert
            fakeRegexBookEnd.AssertIsMatchInvokedCountMatches(1);
            fakeValidInputResponseAction.AssertResponseInvokedWith("A");
        }
Пример #21
0
        public void CompletionUsesBufferSpace()
        {
            var fake   = new FakeWriter();
            var writer = new BufferedClientStreamWriter <string>(fake, 2);

            writer.WriteAsync("1");
            writer.WriteAsync("2");
            // Try completion, should throw because queue is full.
            // The (object) cast is because to make xUnit understand that the call itself should throw;
            // we don't return a failed task.
            Assert.Throws <InvalidOperationException>(() => (object)writer.WriteCompleteAsync());
            // Try completion, should return null because queue is full.
            Assert.Null(writer.TryWriteCompleteAsync());

            fake.CompleteCurrentTask();
            fake.CompleteCurrentTask();
            writer.WriteCompleteAsync();
            fake.CompleteCurrentTask();
            fake.AssertCompleted();
        }
Пример #22
0
        public void TryWriteBeyondBuffer()
        {
            var fake   = new FakeWriter();
            var writer = new BufferedClientStreamWriter <string>(fake, 2);
            var task1  = writer.WriteAsync("1");
            var task2  = writer.WriteAsync("2");
            var task3  = writer.TryWriteAsync("3");

            Assert.Null(task3);         // Couldn't write.

            fake.CompleteCurrentTask(); // Message 1
            WaitForSpace(writer);

            // Now the buffer is smaller, we can write again.
            var task4 = writer.TryWriteAsync("4");

            Assert.NotNull(task4);
            // Try to write completion, will fail as buffer is full.
            var completionTask1 = writer.TryWriteCompleteAsync();

            Assert.Null(completionTask1);

            fake.CompleteCurrentTask(); // Message 2
            WaitForSpace(writer);

            // Now the buffer is smaller, we can write completion.
            var completionTask2 = writer.TryWriteCompleteAsync();

            Assert.NotNull(completionTask2);

            fake.CompleteCurrentTask(); // Message 4
            fake.CompleteCurrentTask(); // Completion

            AssertCompletedWithStatus(task1, TaskStatus.RanToCompletion);
            AssertCompletedWithStatus(task2, TaskStatus.RanToCompletion);
            AssertCompletedWithStatus(task4, TaskStatus.RanToCompletion);
            AssertCompletedWithStatus(completionTask2, TaskStatus.RanToCompletion);

            fake.AssertMessages("1", "2", "4");
            fake.AssertCompleted();
        }
Пример #23
0
        public void FaultedWriteFailsFutureTasks()
        {
            var fake   = new FakeWriter();
            var writer = new BufferedClientStreamWriter <string>(fake, 5);
            var task1  = writer.WriteAsync("1");

            // Server fails first message
            var exception = new Exception("Bang");

            fake.FailCurrentTask(exception);

            // Subsequent calls to Write and Complete fail
            var task2          = writer.WriteAsync("2");
            var task3          = writer.WriteAsync("3");
            var completionTask = writer.WriteCompleteAsync();

            foreach (var task in new[] { task1, task2, task3, completionTask })
            {
                AssertCompletedWithStatus(task, TaskStatus.Faulted);
                Assert.Same(exception, task.Exception.InnerExceptions[0]);
            }
        }
Пример #24
0
        public void WriteBeyondBuffer()
        {
            var fake   = new FakeWriter();
            var writer = new BufferedClientStreamWriter <string>(fake, 2);
            var task1  = writer.WriteAsync("1");
            var task2  = writer.WriteAsync("2");

            // The (object) cast is because to make xUnit understand that the call itself should throw;
            // we don't return a failed task.
            Assert.Throws <InvalidOperationException>(() => (object)writer.WriteAsync("3"));

            fake.CompleteCurrentTask(); // Message 1
            WaitForSpace(writer);

            // Now the buffer is smaller, we can write again.
            var task4 = writer.WriteAsync("4");

            // Completion fails, no space in buffer
            Assert.Throws <InvalidOperationException>(() => (object)writer.WriteCompleteAsync());

            fake.CompleteCurrentTask(); // Message 2
            WaitForSpace(writer);
            // Completion succeeds, there is now space in the buffer.
            var completionTask = writer.WriteCompleteAsync();

            fake.CompleteCurrentTask(); // Message 4
            fake.CompleteCurrentTask(); // Completion

            AssertCompletedWithStatus(task1, TaskStatus.RanToCompletion);
            AssertCompletedWithStatus(task2, TaskStatus.RanToCompletion);
            AssertCompletedWithStatus(task4, TaskStatus.RanToCompletion);
            AssertCompletedWithStatus(completionTask, TaskStatus.RanToCompletion);

            fake.AssertMessages("1", "2", "4");
            fake.AssertCompleted();
        }
Пример #25
0
        public void WriteOptions()
        {
            var options1 = new WriteOptions();
            var options2 = new WriteOptions();

            var fake   = new FakeWriter();
            var writer = new BufferedClientStreamWriter <string>(fake, 5);

            writer.WriteAsync("1");
            writer.WriteAsync("2", options1);
            writer.WriteAsync("3");
            writer.WriteAsync("4", options2);

            fake.CompleteCurrentTask();
            fake.CompleteCurrentTask();
            fake.CompleteCurrentTask();
            fake.CompleteCurrentTask();
            fake.AssertOptions(null, options1, options1, options2);

            // This should pick up options2 from the writer, not from the queue.
            writer.WriteAsync("5");
            fake.CompleteCurrentTask();
            fake.AssertOptions(null, options1, options1, options2, options2);
        }
 public void SetupTest()
 {
     writer = new FakeWriter();
     cmdlet = new AddAzureCacheWorkerRoleCommand();
     cmdlet.Writer = writer;
 }
 public void SetupTest()
 {
     writer = new FakeWriter();
     cmdlet = new NewAzureServiceProjectCommand();
     cmdlet.Writer = writer;
 }
 public void SetupTest()
 {
     writer = new FakeWriter();
     cmdlet = new EnableAzureMemcacheRoleCommand();
     cmdlet.Writer = writer;
 }
Пример #29
0
 public DeleteTableBuilderTests()
 {
     _writer = Setup.FakeWriter();
     _sut    = new DeleteTableBuilder("Post", _writer);
 }