public void Can_get_time_of_day_state_for_current_real_world_time_middle_time()
        {
            // Arrange
            var manager = new TimePeriodManager(this.CreateStates());
            var time = new DateTime(2015, 8, 2, 12, 0, 0);

            // Act
            ITimePeriod state = manager.GetTimeOfDayState(time);

            // Assert
            Assert.AreEqual(12, state.StateStartTime.Hour);
            Assert.AreEqual(0, state.StateStartTime.Minute);
        }
        /// <summary>
        /// Looks at a supplied time of day and figures out what TimeOfDayState needs to be returned that matches the time of day.
        /// </summary>
        /// <param name="currentTime">The current time.</param>
        /// <returns>
        /// Returns an instance of ITimePeriod that represents the current time of day in the game.
        /// </returns>
        public ITimePeriod GetTimeOfDayState(DateTime?currentTime = null)
        {
            ITimeOfDay time = TimePeriodManager._factory(currentTime.Value.Hour, currentTime.Value.Minute, _hoursPerDay);

            return(this.GetTimePeriodForDay(time));
        }
 public void Ctor_throws_argument_null_exception_when_given_null()
 {
     // Act
     var manager = new TimePeriodManager(null);
 }
        public void Can_get_time_of_day_state_when_states_are_out_of_order()
        {
            // Arrange
            var manager = new TimePeriodManager(this.CreateStates());
            var time = new DateTime(2015, 8, 2, 16, 0, 0);

            // Act
            ITimePeriod state = manager.GetTimeOfDayState(time);

            // Assert
            Assert.AreEqual(15, state.StateStartTime.Hour);
            Assert.AreEqual(0, state.StateStartTime.Minute);
        }