public KeyValuePairCollection Map(string line)
        {
            var data = line.Split(',');

            if (LineIsFromAccidentStats(data))
            {
                //if (VehicleWasLessThanOneYearOldAtTimeOfAccident(data))
                //{
                var manufacturer  = data[22].ToUpper();
                var accidentStats = new AccidentStats {
                    NoOfAccidents = 1
                };
                var mostAccidentProneKvp = new MostAccidentProneKvp(manufacturer, accidentStats);
                return(new KeyValuePairCollection {
                    mostAccidentProneKvp
                });
                //}
            }
            else
            {
                var manufacturer      = data[0].ToUpper();
                var noOfRegistrations = ParseDirtyInt(data[2]);
                var accidentStats     = new AccidentStats {
                    NoOfCarsRegistered = noOfRegistrations
                };
                var mostAccidentProneKvp = new MostAccidentProneKvp(manufacturer, accidentStats);
                return(new KeyValuePairCollection {
                    mostAccidentProneKvp
                });
            }

            return(new KeyValuePairCollection());
        }
示例#2
0
        private AccidentStats ReduceAccidentStats(AccidentStats stats1, AccidentStats stats2)
        {
            var newNoOfAccidents      = stats1.NoOfAccidents + stats2.NoOfAccidents;
            var newNoOfCarsRegistered = stats1.NoOfCarsRegistered + stats2.NoOfCarsRegistered;

            return(new AccidentStats
            {
                NoOfAccidents = newNoOfAccidents,
                NoOfCarsRegistered = newNoOfCarsRegistered,
                RegistrationsPerAccident = (double)newNoOfCarsRegistered / newNoOfAccidents
            });
        }