static void Main(string[] args) { Console.WriteLine("please select an implementation:"); Console.WriteLine("1) Round Robin"); Console.WriteLine("2) Write Scheduler"); int selection = 0; Console.Write("Select option an: "); if (int.TryParse(Console.ReadLine(), out selection)) { if (selection == 1) { Console.WriteLine("Starting round robin scheduler\n"); RoundRobinScheduler rr = new RoundRobinScheduler(); rr.doRoundRobin(); } else if (selection == 2) { Console.WriteLine("Starting write scheduler\n"); Schedulers.WriteScheduler ws = new Schedulers.WriteScheduler(); ws.RunWriteScheduler(); } else { Console.WriteLine("Invalid input"); } } else { Console.WriteLine("Invalid input"); } Console.ReadLine(); }
public void RemoveNonExistantClient() { var s = new RoundRobinScheduler<int> (); s.Add (0); Assert.IsFalse (s.Empty); Assert.Throws<InvalidOperationException> (() => s.Remove (1)); }
public void RemoveDuring() { var s = new RoundRobinScheduler<int> (); s.Add (0); s.Add (1); s.Add (2); Assert.AreEqual (0, s.Next ()); Assert.AreEqual (1, s.Next ()); Assert.AreEqual (2, s.Next ()); Assert.AreEqual (0, s.Next ()); s.Remove (1); Assert.IsFalse (s.Empty); Assert.AreEqual (2, s.Next ()); Assert.AreEqual (0, s.Next ()); Assert.AreEqual (2, s.Next ()); s.Remove (0); Assert.IsFalse (s.Empty); Assert.AreEqual (2, s.Next ()); Assert.AreEqual (2, s.Next ()); Assert.AreEqual (2, s.Next ()); s.Remove (2); Assert.IsTrue (s.Empty); Assert.Throws<InvalidOperationException> (() => s.Next ()); Assert.Throws<InvalidOperationException> (() => s.Remove (0)); }
public void Empty() { var s = new RoundRobinScheduler<int> (); Assert.IsTrue (s.Empty); Assert.Throws<InvalidOperationException> (() => s.Next ()); Assert.Throws<InvalidOperationException> (() => s.Remove (0)); }
public void RemoveDuring() { var s = new RoundRobinScheduler <int> (); s.Add(0); s.Add(1); s.Add(2); Assert.AreEqual(0, s.Next()); Assert.AreEqual(1, s.Next()); Assert.AreEqual(2, s.Next()); Assert.AreEqual(0, s.Next()); s.Remove(1); Assert.IsFalse(s.Empty); Assert.AreEqual(2, s.Next()); Assert.AreEqual(0, s.Next()); Assert.AreEqual(2, s.Next()); s.Remove(0); Assert.IsFalse(s.Empty); Assert.AreEqual(2, s.Next()); Assert.AreEqual(2, s.Next()); Assert.AreEqual(2, s.Next()); s.Remove(2); Assert.IsTrue(s.Empty); Assert.Throws <InvalidOperationException> (() => s.Next()); Assert.Throws <InvalidOperationException> (() => s.Remove(0)); }
public void Empty() { var s = new RoundRobinScheduler <int> (); Assert.IsTrue(s.Empty); Assert.Throws <InvalidOperationException> (() => s.Next()); Assert.Throws <InvalidOperationException> (() => s.Remove(0)); }
public void AddExistingClient() { var s = new RoundRobinScheduler <int> (); s.Add(0); Assert.IsFalse(s.Empty); Assert.Throws <InvalidOperationException> (() => s.Add(0)); }
public void GenerateSchedule_WhenTeamsOrLeagueNull_ThrowsInvalidOperationException() { //ARRANGE RoundRobinScheduler rrs = new RoundRobinScheduler(); //ACT rrs.GenerateSchedule(); //ASSERT handled by ExpectedException }
public void GenerateSchedule_ScheduleMustCoverAllPairs() { //ARRANGE int teamsNumber = 16; //prepare checklist //false - not played //already played matches will be marked as true bool[][] checkList = new bool[teamsNumber][]; for (int i = 0; i < teamsNumber; i++) { checkList[i] = new bool[teamsNumber]; } //create teams List <ITeam> teams = this.CreateBlankTeams(teamsNumber); //invoke scheduler RoundRobinScheduler rrs = this.InvokeScheduler(teams); //ACT rrs.GenerateSchedule(); List <IMatch> matches = rrs.GetSchedule(); //ASSERT //loop through each match and mark him as played (true) matches.ForEach(x => checkList[(int)x.HomeTeam.Id - 1][(int)x.AwayTeam.Id - 1] = true); //check if all of the matches has been played //however any team can not play itself for (int i = 0; i < teamsNumber; i++) { for (int j = 0; j < teamsNumber; j++) { bool diagonal = (i == j); bool matchPlayed = checkList[i][j]; //team cannot play itself if (diagonal && matchPlayed) { Assert.Fail(); } //all of the matches must be played, if not, then fail if (!diagonal && !matchPlayed) { Assert.Fail(); } } } //if not failed, then ok }
public bool GenerateSchedule() { Leagues newLeagueEntity = new Leagues { Name = this.NewLeagueName }; DateTime yearOfStart = new DateTime(this.NewLeagueYearOfStart, 1, 1); LeagueEntityToLibraryAdapter newLeagueAdapter = new LeagueEntityToLibraryAdapter(); newLeagueAdapter.Adapt(newLeagueEntity); RoundRobinScheduler scheduler = new RoundRobinScheduler(); scheduler.LoadLeague(newLeagueAdapter); List <ITeam> listOfTeamsAdapter = new List <ITeam>(); foreach (Teams team in this.TeamsForNewLeague) { TeamEntityToLibraryAdapter teamAdapter = new TeamEntityToLibraryAdapter(); teamAdapter.Adapt(team); listOfTeamsAdapter.Add(teamAdapter); } scheduler.LoadTeams(listOfTeamsAdapter); scheduler.YearOfStart = yearOfStart; scheduler.GenerateSchedule(); List <IMatch> listOfMatchesFromAlgorithm = scheduler.GetSchedule(); List <Matches> listOfMatchesEntities = new List <Matches>(); foreach (IMatch match in listOfMatchesFromAlgorithm) { Matches m = new Matches() { TimeOfPlay = match.TimeOfPlay, HomeTeamId = match.HomeTeam.Id, AwayTeamId = match.AwayTeam.Id, }; Context.Matches.Add(m); } Context.Leagues.Add(newLeagueEntity); Context.SaveChanges(); return(true); }
public void LoadTeams_WhenTeamsQuantityLessThanTwo_ReturnsFalse() { //try to load one team into the scheduler //ARRANGE List <ITeam> lt = this.CreateBlankTeams(1); RoundRobinScheduler rrs = new RoundRobinScheduler(); //ACT bool loaded = rrs.LoadTeams(lt); //ASSERT Assert.IsFalse(loaded); }
public void LoadTeams_WhenTeamsNull_ReturnsFalse() { //try to load null as teams into the scheduler; //ARRANGE List <ITeam> teams = null; RoundRobinScheduler rrs = new RoundRobinScheduler(); //ACT bool loaded = rrs.LoadTeams(teams); //ASSERT Assert.IsFalse(loaded); }
public void LoadTeams_WhenTeamsCountNotEven_ReturnsFalse() { //try to load three (odd number) teams into the scheduler //ARRANGE List <ITeam> teams = this.CreateBlankTeams(3); RoundRobinScheduler rrs = new RoundRobinScheduler(); //ACT bool loaded = rrs.LoadTeams(teams); //ASSERT Assert.IsFalse(loaded); }
/// <summary> /// Invokes scheduler at year 2017. /// </summary> /// <param name="teams">Teams to be put into the scheduler.</param> /// <returns></returns> private RoundRobinScheduler InvokeScheduler(List <ITeam> teams) { RoundRobinScheduler rrs = new RoundRobinScheduler(); League league = new League(); rrs.LoadLeague(league); rrs.YearOfStart = new DateTime(2017, 3, 8); rrs.LoadTeams(teams); return(rrs); }
public GameState() { var dto = DateTimeOffset.FromUnixTimeSeconds(int.MaxValue); CurrentTime = dto.DateTime; Messages = new MessageBuffer(DisplayConsts.MessageDisplaySize.Y - 2); Player = new Actor("Bob", (58, 58), new GameTile(CP437Glyph.AtSign, RogueColor.Lime), Direction.North, new PlayerBrain(), ActorRole.Inflirtator, new List <string>()); Player.Inventory.Add(new Item(ItemDefinitions.Watch)); Scheduler = new RoundRobinScheduler <Actor>(); ChangeMap(MapData.Floor38); PlayerVisibilityGrid = new GameGrid <bool>(CurrentMap.Size); }
Core () { servers = new List<Server.Server> (); rpcClients = new Dictionary<Guid, IClient<Request, Response>> (); streamClients = new Dictionary<Guid, IClient<NoMessage, StreamMessage>> (); clientScheduler = new RoundRobinScheduler<IClient<Request, Response>> (); continuations = new List<RequestContinuation> (); streamRequests = new Dictionary<IClient<NoMessage,StreamMessage>,IList<StreamRequest>> (); streamResultCache = new Dictionary<uint, object> (); OneRPCPerUpdate = false; MaxTimePerUpdate = 5000; AdaptiveRateControl = true; BlockingRecv = true; RecvTimeout = 1000; }
public void Single() { var s = new RoundRobinScheduler <int> (); for (int i = 0; i < 5; i++) { s.Add(0); Assert.IsFalse(s.Empty); Assert.AreEqual(0, s.Next()); Assert.AreEqual(0, s.Next()); Assert.AreEqual(0, s.Next()); s.Remove(0); Assert.IsTrue(s.Empty); } }
Core() { servers = new List <Server.Server> (); rpcClients = new Dictionary <Guid, IClient <Request, Response> > (); streamClients = new Dictionary <Guid, IClient <NoMessage, StreamMessage> > (); clientScheduler = new RoundRobinScheduler <IClient <Request, Response> > (); continuations = new List <RequestContinuation> (); streamRequests = new Dictionary <IClient <NoMessage, StreamMessage>, IList <StreamRequest> > (); streamResultCache = new Dictionary <uint, object> (); OneRPCPerUpdate = false; MaxTimePerUpdate = 5000; AdaptiveRateControl = true; BlockingRecv = true; RecvTimeout = 1000; }
public void AddDuring() { var s = new RoundRobinScheduler<int> (); s.Add (0); s.Add (1); Assert.AreEqual (0, s.Next ()); Assert.AreEqual (1, s.Next ()); Assert.AreEqual (0, s.Next ()); Assert.AreEqual (1, s.Next ()); s.Add (2); Assert.AreEqual (0, s.Next ()); Assert.AreEqual (1, s.Next ()); Assert.AreEqual (2, s.Next ()); Assert.AreEqual (0, s.Next ()); Assert.AreEqual (1, s.Next ()); Assert.AreEqual (2, s.Next ()); }
public void AddDuring() { var s = new RoundRobinScheduler <int> (); s.Add(0); s.Add(1); Assert.AreEqual(0, s.Next()); Assert.AreEqual(1, s.Next()); Assert.AreEqual(0, s.Next()); Assert.AreEqual(1, s.Next()); s.Add(2); Assert.AreEqual(0, s.Next()); Assert.AreEqual(1, s.Next()); Assert.AreEqual(2, s.Next()); Assert.AreEqual(0, s.Next()); Assert.AreEqual(1, s.Next()); Assert.AreEqual(2, s.Next()); }
public MainForm() { InitializeComponent(); jobCB.Enabled = true; jobCountTB.Enabled = false; executeButton.Enabled = true; suspendButton.Enabled = false; executeTimeTB.Enabled = false; DefaultJobs.Add(new Job(defaultExecuteTime)); DefaultJobs.Add(new Job(defaultExecuteTime)); Jobs.Add(DefaultJobs[0]); Jobs.Add(DefaultJobs[1]); jobCB.Items.Add("1"); jobCB.Items.Add("2"); jobCountTB.Text = DefaultJobs.Count.ToString(); quantumTB.Text = defaultQuantum.ToString(); scheduler = new RoundRobinScheduler(DefaultJobs, defaultQuantum); scheduler.CurrentJobChanged += () => { currentJobTB.Invoke((Action) delegate { currentJobTB.Text = "Job #" + scheduler.CurrentJob.Id.ToString(); }); }; scheduler.JobsEnded += () => { executeButton.Invoke((Action) delegate { executeButton.Enabled = true; }); suspendButton.Invoke((Action) delegate { suspendButton.Enabled = false; }); statusTB.Invoke((Action) delegate { statusTB.Text = "JOBS ENDED"; }); quantumTB.Invoke((Action) delegate { quantumTB.Enabled = true; }); }; }
public void SimpleCase() { var s = new RoundRobinScheduler <int> (); s.Add(0); s.Add(1); s.Add(2); Assert.IsFalse(s.Empty); for (int i = 0; i < 5; i++) { Assert.AreEqual(0, s.Next()); Assert.AreEqual(1, s.Next()); Assert.AreEqual(2, s.Next()); } s.Remove(0); s.Remove(1); s.Remove(2); Assert.IsTrue(s.Empty); }
public void LoadTeams_WhenTeamsHaveNoDistinctiveIds_ReturnsFalse() { //try to load collection of teams. In the collection two teams have the same id. //ARRANGE //get teams List <ITeam> teams = this.CreateBlankTeams(17); //add one with non distinctive id Team nonDistinctiveIdTeam = new Team { Id = teams.Count - 1 }; teams.Add(nonDistinctiveIdTeam); RoundRobinScheduler rrs = new RoundRobinScheduler(); //ACT bool loaded = rrs.LoadTeams(teams); //ASSERT Assert.IsFalse(loaded); }
public void SimpleCase() { var s = new RoundRobinScheduler<int> (); s.Add (0); s.Add (1); s.Add (2); Assert.IsFalse (s.Empty); for (int i = 0; i < 5; i++) { Assert.AreEqual (0, s.Next ()); Assert.AreEqual (1, s.Next ()); Assert.AreEqual (2, s.Next ()); } s.Remove (0); s.Remove (1); s.Remove (2); Assert.IsTrue (s.Empty); }
public void SetUp() { dbContext = DbContextUtility.CreateMockDb(); testObj = new RoundRobinScheduler(); }
public void Single() { var s = new RoundRobinScheduler<int> (); for (int i = 0; i < 5; i++) { s.Add (0); Assert.IsFalse (s.Empty); Assert.AreEqual (0, s.Next ()); Assert.AreEqual (0, s.Next ()); Assert.AreEqual (0, s.Next ()); s.Remove (0); Assert.IsTrue (s.Empty); } }