示例#1
0
        public void should_start_the_incubator()
        {
            var request = new IncubationRequest("Warrior", 5);

            var incubator = Substitute.For <IIncubator>();

            _incubatorFactory.Build().Returns(incubator);

            _handler.Handle(request, new CancellationToken());

            _incubatorFactory.Received(1).Build();
            incubator.Received(1).Incubate(Arg.Is <IncubationRequest>(it => it.Type == "Warrior" && it.Quantity == 5));
        }
        public async Task Incubate(IncubationRequest eggs)
        {
            GenerateEggs(eggs);

            await Task.Run(() =>
            {
                var dueDate = DateTime.Now.AddSeconds(SecondsToIncubate);

                var eggsWaitingToHatch = true;
                while (eggsWaitingToHatch)
                {
                    if (DateTime.Now > dueDate)
                    {
                        _mediator.Send(new EggHatchedRequest(eggs.Type, eggs.Quantity));
                        eggsWaitingToHatch = false;
                    }

                    Thread.Sleep(1000);
                }
            });
        }
 private void GenerateEggs(IncubationRequest eggs)
 {
     _eggGenerator.Generate(new EggsDTO(eggs.Type, eggs.Quantity));
 }