Пример #1
0
        public void ShouldChangeToNextPageWhen_N_IsPressed()
        {
            var output = A.Fake <IConsole>();

            A
            .CallTo(() => output.Read())
            .ReturnsNextFromSequence('n', 'x');

            var fileReader = A.Fake <IFileReader>();

            A
            .CallTo(() => fileReader.Read(null))
            .WithAnyArguments()
            .Returns(new Model()
                     .AddRow(new[] { "one" })
                     .AddRow(new[] { "two" }));

            var coordinator = new DisplayCoordinator(fileReader, A.Fake <IFormatter>(), output);

            coordinator.Display("does-not-exist.csv", 1);

            A
            .CallTo(() => output.WriteLine("Page {0} of {1}", A <object[]> .That.IsSameSequenceAs(new [] { 2, 2 })))
            .MustHaveHappened();
        }
Пример #2
0
        public void Should_UseNumberedModel()
        {
            var fileReader = A.Fake <IFileReader>();

            A
            .CallTo(() => fileReader.Read(null))
            .WithAnyArguments()
            .Returns(new Model()
                     .SetHeader(new[] { "header" })
                     .AddRow(new[] { "one" })
                     .AddRow(new[] { "two" }));

            var formatter = new TableFormatter();
            var output    = A.Fake <IConsole>();

            A
            .CallTo(() => output.Read())
            .Returns('x');

            var coordinator = new DisplayCoordinator(fileReader, formatter, output);

            coordinator.Display("file.csv", 42);

            A
            .CallTo(() => output.Write(A <string> .That.StartsWith("No.|header|"), A <object[]> .Ignored))
            .MustHaveHappened();
        }
        public void ShouldChangeToPreviousPageWhen_P_IsPressed()
        {
            var output = A.Fake<IConsole>();
              A
            .CallTo(() => output.Read())
            .ReturnsNextFromSequence('p', 'x');

              var coordinator = new DisplayCoordinator(A.Fake<IFileReader>(), A.Fake<IFormatter>(), output);

              coordinator.Display("file.csv", 42);

              A
            .CallTo(() => output.Read())
            .MustHaveHappened(Repeated.Like(i => i == 2));
        }
Пример #4
0
        public void ShouldExitWhen_X_IsPressed()
        {
            var output = A.Fake <IConsole>();

            A
            .CallTo(() => output.Read())
            .Returns('x');

            var coordinator = new DisplayCoordinator(A.Fake <IFileReader>(), A.Fake <IFormatter>(), output);

            coordinator.Display("file.csv", 42);

            A
            .CallTo(() => output.Read())
            .MustHaveHappened(Repeated.Like(i => i == 1));
        }
Пример #5
0
        public void ShouldChangeToPreviousPageWhen_P_IsPressed()
        {
            var output = A.Fake <IConsole>();

            A
            .CallTo(() => output.Read())
            .ReturnsNextFromSequence('p', 'x');

            var coordinator = new DisplayCoordinator(A.Fake <IFileReader>(), A.Fake <IFormatter>(), output);

            coordinator.Display("file.csv", 42);

            A
            .CallTo(() => output.Read())
            .MustHaveHappened(Repeated.Like(i => i == 2));
        }
