Пример #1
0
        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);
        }
Пример #2
0
        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;
        }
Пример #4
0
        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);
        }
Пример #5
0
        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());
        }
Пример #6
0
        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);
                    }
                }
            }
        }