public void CreateHerbivores_WillFailIfPositionAlreadyTaken()
        {
            var given = new List <Event>
            {
                new CreateBoardAccepted(20, 20, new List <Herbivore>(), new List <Carnivore>(), Message.CausationId,
                                        Message.CorrelationId, Message.CreatedOn),
                new CreateHerbivoreAccepted("testivore", 2, 3, Message)
            };

            var when = new CreateHerbivore("testivore", 2, 3, "woop2");

            Execute(given, when, typeof(Surface.PositionAlreadyTakenException), events => new Surface(events, new Random()));
        }
        public void CreateHerbivores_HaveRightLocation()
        {
            var given = new List <Event>
            {
                new CreateBoardAccepted(20, 20, new List <Herbivore>(), new List <Carnivore>(), Message.CausationId,
                                        Message.CorrelationId, Message.CreatedOn)
            };

            var when = new CreateHerbivore("testivore", 2, 3, "woop2");
            var then = new List <Event>
            {
                new CreateHerbivoreAccepted("testivore", 2, 3, Message)
            };

            var results = Execute(given, when, then, events => new Surface(events, new Random()));

            var carnivores = results.Select(r => (CreateHerbivoreAccepted)r).ToList();

            foreach (var carnivore in carnivores)
            {
                Assert.Single(carnivores, c => c.X == carnivore.X && c.Y == carnivore.Y);
            }
        }