示例#1
0
文件: Program.cs 项目: acrees/scl
        static void Main(string[] args)
        {
            var timeProvider = new SystemCurrentTimeProvider();

            var repo = new UserRepository();
            var getUser = new CreateOrRetrieveUserByName(repo);

            var output = new StandardOutput();
            var formatter = new PostFormatter(timeProvider);
            var printer = new PrintPosts(formatter, output);
            var printWall = new PrintWall(formatter, output);

            var publisher = new PublishPost(timeProvider);
            var follow = new FollowUser();

            var dispatcher = new CommandDispatcher(
                getUser, printer, publisher, follow, printWall);

            while(true)
            {
                Console.Write("> ");
                var input = Console.ReadLine();
                dispatcher.Run(input.Split(' '));
            }
        }
示例#2
0
        public void PrintsTheFormattedStrings()
        {
            var user = new User("Alice");
            user.Publish(new Post(user, "", DateTime.Now));
            var spy = new OutputSpy();
            var command = new PrintPosts(new PostFormatterDummy("Hello, World!"), spy);

            command.Execute(user);

            Assert.Equal(new[] { "Hello, World!" }, spy.CalledWith);
        }
示例#3
0
        public void CallsThePrintFormatter()
        {
            var user = new User("Alice");
            var post = new Post(user, "Hello!", DateTime.Now);
            user.Publish(post);
            var spy = new PostFormatterSpy();
            var oSpy = new OutputSpy();
            var command = new PrintPosts(spy, oSpy);

            command.Execute(user);

            Assert.Equal(new[] { post }, spy.CalledWith);
        }
示例#4
0
        public void PrintsInDescendingTimestampOrder()
        {
            var user = new User("Alice");
            var posts = new[]
            {
                new Post(user, "Hello, world!", DateTime.MinValue),
                new Post(user, "Bonjour la monde!", DateTime.MinValue.AddYears(1)),
                new Post(user, "Sekai, konnichiwa!", DateTime.MinValue.AddYears(2))
            };
            user.Publish(posts[0]);
            user.Publish(posts[1]);
            user.Publish(posts[2]);

            var spy = new OutputSpy();
            var command = new PrintPosts(new PostFormatterDummy(p => p.Message), spy);

            command.Execute(user);

            Assert.Equal(
                new[] { "Sekai, konnichiwa!", "Bonjour la monde!", "Hello, world!" },
                spy.CalledWith);
        }