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);
        }
Пример #6
0
 public GRMRepository(DistributionPartnerDataMapper distributionPartnerDataMapper, MusicContractDataMapper musicContractDataMapper)
 {
     _musicContracts       = musicContractDataMapper.GetData() ?? null;
     _distributionPartners = distributionPartnerDataMapper.GetData() ?? null;
 }
Пример #7
0
        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);
        }