public Conference GreedyBestFitApproach(IEnumerable <Talk> talks)
        {
            talks = talks.OrderBy(talk => talk);

            Conference conference = new Conference(new TrackTwoSessionsFactory());

            foreach (Talk talk in talks)
            {
                Session bestSession = GetBestSessionBestFitApproach(conference.EnumerateSessions(), talk);

                if (bestSession == null)
                {
                    conference.CreateNewTrack();
                    bestSession = GetBestSessionBestFitApproach(conference.EnumerateSessions(), talk);
                }

                if (bestSession == null)
                {
                    throw new ArgumentException(string.Format("ErrorUnscheduledEvent", talk));
                }

                bestSession.AcceptTalk(talk);
            }
            return(conference);
        }
Esempio n. 2
0
        public void AcceptEvent_ExceptionThrown_Test()
        {
            Session session = new Session(sessionStartTime, sessionEndTime);
            Talk    talk    = new Talk(string.Empty, new Duration(120, new Minute()));

            session.AcceptTalk(talk);

            Assert.Fail();
        }
Esempio n. 3
0
        public void UnusedTime_Test()
        {
            Session session = new Session(sessionStartTime, sessionEndTime);
            Talk    talk    = new Talk(string.Empty, new Duration(30, new Minute()));

            session.AcceptTalk(talk);
            TimeSpan unusedTime = session.TimeLeft();

            Assert.IsTrue(unusedTime.TotalMinutes == 30);
        }
Esempio n. 4
0
        public void AcceptEvent_EventAccepted_Test()
        {
            Session session = new Session(sessionStartTime, sessionEndTime);
            Talk    talk    = new Talk(string.Empty, new Duration(new Lightning()));

            session.AcceptTalk(talk);
            IList <ScheduledTalk> allEvents = new List <ScheduledTalk>(session.EnumerateEvents());

            Assert.IsTrue(allEvents.Any(e => e.IsScheduledFor(talk)));
        }