public IResult RunTest() {
            XMLResult result = new XMLResult();
            
            if (!Common.IsFileAvailable(EventFilePath)) {
                result.Errors.Add(string.Format("File not found: [{0}]", EventFilePath));
            }
            if (!Common.IsFileAvailable(ExposureFilePath)) {
                result.Errors.Add(string.Format("File not found: [{0}]", ExposureFilePath));
            }

            if (!result.HasErrors) {
                XmlDocument eventXMLDoc = new XmlDocument();
                XmlDocument exposureXMLDoc = new XmlDocument();

                eventXMLDoc.Load(EventFilePath);        
                exposureXMLDoc.Load(ExposureFilePath);                        
               
                XmlNodeList eventNodeList = eventXMLDoc.SelectNodes("/events/event");

                EventCompaniesList eventCompaniesCollection = new EventCompaniesList();

                foreach (XmlNode eventNode in eventNodeList) {                    
                    EventCompanies eventCompanies = new EventCompanies(GetNodeIdValue(eventNode));
                    
                    XmlNodeList eventRegionList = eventNode.SelectNodes("region");
                    foreach (XmlNode regionNode in eventRegionList) {
                        string region = regionNode.InnerText;

                        //get all the matching regions in the Exposure file for each region in the in the Events file
                        XmlNodeList matchingRegions = exposureXMLDoc.SelectNodes(string.Format("descendant::company[region='{0}']", region));
                        foreach (XmlNode matchingRegion in matchingRegions) {
                            //get the company id belonging to the matching region
                            string companyId = matchingRegion.FirstChild.InnerText;
                            if (!eventCompanies.CompanyIds.Contains(companyId)) {
                                eventCompanies.CompanyIds.Add(companyId);
                            }
                        }
                    }

                    if (eventCompanies.CompanyIds.Count > 0) {
                        eventCompaniesCollection.Add(eventCompanies);
                    }
                }

                result.SetResult(FormatTestOutput(eventCompaniesCollection));
            }

            return result;
        }
        private string FormatTestOutput(EventCompaniesList eventCompaniesCollection) {
            StringBuilder result = new StringBuilder();

            foreach (EventCompanies eventCompanies in eventCompaniesCollection.OrderByDescending(ec => ec.EventId)) {
                result.Append(string.Format("{0}", eventCompanies.EventId));
                
                eventCompanies.CompanyIds.Sort();
                foreach (string companyid in eventCompanies.CompanyIds) {
                    result.Append(string.Format(" {0}", companyid));
                }
                result.Append("\n");
            }

            return result.ToString();
        }