public void TestLoadStreamWithInvalidDate() { //arrange MusicContractDataMapper mapper = new MusicContractDataMapper(); //act using (Stream stream = TestHelper.GenerateStreamFromString("Artist|Title|Usages|1st Mar 2017|99 Irrelevembuary 2017")) { List <string> loadErrors = new List <string>(); mapper.LoadData(stream, false, out loadErrors); stream.Close(); } //assert }
public void TestCanLoadStream() { //arrange MusicContractDataMapper mapper = new MusicContractDataMapper(); //act using (Stream stream = TestHelper.GenerateStreamFromString("Artist|Title|Usages|01 March 2017|28 February 2017")) { List <string> loadErrors = new List <string>(); mapper.LoadData(stream, false, out loadErrors); stream.Close(); } //assert Assert.IsTrue(mapper.GetData().Count == 1); Assert.IsInstanceOfType(mapper.GetData(), typeof(List <MusicContract>)); Assert.AreEqual(mapper.GetData()[0].Artist, "Artist"); }
//Attempt to load the data into the mapper with an invalid number of fields/columns //in this test, there is no endDate field public void TestLoadStreamWithInvalidNumberOfFields() { //arrange MusicContractDataMapper mapper = new MusicContractDataMapper(); //act using (Stream stream = TestHelper.GenerateStreamFromString("Artist|Title|Usages|01 March 2017")) { try { List <string> loadErrors = new List <string>(); mapper.LoadData(stream, false, out loadErrors); stream.Close(); } finally { stream.Close(); } } }
public void TestCanLoadStreamMultipleRows() { //arrange var testString = "Monkey Claw|Iron Horse|digital download, streaming|1st June 2012|" + Environment.NewLine + "Monkey Claw|Motor Mouth|digital download, streaming|1st Mar 2011|" + Environment.NewLine + "Monkey Claw|Christmas Special|streaming|25st Dec 2012|31st Dec 2012"; //despite having an incorrect date (25st Dec 2012). The parser should correctly determine this to be 25th December MusicContractDataMapper mapper = new MusicContractDataMapper(); //act using (Stream stream = TestHelper.GenerateStreamFromString(testString)) { List <string> loadErrors = new List <string>(); mapper.LoadData(stream, false, out loadErrors); stream.Close(); } //assert Assert.IsTrue(mapper.GetData().Count == 3); }
//in this test, there is no endDate field public void TestLoadStreamWithEmptyEndDate() { //arrange MusicContractDataMapper mapper = new MusicContractDataMapper(); //act using (Stream stream = TestHelper.GenerateStreamFromString("Artist|Title|Usages|01 March 2017|")) { try { List <string> loadErrors = new List <string>(); mapper.LoadData(stream, false, out loadErrors); stream.Close(); } finally { stream.Close(); } } //assert Assert.IsNull(mapper.GetData()[0].EndDate); }
public GRMRepository(DistributionPartnerDataMapper distributionPartnerDataMapper, MusicContractDataMapper musicContractDataMapper) { _musicContracts = musicContractDataMapper.GetData() ?? null; _distributionPartners = distributionPartnerDataMapper.GetData() ?? null; }
static void Main(string[] args) { Console.WriteLine("GRM Developer Test." + Environment.NewLine + "Author: Shashank Kumar"); //load data files into data mappers DistributionPartnerDataMapper distributionPartnerDataMapper = new DistributionPartnerDataMapper(); MusicContractDataMapper musicContractDataMapper = new MusicContractDataMapper(); List <string> streamErrors = new List <string>(); Console.WriteLine("Loading data... "); try { //Load input data file into memory. using (FileStream fs = File.OpenRead(musicContractDataFilePath)) { //skip the headers in the first line musicContractDataMapper.LoadData(fs, skipHeader, out streamErrors); if (streamErrors.Any()) { Console.WriteLine("Data problems reading file '{0}':", musicContractDataFilePath); streamErrors.ForEach(Console.WriteLine); } } streamErrors.Clear(); using (FileStream fs = File.OpenRead(distributionPartnerDataFilePath)) { distributionPartnerDataMapper.LoadData(fs, skipHeader, out streamErrors); if (streamErrors.Any()) { Console.WriteLine("Data problems reading file '{0}':", distributionPartnerDataFilePath); streamErrors.ForEach(Console.WriteLine); } } Console.WriteLine("Done."); var repo = new GRMRepository(distributionPartnerDataMapper, musicContractDataMapper); //listen for query. Console.WriteLine("Please enter your query, Enter Q to quit:"); var query = Console.ReadLine(); while (query != "Q") { //parse query, first space indicates separator int pos = query.IndexOf(' '); if (pos > 0) { string distributor = query.Substring(0, pos).Trim(); string dateStr = query.Substring(pos).Trim(); //Console.WriteLine("Query: Partner = {0}, Date = {1}", distributor, ParseDate(dateStr).ToString()); var results = repo.Query(distributor, ParseDate(dateStr)); results.ForEach(Console.WriteLine); Console.WriteLine("Query completed. Enter another query, or type Q to exit."); query = Console.ReadLine(); } else { Console.WriteLine("Invalid Query. Please try again."); query = Console.ReadLine(); } } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadLine(); Environment.Exit(-1); } Environment.Exit(0); }