public IList <MusicContract> GetAll() { var musicContractFlatLines = _inputData .GetAssetData() .Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries) .Skip(1); var retList = new List <MusicContract>(); foreach (var musicContractFlatLine in musicContractFlatLines) { var data = musicContractFlatLine.Split('|'); if (data.Length != 5) { throw new ArgumentException("Cannot create MusicContract object from invalid data"); } var contract = new MusicContract() { Artist = data[0], Title = data[1], DistributionChannels = data[2].Split(',', StringSplitOptions.RemoveEmptyEntries).Select(dc => dc.Trim()).ToList(), StartDate = _dateParser.Parse(data[3]), EndDate = _dateParser.Parse(data[4]), }; retList.Add(contract); } return(retList); }
public IEnumerable <MusicContract> ParseMusicData(string[] data) { IEnumerable <MusicContract> musicList = data.Skip(1).Select((c, i) => { string[] split = c.Split('|'); var startDate = split[3].RemoveDateTimeChars(); var musicContract = new MusicContract { Artist = split[0], Title = split[1], StartDateStr = startDate, StartDate = DateTime.Parse(startDate) }; var mechanisms = ParserMechanisms(split[2]); musicContract.DistributionMechanism = mechanisms; if (split.Length > 4 && !string.IsNullOrEmpty(split[4].Trim())) { var endDate = split[4].RemoveDateTimeChars(); musicContract.EndDateStr = endDate; musicContract.EndDate = DateTime.Parse(endDate); } return(musicContract); }).ToList(); return(musicList); }
public IEnumerable <MusicContract> GetMusicContracts() { var musicContracts = new List <MusicContract>(); var assembly = Assembly.GetExecutingAssembly(); var resourceName = "GRM.Data.MusicContracts.txt"; using (var stream = assembly.GetManifestResourceStream(resourceName)) if (stream != null) { using (var reader = new StreamReader(stream)) { //This is the header. This is redundant for this test purposes reader.ReadLine(); string s; while ((s = reader.ReadLine()) != null) { var lineStrings = s.Split('|'); var musicContract = new MusicContract { Artist = lineStrings.Length > 0 ? lineStrings[0] : string.Empty, Title = lineStrings.Length > 1 ? lineStrings[1] : string.Empty, Usages = lineStrings.Length > 2 ? lineStrings[2] : string.Empty, StartDate = lineStrings.Length > 3 ? lineStrings[3] : string.Empty, EndDate = lineStrings.Length > 4 ? lineStrings[4] : string.Empty }; musicContracts.Add(musicContract); } } } return(musicContracts); }
public void should_construct_music_contract() { // arrange var result = new MusicContract("artist", "title", new System.Collections.Generic.List <DistributionPartner>(), DateTime.Now, DateTime.Now); // assert Assert.IsNotNull(result); }
private string FormatContract(MusicContract contract, string app) { var mechanismEnum = contract.Usages.First(m => m.Partner == app).DistributionMechanisms.First(); var mechanism = mechanismEnum.GetDisplayName();; string output = $"{contract.Artist}|{contract.Title}|{mechanism}|{contract.StartDateStr}"; if (!string.IsNullOrEmpty(contract.EndDateStr)) { output += $"|{contract.EndDateStr}"; } return(output); }
private string buildMusicUsages(MusicContract musicContract) { var myString = ""; var index = 0; foreach (var m in musicContract.Usages) { myString += m; if (index != musicContract.Usages.Count) { myString += ", "; } index++; } return(myString); }
public void Setup() { _repositoryMock = new Mock <IRepository>(); _musicContract1 = new MusicContract { Artist = "Artist 1", Title = "Title 1", Usages = EContractUsage.DigitalDownload, StartDate = new DateTime(2012, 6, 1), EndDate = new DateTime(2012, 7, 1) }; _musicContract2 = new MusicContract { Artist = "Artist 2", Title = "Title 2", Usages = EContractUsage.DigitalDownload, StartDate = new DateTime(2012, 6, 1) }; _musicContract3 = new MusicContract { Artist = "Artist 3", Title = "Title 3", Usages = EContractUsage.Streaming, StartDate = new DateTime(2013, 6, 1) }; _repositoryMock.Setup(m => m.GetMusicContracts()).Returns(new[] { _musicContract1, _musicContract2, _musicContract3 }); _repositoryMock.Setup(m => m.GetDistributionContracts()).Returns(new[] { new DistributionContract { Partner = "Partener1", Usage = EContractUsage.Streaming }, new DistributionContract { Partner = "Partener2", Usage = EContractUsage.DigitalDownload } }); _handler = new ListCommandHandler(_repositoryMock.Object); _command = new QueryCommand(); }
public void TestCanGetSetProperties() { var now = DateTime.Now; var musicContract = new MusicContract() { Artist = "Foo Fighters", Title = "Echoes, Silence, Patience and Grace", StartDate = now, EndDate = now.AddYears(1), Usages = new string[] { "Download", "Streaming", "Vinyl" } }; Assert.AreEqual(musicContract.Artist, "Foo Fighters"); Assert.AreEqual(musicContract.Title, "Echoes, Silence, Patience and Grace"); Assert.IsTrue(musicContract.StartDate.HasValue); Assert.IsTrue(musicContract.EndDate.HasValue); Assert.AreEqual(musicContract.Usages.Length, 3); Assert.AreEqual(musicContract.Usages[1], "Streaming"); }
public void TestToStringMethod() { var now = new DateTime(2012, 2, 1); var nextYear = new DateTime(2013, 2, 1); var musicContract = new MusicContract() { Artist = "The Bangles", Title = "Walk like an Egyptian", StartDate = now, EndDate = nextYear, Usages = new string[] { "Download", "Streaming", "Vinyl" } }; var musicContractNoEndDate = new MusicContract() { Artist = "The Eagles", Title = "Hotel California", StartDate = now, EndDate = null, Usages = new string[] { "Download", "Streaming", "Vinyl" } }; Assert.AreEqual(musicContract.ToString(), "The Bangles|Walk like an Egyptian|Download,Streaming,Vinyl|1 Feb 2012|1 Feb 2013"); Assert.AreEqual(musicContractNoEndDate.ToString(), "The Eagles|Hotel California|Download,Streaming,Vinyl|1 Feb 2012|"); }
private bool IsWithinTimeFrame(MusicContract contract, Options options) { return(options.DownloadDate.ParseGrmExact() > contract.StartDate.ParseGrmExact() && (contract.EndDate.ParseGrmExact() == DateTime.MinValue || options.DownloadDate.ParseGrmExact() < contract.EndDate.ParseGrmExact())); }