Пример #6
0
        public void ShouldReadModelAndFormatTableAndAskForAction()
        {
            var fileReader = A.Fake <IFileReader>();
            var formatter  = A.Fake <IFormatter>();

            A
            .CallTo(() => formatter.Format(null))
            .WithAnyArguments()
            .Returns("Die Tabelle");

            var output = A.Fake <IConsole>();

            A
            .CallTo(() => output.Read())
            .Returns('x');
            var coordinator = new DisplayCoordinator(fileReader, formatter, output);

            coordinator.Display("file.csv", 42);

            A
            .CallTo(() => fileReader.Read("file.csv"))
            .MustHaveHappened();

            A
            .CallTo(() => formatter.Format(null))
            .WithAnyArguments()
            .MustHaveHappened();

            A
            .CallTo(() => output.Write("Die Tabelle", A <object[]> .Ignored))
            .MustHaveHappened(Repeated.Like(i => i == 1));

            A
            .CallTo(() => output.Write(A <string> .That.Contains("N(ext"), A <object[]> .Ignored))
            .MustHaveHappened(Repeated.Like(i => i == 1));

            A
            .CallTo(() => output.Read())
            .MustHaveHappened();
        }
        public void ShouldChangeToNextPageWhen_N_IsPressed()
        {
            var output = A.Fake<IConsole>();
              A
            .CallTo(() => output.Read())
            .ReturnsNextFromSequence('n', 'x');

              var fileReader = A.Fake<IFileReader>();
              A
            .CallTo(() => fileReader.Read(null))
            .WithAnyArguments()
            .Returns(new Model()
                   .AddRow(new[] { "one" })
                   .AddRow(new[] { "two" }));

              var coordinator = new DisplayCoordinator(fileReader, A.Fake<IFormatter>(), output);

              coordinator.Display("does-not-exist.csv", 1);

              A
            .CallTo(() => output.WriteLine("Page {0} of {1}", A<object[]>.That.IsSameSequenceAs(new [] {2, 2})))
            .MustHaveHappened();
        }
Пример #8
0
 static void Main(string[] args)
 {
     var coordinator = new DisplayCoordinator(new CsvFileReader(), new TableFormatter(), new ConsoleConsole());
       coordinator.Display("persons.csv", 3);
 }
        public void ShouldExitWhen_X_IsPressed()
        {
            var output = A.Fake<IConsole>();
              A
            .CallTo(() => output.Read())
            .Returns('x');

              var coordinator = new DisplayCoordinator(A.Fake<IFileReader>(), A.Fake<IFormatter>(), output);

              coordinator.Display("file.csv", 42);

              A
            .CallTo(() => output.Read())
            .MustHaveHappened(Repeated.Like(i => i == 1));
        }
        public void Should_UseNumberedModel()
        {
            var fileReader = A.Fake<IFileReader>();
              A
            .CallTo(() => fileReader.Read(null))
            .WithAnyArguments()
            .Returns(new Model()
                   .SetHeader(new[] { "header" })
                   .AddRow(new[] { "one" })
                   .AddRow(new[] { "two" }));

              var formatter = new TableFormatter();
              var output = A.Fake<IConsole>();
              A
            .CallTo(() => output.Read())
            .Returns('x');

              var coordinator = new DisplayCoordinator(fileReader, formatter, output);

              coordinator.Display("file.csv", 42);

              A
            .CallTo(() => output.Write(A<string>.That.StartsWith("No.|header|"), A<object[]>.Ignored))
            .MustHaveHappened();
        }
        public void ShouldReadModelAndFormatTableAndAskForAction()
        {
            var fileReader = A.Fake<IFileReader>();
              var formatter = A.Fake<IFormatter>();
              A
            .CallTo(() => formatter.Format(null))
            .WithAnyArguments()
            .Returns("Die Tabelle");

              var output = A.Fake<IConsole>();
              A
            .CallTo(() => output.Read())
            .Returns('x');
              var coordinator = new DisplayCoordinator(fileReader, formatter, output);
              coordinator.Display("file.csv", 42);

              A
            .CallTo(() => fileReader.Read("file.csv"))
            .MustHaveHappened();

              A
            .CallTo(() => formatter.Format(null))
            .WithAnyArguments()
            .MustHaveHappened();

              A
            .CallTo(() => output.Write("Die Tabelle", A<object[]>.Ignored))
            .MustHaveHappened(Repeated.Like(i => i == 1));

              A
            .CallTo(() => output.Write(A<string>.That.Contains("N(ext"), A<object[]>.Ignored))
            .MustHaveHappened(Repeated.Like(i => i == 1));

              A
            .CallTo(() => output.Read())
            .MustHaveHappened();
        }