public void StartNumberAssignment_ParticpantSelector1_Test() { string dbFilename = TestUtilities.CreateWorkingFileFrom(testContextInstance.TestDeploymentDir, @"1554MSBS.mdb"); RaceHorologyLib.Database db = new RaceHorologyLib.Database(); db.Connect(dbFilename); AppDataModel model = new AppDataModel(db); var race = model.GetRace(0); StartNumberAssignment sna = new StartNumberAssignment(); sna.LoadFromRace(race); ParticipantSelector ps = new ParticipantSelector(race, sna, "Class"); foreach (var g in ps.Group2Participant) { foreach (var rp in g.Value) { Assert.AreEqual(rp.Class, g.Key); } } ParticipantSelector ps2 = new ParticipantSelector(race, sna, "Sex"); foreach (var g in ps2.Group2Participant) { foreach (var rp in g.Value) { Assert.AreEqual(rp.Sex, g.Key); } } ParticipantSelector ps3 = new ParticipantSelector(race, sna, null); foreach (var g in ps3.Group2Participant) { Assert.AreEqual("", g.Key); Assert.AreEqual(race.GetParticipants().Count, g.Value.Count); } ps3.GroupProperty = "Sex"; foreach (var g in ps3.Group2Participant) { foreach (var rp in g.Value) { Assert.AreEqual(rp.Sex, g.Key); } } // TEST: Iterating through groups Assert.AreEqual(((ParticipantCategory)ps2.CurrentGroup).Name, 'W'); Assert.IsTrue(ps2.SwitchToNextGroup()); Assert.AreEqual(((ParticipantCategory)ps2.CurrentGroup).Name, 'M'); Assert.IsFalse(ps2.SwitchToNextGroup()); Assert.IsNull(ps2.CurrentGroup); }
public void StartNumberAssignment_ParticpantSelector3_AssignmentTest_NoPoints() { TestDataGenerator testData = new TestDataGenerator(); var participants = testData.createRaceParticipants(20); // Point distribution: // 1..10 increasing, // 11..15 equal 9999.9 // = no points // 16..20 equal -1 // = no points for (int i = 0; i < participants.Count; i++) { if (i < 10) { participants[i].Points = (double)(i + 1); } else if (i < 16) { participants[i].Points = 9999.9; } else if (i < 20) { participants[i].Points = -1.0; } } // Ascending { StartNumberAssignment sna = new StartNumberAssignment(); ParticipantSelector ps = new ParticipantSelector(participants[0].Race, sna, null); ps.AnzahlVerlosung = 20; ps.AssignParticipants(participants); // Check: foreach (var a in sna.ParticipantList) { int id = int.Parse(a.Participant.Id); if (id <= 10) { Assert.IsTrue(a.StartNumber <= 10); } else if (id <= 20) { Assert.IsTrue(10 < a.StartNumber && a.StartNumber <= 20); } } } }
public void Init(AppDataModel dm, Race race, TabControl parent, TabItem thisTabItem) { _dm = dm; _race = race; ucSaveOrReset.Init("Startnummerzuweisungen", parent, thisTabItem, existingChanges, saveChanges, resetChanges); _snaWorkspace = new StartNumberAssignment(); _snaWorkspace.ParticipantList.CollectionChanged += OnWorkspaceChanged; _snaWorkspace.NextStartnumberChanged += OnNextStartnumberChanged; _rpSelector = new ParticipantSelector(_race, _snaWorkspace); _rpSelector.CurrentGroupChanged += OnCurrentGroupChangedHandler; _rpSelector.GroupingChanged += OnGroupingChangedHandler; cmbDirection.Items.Clear(); cmbDirection.Items.Add(new CBItem { Text = "Aufsteigend", Value = new ParticipantSelector.PointsComparerAsc() }); cmbDirection.Items.Add(new CBItem { Text = "Absteigend", Value = new ParticipantSelector.PointsComparerDesc() }); cmbDirection.SelectedIndex = 0; _startNUmberAssignmentFilter = new CollectionViewSource() { Source = _snaWorkspace.ParticipantList }; _startNUmberAssignmentFilter.IsLiveFilteringRequested = true; _startNUmberAssignmentFilter.LiveFilteringProperties.Add("StartNumber"); chkShowEmptyStartNumbers_Click(null, null); // Initially setup the filter dgStartList.ItemsSource = _startNUmberAssignmentFilter.View; _participantFilter = new CollectionViewSource() { Source = _race.GetParticipants() }; _participantFilter.Filter += new FilterEventHandler(delegate(object s, FilterEventArgs ea) { RaceParticipant rr = (RaceParticipant)ea.Item; ea.Accepted = !_snaWorkspace.IsAssigned(rr); }); dgParticipants.ItemsSource = _participantFilter.View; //RaceUC.EnableOrDisableColumns(_race, dgStartList); IsVisibleChanged += StartNumbersUC_IsVisibleChanged; }
public void StartNumberAssignment_ParticpantSelector2_Test() { string dbFilename = TestUtilities.CreateWorkingFileFrom(testContextInstance.TestDeploymentDir, @"1554MSBS.mdb"); RaceHorologyLib.Database db = new RaceHorologyLib.Database(); db.Connect(dbFilename); AppDataModel model = new AppDataModel(db); var race = model.GetRace(0); StartNumberAssignment sna = new StartNumberAssignment(); sna.LoadFromRace(race); sna.DeleteAll(); ParticipantSelector ps = new ParticipantSelector(race, sna, "Class"); Assert.AreEqual(ps.CurrentGroup.ToString(), "U14 weiblich Jg. 07"); ps.AssignParticipants(); Assert.IsTrue(ps.SwitchToNextGroup()); Assert.AreEqual(ps.CurrentGroup.ToString(), "U14 weiblich Jg. 06"); ps.AssignParticipants(); Assert.IsTrue(ps.SwitchToNextGroup()); Assert.AreEqual(ps.CurrentGroup.ToString(), "U16 weiblich Jg. 05/04"); ps.AssignParticipants(); Assert.IsTrue(ps.SwitchToNextGroup()); Assert.AreEqual(ps.CurrentGroup.ToString(), "U14 männlich Jg. 07"); ps.AssignParticipants(); Assert.IsTrue(ps.SwitchToNextGroup()); Assert.AreEqual(ps.CurrentGroup.ToString(), "U14 männlich Jg. 06"); ps.AssignParticipants(); Assert.IsTrue(ps.SwitchToNextGroup()); Assert.AreEqual(ps.CurrentGroup.ToString(), "U16 männlich Jg. 05/04"); ps.AssignParticipants(); Assert.IsFalse(ps.SwitchToNextGroup()); Assert.IsNull(ps.CurrentGroup); // Check once more Assert.IsFalse(ps.SwitchToNextGroup()); Assert.IsNull(ps.CurrentGroup); }
public void StartNumberAssignment_ErrorCase_UnassignedClass() { TestDataGenerator tg = new TestDataGenerator(); tg.createCatsClassesGroups(); var participants = tg.Model.GetRace(0).GetParticipants(); tg.createRaceParticipant(); tg.createRaceParticipant(cat: tg.findCat('M'), cla: tg.findClass("2M (2010)")); tg.createRaceParticipant(cat: tg.findCat('W'), cla: tg.findClass("2W (2010)")); StartNumberAssignment sna = new StartNumberAssignment(); ParticipantSelector ps = new ParticipantSelector(participants[0].Race, sna, null); Assert.IsTrue(ps.SwitchToFirstGroup()); Assert.AreEqual("", ps.CurrentGroup); Assert.IsFalse(ps.SwitchToNextGroup()); ps.GroupProperty = "Participant.Class"; Assert.IsTrue(ps.SwitchToFirstGroup()); Assert.AreEqual(tg.findClass("2M (2010)"), ps.CurrentGroup); Assert.IsTrue(ps.SwitchToNextGroup()); Assert.AreEqual(tg.findClass("2W (2010)"), ps.CurrentGroup); Assert.IsTrue(ps.SwitchToNextGroup()); Assert.AreEqual("", ps.CurrentGroup); Assert.IsFalse(ps.SwitchToNextGroup()); ps.GroupProperty = "Group"; Assert.IsTrue(ps.SwitchToFirstGroup()); Assert.AreEqual(tg.findGroup("2M"), ps.CurrentGroup); Assert.IsTrue(ps.SwitchToNextGroup()); Assert.AreEqual(tg.findGroup("2W"), ps.CurrentGroup); Assert.IsTrue(ps.SwitchToNextGroup()); Assert.AreEqual("", ps.CurrentGroup); Assert.IsFalse(ps.SwitchToNextGroup()); }
public void StartNumberAssignment_ParticpantSelector3_AssignmentTest_100() { TestDataGenerator testData = new TestDataGenerator(); var participants = testData.createRaceParticipants(100); // Point distribution based on Id: // 1..80 increasing, // 81..90: 999.9, // 91..100 equal 9999.9 for (int i = 0; i < participants.Count; i++) { if (i < 80) { participants[i].Points = (double)(i + 1); } else if (i < 90) { participants[i].Points = 999.9; } else if (i < 100) { participants[i].Points = 9999.9; } } // Ascending { StartNumberAssignment sna = new StartNumberAssignment(); ParticipantSelector ps = new ParticipantSelector(participants[0].Race, sna, null); ps.AnzahlVerlosung = 10; ps.AssignParticipants(participants); // Check: foreach (var a in sna.ParticipantList) { int id = int.Parse(a.Participant.Id); if (id <= 10) { Assert.IsTrue(a.StartNumber <= 10); } else if (id <= 80) { Assert.IsTrue(a.StartNumber == id); } else if (id <= 90) { Assert.IsTrue(80 < a.StartNumber && a.StartNumber <= 90); } else if (id <= 100) { Assert.IsTrue(90 < a.StartNumber && a.StartNumber <= 100); } } } // Descending { StartNumberAssignment sna = new StartNumberAssignment(); ParticipantSelector ps = new ParticipantSelector(participants[0].Race, sna, null); ps.AnzahlVerlosung = 10; ps.Sorting = new ParticipantSelector.PointsComparerDesc(); ps.AssignParticipants(participants); // Check: foreach (var a in sna.ParticipantList) { int id = int.Parse(a.Participant.Id); if (id <= 10) { Assert.IsTrue(a.StartNumber == 90 - id + 1); } else if (id <= 80) { Assert.IsTrue(a.StartNumber == 90 - id + 1); } else if (id <= 90) { Assert.IsTrue(1 <= a.StartNumber && a.StartNumber <= 10); // 1..10 } else if (id <= 100) { Assert.IsTrue(90 < a.StartNumber && a.StartNumber <= 100); } } } }